#SysAdmin – #DNS con Delegación de Zona

Bueno Actualizando mi manual de DNS con Delegación de Zona aca les dejo el mio recien acabado de instalar para que se guíen por el

Bueno antes de seguir para que tenga la idea e entiendan los IP que hay y cual es mi zona

Mi Zona es 200.0.0.0/29, donde mi DNS esta delegado al ip 200.0.0.3, debemos recordar que el hostname debe ser el que cuando Etecsa le hizo la delegacion de zona tienen que mantenerlo pues puede dar problema en este caso yo selecione el hostname mail.dominio.cu. Es decir en Etecsa deben tener mas o menos esta configuracion

dominio.cu.      IN     NS       mail.dominio.cu.
mail.dominio.cu. IN     A        200.0.0.3

Bueno dejemos ya el bla bla bla e Instalemos.

Instalacion del DNS con delegacion de zona /29

Creamos el Usuario NSD

useradd -r nsd

Instalamos el NSD

apt-get install nsd ldnsutils haveged

Creamos los SSL Key y Certificados para mejorar la seguridad de la comunicacion

nsd-control-setup

Creamos la key de seguridad para transfert a DNS secundario

dd if=/dev/random of=/dev/stdout count=1 bs=32 | base64

Note: Aca anotamos la ultima linea que es la que nos interesa

Creamos las carpetas donde se guardaran las zonas y las Basedatos

cd /etc/nsd
mkdir zones db

Configuracion del DNS

nano /etc/nsd/nsd.conf
server:
        do-ip4: yes
        do-ip6: no
        port: 53
        ip-address: 200.0.0.3
        debug-mode: no
        verbosity: 0
        hide-version: yes
        username: nsd
        zonesdir: "/etc/nsd/zones"
        logfile: "/var/log/nsd.log"
        pidfile: "/run/nsd/nsd.pid"
        database: "/etc/nsd/db/nsd.db"
        difffile: "/etc/nsd/db/ixfr.db"
        xfrdfile: "/etc/nsd/db/xfrd.state"
        tcp-count: 100
        tcp-timeout: 120
        tcp-query-count: 0
        ipv4-edns-size: 4096
        statistics: 3600
        xfrd-reload-timeout: 1
        zonefiles-check: yes
        
remote-control:
    control-enable: yes
    control-interface: 127.0.0.1
    control-port: 8952
    server-key-file: "/etc/nsd/nsd_server.key"
    server-cert-file: "/etc/nsd/nsd_server.pem"
    control-key-file: "/etc/nsd/nsd_control.key"
    control-cert-file: "/etc/nsd/nsd_control.pem"

key:
        name: "dominiokey"
        algorithm: hmac-sha256
        secret: "7JesUsZvTRARESFizPuSwK8M8xgMSNS245F866jpAkc="

zone:
        name: "dominio.cu"
        zonefile: "dominio.cu.zone.signed"
        provide-xfr: 200.0.0.0/29 NOKEY

zone:
        name: "0.0.200.in-addr.arpa"
        zonefile: "dominio.cu.reverse1.zone"
        provide-xfr: 200.0.0.0/29 NOKEY

zone:
        name: "0/29.0.0.220.in-addr.arpa"
        zonefile: "dominio.cu.reverse2.zone"
        provide-xfr: 200.0.0.0/29 NOKEY
nano /etc/nsd/zones/dominio.cu.zone
$ORIGIN dominio.cu.
$TTL 1d
@       IN      SOA     mail.dominio.cu.      sysadmin.dominio.cu. (
                        2016090801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        1800                    ; ttl
                        )
; Name servers
                    IN      NS      ns1.dominio.cu.

; MX servers
                    IN      MX      10 mail.dominio.cu.

; SPF records
                    IN      SPF      "v=spf1 mx -all"

; SRV records
_jabber._tcp.dominio.cu.         IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-server._tcp.dominio.cu.    IN      SRV     5       0       5269    jabber.dominio.cu.
_conferencia._tcp.dominio.cu.    IN      SRV     5       0       5269    jabber.dominio.cu.
_xmpp-client._tcp.dominio.cu.    IN      SRV     5       0       5269    jabber.dominio.cu.

; TXT records
                    IN      TXT      "v=spf1 mx -all"
                    IN      TXT      "Empresa Periquito el Cojo"
                    IN      TXT      "E-Mail: sysadmin at dominio.cu"
                    IN      TXT      "Contacto: +53-(7)-etecsa"

; DKIM records
_domainkey.dominio.cu.           IN      TXT      "o=~; r=sysadmin@dominio.cu"
_adsp._domainkey.dominio.cu.     IN      TXT      "dkim=unknown"
mail._domainkey.dominio.cu.      IN      TXT      "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9CVAyNCgcU0oFONDFXz5vzcIfKqSwVwPBu653sn5b+71ddPVu/kONJuzOBqigGWhey0qZbt+5THJtKqdTnQ9dOUfhBrAkU3zjaXr210gusWKIQf6Y91iuskMo59XYvlaA98gD8S+gpvYHjAAHSJa93hf+/RK8Rh6WnjmwkriRKwIDAQAB"
dkim._domainkey.dominio.cu.      IN      TXT      "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9CVAyNCgcU0oFONDFXz5vzcIfKqSwVwPBu653sn5b+71ddPVu/kONJuzOBqigGWhey0qZbt+5THJtKqdTnQ9dOUfhBrAkU3zjaXr210gusWKIQf6Y91iuskMo59XYvlaA98gD8S+gpvYHjAAHSJa93hf+/RK8Rh6WnjmwkriRKwIDAQAB"

