sábado, 6 de abril de 2013

SERVER DNS - CentOS

Para instalar el servidor de DNS, escribimos la siguiente orden.
#yum -y install bind bind-chroot bind-utils



Ejecutamos lo siguiente:

#rndc-confgen -a -r /dev/urandom -b 512 -c /etc/rndc.key
Cambiamos las pertenencias para que este archivo sea propiedad del usuario y grupo named:
#chown named:named /etc/rndc.key
Aseguramos que los permisos de acceso sean lectura y escritura para usuario, sólo lectura para grupo y nada para otros, es decir un permiso 640 (rw-r-----):
#chmod 640 /etc/rndc.key



Cambiamos hacia el directorio /var/named:
#cd /var/named
Y creamos un script (script1.sh) dentro del directorio con las siguientes líneas:
for f in named.* data dynamic slaves
do
mv $f ./chroot/var/named/
ln -s /var/named/chroot/var/named/$f ./
done





Le pondremos permisos de ejecución al script y lo ejecutamos:
#chmod 650 /var/named/script1.sh
#./script1.sh





Cambiamos hacia el directorio /etc:
#cd /etc

Creamos otro script (script2.sh) dentro del directorio /etc con las siguientes líneas:
for f in named.* rndc.key
do
mv $f ./var/named/chroot/etc/
ln -s /var/named/chroot/etc/$f ./
done


Le pondremos permisos de ejecución al script y lo ejecutamos:
#chmod 650 /etc/script2.sh
#./script2.sh




Volvemos al directorio de root:
#cd /root

Ejecutamos la siguiente línea en la terminal:
#setsebool -P named_write_master_zones 1



Entramos al directorio /var/named/chroot/etc/
#cd /var/named/chroot/etc/

Le hacemos una copia al archivo  
#mv named.conf named.conf.original

Y nos descargarmos un named.conf desde la página de Joel Barrios:
#wget http://www.alcancelibre.org/linux/secrets/named.conf

Reseteamos los atributos extendidos del named.conf
#restorecon named.conf

Editamos el archivo /etc/named.conf:
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
forwarders {
8.8.8.8;

Dirección_IP_del _servidor;
};
forward first;
// Solo habilitar lo siguiente si se va a utilizar DNSSEC.
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
};

include "/etc/rndc.key";

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key"; };
};

view "local" {
match-clients {
127.0.0.0/8;
10.0.0.0/8;
172.16.0.0/16;
192.168.0.0/16;
};
recursion yes;
include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "named.ca";
};
zone "dns.lan" {
type master;
file "data/directa.db";
allow-update { none; };
};
zone "1.168.192.in-add" {
type master;
file "data/inversa.db";
allow-update { none; };
};
};


NOTA:Nos aseguramos que el archivo /etc/named.conf tenga los contextos correspondientes para SELinux a fin de evitar potenciales problemas de seguridad.
#chcon -u system_u -r object_r -t named_conf_t /var/named/chroot/etc/named.conf



Creamos las distintas zonas directas e inversas.
#nano /var/named/chroot/var/named/data/directa.db

$TTL 86400
@ IN SOA dns.lan. root.dns.lan. (
2012101501; número de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de consulta
604800 ; tiempo tras el cual expira la zona
86400 ; tiempo total de vida
)

@      IN NS    dns.lan.
@      IN MX    10 mail
@      IN A     192.168.1.67
server IN A     192.168.1.67
www    IN CNAME server
dns    IN A     192.168.1.67
mail   IN A     192.168.1.67
stiven IN A     192.168.1.68

Zona de resolución inversa red local
#nano /var/named/chroot/var/named/data/inversa.db

$TTL 86400
@ IN SOA dns.lan. root.dna.lan. (
2012101501; número de serie
28800 ; tiempo de refresco
7200 ; tiempo entre reintentos de consulta
604800 ; tiempo tras el cual expira la zona
86400 ; tiempo total de vida
)
@  IN NS  dns.dns.lan.
67 IN PTR server.dns.lan.
67 IN PTR mail.dns.lan.
67 IN PTR www.dns.lan.
68 IN PTR stiven.dns.lan.

Iniciamos el servicio named:
#service named start

Abrimos el puerto 53 TCP/UDP



Para comprobar que todo ha salido bien, escribimos la orden dig de la zona directa en el terminal:
#dig @127.0.0.1 server.dns.lan.

Y este es el resultado.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.3 <<>> @127.0.0.1 server.dns.lan.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57732
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;server.dns.lan. IN A

;; ANSWER SECTION:
server.dns.lanl. 86400 IN A 192.168.1.67

;; AUTHORITY SECTION:
dns.lan. 86400 IN NS dns.lan.

;; ADDITIONAL SECTION:
dns.lan. 86400 IN A 192.168.1.67

;; Query time: 89 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Oct 5 19:08:10 2012
;; MSG SIZE rcvd: 82


Si nos da como resultado la IP nuestra, es que ha resuelto bien el dominio.
Para hacer permanente el servicio DNS, escribimos en la terminal:
#chkconfig named on 

Si nos queremos poner como servidor de DNS a nosotros mismos, nos metemos en #nano /etc/resolv.conf y ponemos como nameserver nuestra IP
nameserver 127.0.0.1
nameserver 192.168.1.67

Y en #nano /var/named/chroot/etc/named.conf ponemos como forwarders la IP del servidor que pueda resolvernos en caso de que nuestro servidor no pueda.
forwarders {
192.168.1.67;
};


Reiniciamos los servicios named y network
#service named restart
#service network restart