bind para el correo (parte iii de iii)

26 de mayo de 2009

Por último vamos a securizar un poco nuestros dos servidores. Cuando un DNS quiere descargar la zona de otro servidor DNS, este realiza peticiones AXFR. Es decir si no tenemos correctamente configurado nuestro servidor de DNS es posible que alguien pueda descargarse nuestra base de datos de zona.

Aquí tenéis un ejemplo de un servidor DNS mal configurado que responde a las peticiones AXFR (actualmente el bug lo tienen arreglado):

amperis@akoya:~$ dig @ns2.microXXXX.net microXXXX.net axfr

; <<>> DiG 9.5.1-P2 <<>> @ns2.microXXXX.net microXXXX.net axfr
; (1 server found)
;; global options:  printcmd
microXXXX.net.          86400   IN      SOA     ns1.microXXXX.net. sysop.microXXXX.net.
2009051302 86400 7200 2419200 86400
microXXXX.net.          86400   IN      NS      ns1.microXXXX.net.
microXXXX.net.          86400   IN      NS      ns2.microXXXX.net.
microXXXX.net.          86400   IN      A       62.97.115.117
microXXXX.net.          3600    IN      MX      5 tauri.microXXXX.net.
microXXXX.net.          3600    IN      MX      10 dsl1.microXXXX.net.
microXXXX.net.          3600    IN      MX      20 mx.microXXXX.net.
abydos.microXXXX.net.   86400   IN      A       213.27.212.92
actuava.microXXXX.net.  86400   IN      CNAME   atlantis.microXXXX.net.
adminwww.microXXXX.net. 86400   IN      CNAME   asgar.microXXXX.net.
algerie.microXXXX.net.  86400   IN      CNAME   atlantis.microXXXX.net.
altas.microXXXX.net.    86400   IN      CNAME   asgar.microXXXX.net.
altes.microXXXX.net.    86400   IN      CNAME   asgar.microXXXX.net.
ambitogrupo.microXXXX.net. 86400 IN     CNAME   atlantis.microXXXX.net.
anubis.microXXXX.net.   86400   IN      CNAME   tauri.microXXXX.net.
arianconstruccion.microXXXX.net. 3600 IN CNAME  asgar.microXXXX.net.
asgar.microXXXX.net.    86400   IN      A       62.97.115.112
asuran.microXXXX.net.   86400   IN      A       213.27.212.32
atlantis.microXXXX.net. 86400   IN      A       213.27.212.72
baal.microXXXX.net.     86400   IN      A       62.97.115.62
... (la zona es mucho más larga)

Nota: el dominio real ha sido alterado por seguridad.

Si realizamos la misma consulta a nuestros servidores DNS obtenemos:

[root@dns2 var]# dig @192.168.1.8 amperisblog.com axfr

; <<>> DiG 9.3.4-P1 <<>> @192.168.1.8 amperisblog.com axfr
; (1 server found)
;; global options:  printcmd
amperisblog.com.        86400   IN      SOA     dns1.amperisblog.com. 
admindns.amperisblog.com. 20090522 21600 3600 604800 86400
amperisblog.com.        86400   IN      NS      dns1.amperisblog.com.
amperisblog.com.        86400   IN      NS      dns2.amperisblog.com.
amperisblog.com.        86400   IN      MX      10 mail1.amperisblog.com.
amperisblog.com.        86400   IN      MX      20 mail2.amperisblog.com.
amperisblog.com.        86400   IN      A       222.222.222.223
dns1.amperisblog.com.amperisblog.com. 86400 IN A 222.222.222.221
dns2.amperisblog.com.amperisblog.com. 86400 IN A 222.222.222.222
ftp.amperisblog.com.amperisblog.com. 86400 IN CNAME 
server1.amperisblog.com.amperisblog.com.
mail1.amperisblog.com.amperisblog.com. 86400 IN CNAME 
server1.amperisblog.com.amperisblog.com.
mail2.amperisblog.com.amperisblog.com. 86400 IN CNAME 
server2.amperisblog.com.amperisblog.com.
server1.amperisblog.com.amperisblog.com. 86400 IN A 222.222.222.224
server2.amperisblog.com.amperisblog.com. 86400 IN A 222.222.222.223
www.amperisblog.com.amperisblog.com. 86400 IN CNAME 
server2.amperisblog.com.amperisblog.com.
amperisblog.com.        86400   IN      SOA     dns1.amperisblog.com. 
admindns.amperisblog.com. 20090522 21600 3600 604800 86400
;; Query time: 10 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Sat May 23 18:01:22 2009
;; XFR size: 15 records (messages 1)

El objetivo es evitar que la transferencia de zona pueda realizarse desde Internet. Solo debe realizarse entre los dos servidores de DNS de confianzza.

Para ello en el servidor de DNS primario añadimos al named.conf la siguiente config:

options {
   allow-transfer { none; };
   ...
};


zone "amperisblog.com" in {
   allow-transfer { 192.168.1.9; };
   ...
};

Al DNS principal le decimos que solo puede transferir la zona al DNS secundario (192.168.1.9).

Por otro lado, el DNS secundario no tiene que transferir ninguna zona a nadie. Pondremos la siguiente config en el secundario:
options {
   allow-transfer { none; };
   ...
};


Para entornos en producción donde podemos tener muchos servidores de DNS existe la posibilidad de utilizar firmas para garantizar la autenticidad de una transferencia de zona. Aquí teneis un ejemplo de la utilización de firmas en Bind 9.