; DMARC records
_dmarc.dominio.cu.  IN       TXT "v=DMARC1; p=none; rua=mailto: sysadmin@dominio.cu; ruf=mailto: sysadmin@dominio.cu; adkim=r; aspf=r"

; CNAME records
ns                  IN      CNAME    mail
ns1                 IN      CNAME    mail
webmail             IN      CNAME    mail

; A records
router              IN      A       200.0.0.1
mail                IN      A       200.0.0.3
jabber              IN      A       200.0.0.3
; Additional A records
@                   IN      A       200.0.0.3
www                 IN      A       200.0.0.3
nano /etc/nsd/zones/dominio.cu.reverse1.zone
$ORIGIN 0.0.200.in-addr.arpa.
$TTL 1800
@       IN      SOA     mail.dominio.cu.      syadmin.dominio.cu. (
                        2016090801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        1800                    ; ttl
                        )
; Name servers
                        IN      NS      mail.dominio.cu.

; CNAME records
1                       IN      CNAME     1.0/29.0.0.200.in-addr.arpa.
3                       IN      CNAME     3.0/29.0.0.200.in-addr.arpa.
nano /etc/nsd/zones/dominio.cu.reverse2.zone
$ORIGIN 0/29.0.0.200.in-addr.arpa.
$TTL 1800
@       IN      SOA     mail.dominio.cu.      syadmin.dominio.cu. (
                        2016090801        ; serial number
                        3600                    ; refresh
                        900                     ; retry
                        1209600                 ; expire
                        1800                    ; ttl
                        )
; Name servers
                        IN      NS      mail.dominio.cu.

; PTR records
1                       IN      PTR     router.dominio.cu.
3                       IN      PTR     mail.dominio.cu.

Encriptando nuestro DNS

Para hacerlo usaremos DNSSEC, que no es mas que el encryptamiento de nuestro DNS con una Public Key.

cd /etc/nsd/zones
export ZSK=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 dominio.cu`
export KSK=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 dominio.cu`
ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) dominio.cu.zone $ZSK $KSK
ldns-key2ds -n -1 dominio.cu.zone.signed && ldns-key2ds -n -2 dominio.cu.zone.signed

Revisamos la configuracion del nsd

nsd-control reconfig
nsd-control reload dominio.cu
service nsd restart

Comprobacion del Servicio

Como lo dice esto es para comprobar que lo que hicimos lo hicimos bien y no un dedaso…

dig dominio.cu. @200.0.0.3 DNSKEY +multiline +norec
dig dominio.cu. @200.0.0.3 ANY +norec +short
host -t any dominio.cu 200.0.0.3
nslookup -q=any dominio.cu 200.0.0.3
nslookup 200.0.0.3 200.0.0.3

Actualizar Zone Records

En caso que necesites actualizar su DNS para agregar algo o cambiar algo recuerden cambiar el SOA:

The SOA serial is in the following format.

YYYYMMDDnn

Ejemplo:
2016090801

creamos este script para actualizar nuestra zona encryptada de esta forma

nano /usr/local/bin/nsdact

#!/bin/bash
PDIR=`pwd`
ZONEDIR="/etc/nsd/zones" #location of your zone files
DOMAIN=$1
cd $ZONEDIR
KSK=$(basename $(grep -r "`grep '(ksk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
ZSK=$(basename $(grep -r "`grep '(zsk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
/usr/bin/ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) -f $ZONEDIR/$DOMAIN.zone.signed $DOMAIN.zone $ZSK $KSK
/usr/sbin/nsd-control reload $DOMAIN
/usr/sbin/nsd-control notify $DOMAIN
cd $PDIR

chmod +x /usr/local/bin/nsdact

nsdact dominio.cu
Y ya de esta forma actualizamos nuestra delegacion de Zona.
Fuente: Digital Ocean | https://www.digitalocean.com/community/tutorials/how-to-set-up-dnssec-on-an-nsd-nameserver-on-ubuntu-14-04

¿De cuánta utilidad te ha parecido este contenido?

Armando Felipe Fuentes Denis

Director de Infraestructura en Guajiritos S.R.L.

Compartir
Publicado por
Armando Felipe Fuentes Denis

Entradas recientes

Alta disponibilidad de sus base de datos con Percona XtraDB Cluster en Kubernetes

Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…

8 meses hace

Home automation (Parte 3) – ESPHome

Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…

1 año hace

Home automation (Parte 2) – Home Assistant

Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…

1 año hace

Home automation (Parte 1)

Desde hace varios meses vengo con la idea de automatizar la casa donde vivo. Poco…

1 año hace

Cocinando una imagen personalizada de OpenWRT

El artículo describe el uso para un caso particular de OpenWRT y la creación de…

1 año hace