Servidor de correo Debian 8 Jessie: Instalación de servicio DNS seguro.
Este es el segundo de una serie de artículos para la instalación completa de un servidor de correos con Debian Jessie 8.5. Instalación de servicio DNS seguro.
La instalación del servicio DNS tiene aplicación si se manejan los registros DNS internamente, para que estos registros sean visibles desde Internet se debe utilizar ip's publicas o NAT hacia direcciones publicas.
Instalamos el servicio Bind9
apt install bind9
La definición del servicio la podemos ver en el siguiente archivo:
cat /lib/systemd/system/bind9.service
Paramos el servicio.
systemctl stop bind9.service
Creamos el archivo de configuración chroot.
mkdir /etc/systemd/system/bind9.service.d
creamos el archivo /etc/systemd/system/bind9.service.d/chroot.conf y colocamos lo siguiente:
[Service]
ExecStart=
ExecStart=/usr/sbin/named -f -u bind -t /var/bind9/chroot
Con esto le indicamos a bind9 que el servicio correrá en la ruta /var/bind9/chroot
Creamos la estructura de directorios que utilizará el servicio.
mkdir -p /var/bind9/chroot/{etc,dev/log,var/lib/bind,var/cache/bind,var/run/named,var/log/bind,var/lib/bind}
Movemos el directorio /etc/bind hacia el directorio del chroot y creamos un enlace simbólico.
mv /etc/bind /var/bind9/chroot/etc
ln -s /var/bind9/chroot/etc/bind /etc/bind
Asignamos los permisos a los directorios
chmod 755 /var/bind9/chroot/etc/bind
chmod 644 /var/bind9/chroot/etc/bind/*
chmod 640 /var/bind9/chroot/etc/bind/rndc.key
chown root:bind /var/bind9/chroot/etc/bind/*
chown bind:bind /var/bind9/chroot/etc/bind/rndc.key
chmod 770 /var/bind9/chroot/var/{cache/bind,run/named,lib,lib/bind,log} -Rf
chown root:bind /var/bind9/chroot/var/{cache/bind,run/named,lib,lib/bind,log} -Rf
Creamos los dispositivos null y random utilizados por el servicio.
mknod -m 666 /var/bind9/chroot/dev/null c 1 3
mknod -m 666 /var/bind9/chroot/dev/random c 1 8
chmod 660 /var/bind9/chroot/dev/{null,random,log}
chgrp bind /var/bind9/chroot/dev/{null,random,log}
Podemos copiar el archivo localtime para definir la zona horaria.
cp /etc/localtime /var/bind9/chroot/etc/
Editamos
vim /etc/init.d/bind9
cambiar la siguiente linea
PIDFILE=/var/run/named/named.pid
de la siguiente manera
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
Ejecutamos la siguiente instrucción
echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
Cambiamos en el archivo /etc/bind/named.conf.options la siguiente linea
listen-on-v6 { any; };
De la siguiente manera, con esto deshabilitamos que bind9 escuche por direcciones ipv6
listen-on { any; };
Reiniciamos
systemctl daemon-reload
systemctl restart rsyslog; systemctl start bind9
Comprobamos la configuración
/usr/sbin/named-checkconf -t /var/bind9/chroot/ /etc/bind/named.conf
verificamos el estado de bind9
systemctl status bind9
Si todo esta bien podemos continuar con nuestra configuración, deberíamos ver algo parecido a lo siguiente:
root@server01:~# systemctl status bind9
● bind9.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/bind9.service; enabled)
Drop-In: /run/systemd/generator/bind9.service.d
└─50-insserv.conf-$named.conf
/etc/systemd/system/bind9.service.d
└─chroot.conf
Active: active (running) since mar 2016-09-06 17:36:37 CST; 4min 2s ago
Docs: man:named(8)
Main PID: 4071 (named)
CGroup: /system.slice/bind9.service
└─4071 /usr/sbin/named -f -u bind -t /var/bind9/chroot
sep 06 17:36:37 server01 named[4071]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
sep 06 17:36:37 server01 named[4071]: command channel listening on 127.0.0.1#953
sep 06 17:36:37 server01 named[4071]: command channel listening on ::1#953
sep 06 17:36:37 server01 named[4071]: managed-keys-zone: loaded serial 2
sep 06 17:36:37 server01 named[4071]: zone 0.in-addr.arpa/IN: loaded serial 1
sep 06 17:36:37 server01 named[4071]: zone 127.in-addr.arpa/IN: loaded serial 1
sep 06 17:36:37 server01 named[4071]: zone localhost/IN: loaded serial 2
sep 06 17:36:37 server01 named[4071]: zone 255.in-addr.arpa/IN: loaded serial 1
sep 06 17:36:37 server01 named[4071]: all zones loaded
sep 06 17:36:37 server01 named[4071]: running
Generar rndckey
rndc-confgen
Copie la llave en archivo /var/bind9/chroot/etc/bind/rndc.key
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "DTngw5O8I5Axx631GjQ9pA==";
};
y agregue las siguientes lineas al principio del archivo /var/bind9/chroot/etc/bind/named.conf
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
Colocamos los permisos para el archivo que contiene la llave
chmod 640 /var/bind9/chroot/etc/bind/rndc.key
chown root:bind /var/bind9/chroot/etc/bind/rndc.key
Reiniciamos
systemctl restart bind9
systemctl status bind9
Agregamos log personalizados a Bind9
Agregamos al principio del archivo /var/bind9/chroot/etc/bind/named.conf la siguiente linea:
include "/etc/bind/named.conf.log";
El archivo /etc/bind/named.conf.log deberá contener lo siguiente:
logging {
channel update_debug {
file "/var/log/bind/update_debug.log" versions 3 size 100k;
severity debug;
print-severity yes;
print-time yes;
};
channel security_info {
file "/var/log/bind/security_info.log" versions 1 size 100k;
severity info;
print-severity yes;
print-time yes;
};
channel bind_log {
file "/var/log/bind/bind.log" versions 3 size 1m;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { bind_log; };
category lame-servers { null; };
category update { update_debug; };
category update-security { update_debug; };
category security { security_info; };
};
Los permisos serán los siguientes:
chown bind /etc/bind/named.conf.log
chmod 644 /etc/bind/named.conf.log
Creamos un enlace simbólico hacia /var/log para que todos nuestros logs estén en la misma ubicación.
ln -s /var/bind9/chroot/var/log/bind /var/log
Reiniciamos el servicio
systemctl restart bind9
systemctl status bind9
Cambiamos las opciones en el archivo /var/bind9/chroot/etc/bind/named.conf.options de la siguiente manera
acl corpnets { 172.16.0.0/16;};
options {
directory "/var/cache/bind";
listen-on port 53 { 127.0.0.1;
allow-query { any; };
allow-recursion { corpnets; };
allow-query-cache { corpnets; };
query-source address * port *;
allow-transfer { none; };
version none;
dnssec-enable yes;
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
};
Finalmente creamos los archivos para la resolucion de nuestro dominio, editamos el archivo /var/bind9/chroot/etc/bind/named.conf.local y agregamos las zonas.
Note que la ruta en las configuraciones se hacen a partir de la raiz de chroot la cual es /var/bind9/chroot y por lo cual esta no se incluye en la referencia a los archivo de zona.
zone "dominio.com" {
type master;
file "/var/lib/bind/db.dominio.com";
allow-update { key rndc-key; };
};
zone "112.16.172.in-addr.arpa" {
type master;
file "/var/lib/bind/db.dominio.com.rr";
allow-update { key rndc-key; };
};
Creamos los archivos a los que hacemos referencia anteriormente /var/bind9/chroot/var/lib/bind/db.dominio.com, agregamos los siguiente:
;
; BIND data file for local loopback interface
;
$TTL 86400
@ IN SOA ns3.dominio.sv. hostmaster.server01.dominio.com. (
2016090701 ; Serial
21600 ; Refresh
3600 ; Retry
1814400 ; expire after 3 week
43200 ) ; Negative Cache TTL
;
IN NS ns1.dominio.com.
IN NS ns2.dominio.com.
IN MX 10 mail
@ IN A 172.16.112.148
ns1 IN A 172.16.112.148
ns2 IN A 172.16.112.147
ns3 IN A 172.16.112.147
mail IN A 172.16.112.148
www IN CNAME ns1.dominio.com.
smtp IN CNAME mail.dominio.com.
pop IN CNAME mail.dominio.com.
imap IN CNAME mail.dominio.com.
Creamos el archivo de resolucion inversa /var/bind9/chroot/var/lib/bind/db.dominio.com.rr con la siguiente informacion.
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns3. root.ns1. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns3.dominio.com.
145 IN PTR portal.dominio.com.
146 IN PTR mail.dominio.com.
147 IN PTR mail2.dominio.com.
148 IN PTR cloud.dominio.com.
Cambiamos los permisos a los archivos creados
chmod 660 /var/bind9/chroot/var/lib/bind/db.dominio.com*
chown bind /var/bind9/chroot/var/lib/bind/db.dominio.com*
Reiniciamos el servicio
systemctl restart bind9
systemctl status bind9
Probamos nuestra configuracion
dig @localhost dominio.com
dig @localhost dominio.com NS
dig @localhost dominio.com MX
Fuentes:
https://wiki.debian.org/Bind9
bind9 im chroot unter Debian 8 jessie und systemd
BIND9ServerHowto
Indice.
1. Servidor de correo Debian 8 Jessie: Instalacion del sistema operativo y asegurar las conexiones ssh por medio de llaves.
2. Servidor de correo Debian 8 Jessie: Instalación de servicio DNS seguro.
3. Servidor de correo Debian 8 Jessie: Instalación certificados generados por autoridad certificadora (CA) windows.
4. Servidor de correo Debian 8 Jessie: Instalación de Postfix, Dovecot y Roundcube con autenticacion AD
Servidor de correo GNU/Debian Jessie: Postfix, Bind9, Dovecot, Sasl, Apache, Roundcube con autenticacion LDAP
Comentarios