Salta el contingut

PR0101 — Servidor DNS Autoritatiu, Recursiu i Segur amb BIND9

Informació de la pràctica

Camp Valor
Codi PR0101
Mòdul M0375 — Serveis de Xarxa i Internet
RA RA1 — Serveis de Resolució de Noms (DNS)
Durada estimada 4-5 hores
Modalitat Individual
Lliurament Fitxers de configuració + PDF (documentació) a Moodle
Qualificació 10 punts (rúbrica adjunta)

Objectius

  • Instal·lar i configurar BIND9 en dues màquines virtuals Ubuntu Server 24.04 (master i slave).
  • Configurar el servei en els tres modes principals: cache/recursiu, forwarder i autoritatiu.
  • Crear una zona directa i una zona inversa per a un domini personalitzat.
  • Configurar una transferència de zona (AXFR) entre el master i el slave, protegida amb TSIG.
  • Aplicar mesures bàsiques de hardenització (restricció de recursió, consultes i transferències).
  • Documentar tot el procés amb captures de pantalla i respondre qüestions de comprensió.

Requisits previs

  • 2 màquines virtuals Ubuntu Server 24.04 LTS en la mateixa xarxa privada (p. ex. VirtualBox/VMware amb adaptador en mode NAT Network o Host-only): dns-master i dns-slave.
  • Accés per SSH a ambdues màquines.
  • Haver llegit BIND9 a Linux (modes recursiu, forwarder, autoritatiu, transferència de zona).

Assignació del Rang IP (obligatori)

Cada alumne ha de treballar amb un rang IP propi i diferent de la resta de la classe, per evitar col·lisions al laboratori i per fer detectables les còpies.

  • El professor/a us assignarà un número de llista N (1-30).
  • Calculeu el vostre tercer octet: XX = 50 + N.
  • Exemple: si sou l'alumne número 3, XX = 53, i la vostra xarxa és 192.168.53.0/24.
  • Exemple: si sou l'alumne número 27, XX = 77, i la vostra xarxa és 192.168.77.0/24.
  • La vostra xarxa de treball serà 192.168.XX.0/24, amb:
  • dns-master192.168.XX.10
  • dns-slave192.168.XX.11
  • www192.168.XX.20
  • mail192.168.XX.21
  • La vostra zona inversa serà XX.168.192.in-addr.arpa.

Personalització obligatòria

Substituïu XX pel valor numèric que us correspongui (50 + N) i NOMCOGNOM pel vostre nom i cognom (en minúscules, sense espais ni accents, p. ex. jgarcia) a totes les adreces IP, dominis, comentaris de configuració i noms d'amfitrió d'aquesta pràctica. Les captures amb el rang d'exemple (192.168.XX.0/24 literal, o el rang d'un altre company) no es consideraran vàlides.


Part 1: Instal·lació de BIND9 (30 minuts)

A totes dues màquines (dns-master i dns-slave):

sudo apt update
sudo apt install -y bind9 bind9utils bind9-doc dnsutils

# Verifiqueu que el servei s'ha iniciat
sudo systemctl status bind9
sudo netstat -putan | grep :53

Configureu el nom d'amfitrió de cada màquina:

# A dns-master
sudo hostnamectl set-hostname dns-master-NOMCOGNOM

# A dns-slave
sudo hostnamectl set-hostname dns-slave-NOMCOGNOM

Documenteu: captura de systemctl status bind9 amb el servei active (running) a les dues màquines.


Part 2: Mode Cache/Recursiu i Forwarder (45 minuts)

Al master, editeu /etc/bind/named.conf.options:

options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { 192.168.XX.0/24; };
    allow-query { 192.168.XX.0/24; };

    forwarders {
        8.8.8.8;
        1.1.1.1;
    };
    forward first;

    dnssec-validation auto;
    listen-on { any; };
    listen-on-v6 { none; };
};

Reinicieu el servei:

sudo named-checkconf
sudo systemctl restart bind9

Des d'una tercera màquina client (o des del mateix slave), verifiqueu la resolució recursiva:

dig @192.168.XX.10 www.google.com

Documenteu: captura de dig amb resposta ANSWER SECTION i secció Query time, comparant la primera consulta (sense cache) amb una segona consulta (amb cache).


Part 3: Zona Autoritativa Directa i Inversa (1 hora)

Al master, afegiu la zona a /etc/bind/named.conf.local:

zone "NOMCOGNOM.local" {
    type master;
    file "/etc/bind/zones/db.NOMCOGNOM.local";
    allow-transfer { 192.168.XX.11; };
    also-notify { 192.168.XX.11; };
};

zone "XX.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.168.XX";
    allow-transfer { 192.168.XX.11; };
};

Creeu el directori de zones i el fitxer /etc/bind/zones/db.NOMCOGNOM.local:

sudo mkdir -p /etc/bind/zones
$TTL    604800
@       IN      SOA     ns1.NOMCOGNOM.local. admin.NOMCOGNOM.local. (
                        2026070601 ; Serial (any-mes-dia-seq)
                        3600       ; Refresh
                        1800       ; Retry
                        604800     ; Expire
                        86400 )    ; Minimum TTL
;
@       IN      NS      ns1.NOMCOGNOM.local.
@       IN      NS      ns2.NOMCOGNOM.local.
@       IN      MX      10 mail.NOMCOGNOM.local.

ns1     IN      A       192.168.XX.10
ns2     IN      A       192.168.XX.11
www     IN      A       192.168.XX.20
mail    IN      A       192.168.XX.21
ftp     IN      CNAME   www

Creeu la zona inversa /etc/bind/zones/db.192.168.XX:

$TTL    604800
@       IN      SOA     ns1.NOMCOGNOM.local. admin.NOMCOGNOM.local. (
                        2026070601 ; Serial
                        3600 ; Refresh
                        1800 ; Retry
                        604800 ; Expire
                        86400 ) ; Minimum TTL
;
@       IN      NS      ns1.NOMCOGNOM.local.
10      IN      PTR     ns1.NOMCOGNOM.local.
11      IN      PTR     ns2.NOMCOGNOM.local.
20      IN      PTR     www.NOMCOGNOM.local.

Comproveu la sintaxi i reinicieu:

sudo named-checkzone NOMCOGNOM.local /etc/bind/zones/db.NOMCOGNOM.local
sudo named-checkzone XX.168.192.in-addr.arpa /etc/bind/zones/db.192.168.XX
sudo systemctl restart bind9

dig @192.168.XX.10 www.NOMCOGNOM.local
dig @192.168.XX.10 -x 192.168.XX.20

Documenteu: captura de dig mostrant resolució directa (A) i inversa (PTR) correctes, amb el flag aa (Authoritative Answer) present.


Part 4: Transferència de Zona Segura amb TSIG (1 hora)

Al master, genereu una clau TSIG per protegir l'AXFR:

tsig-keygen -a hmac-sha256 transfer-key | sudo tee /etc/bind/tsig.key

Incloeu la clau a /etc/bind/named.conf.options d'ambdues màquines (include o enganxada directament):

include "/etc/bind/tsig.key";

Copieu /etc/bind/tsig.key del master al slave (per exemple amb scp) i actualitzeu la zona del master perquè només accepti transferències autenticades:

zone "NOMCOGNOM.local" {
    type master;
    file "/etc/bind/zones/db.NOMCOGNOM.local";
    allow-transfer { key transfer-key; };
    also-notify { 192.168.XX.11 key transfer-key; };
};

Al slave, configureu /etc/bind/named.conf.local perquè actuï com a secundari:

zone "NOMCOGNOM.local" {
    type slave;
    masters { 192.168.XX.10 key transfer-key; };
    file "/var/cache/bind/db.NOMCOGNOM.local";
};

Reinicieu ambdós serveis i forceu la transferència:

# Al master
sudo systemctl restart bind9

# Al slave
sudo systemctl restart bind9
sudo rndc retransfer NOMCOGNOM.local

dig @192.168.XX.11 www.NOMCOGNOM.local

Comproveu que sense la clau TSIG la transferència és rebutjada (proveu-ho des d'una tercera màquina sense la clau):

dig @192.168.XX.10 NOMCOGNOM.local AXFR

Documenteu: captura de la transferència reeixida al slave (amb clau) i de l'intent rebutjat sense clau (; Transfer failed o similar).


Part 5: Hardenització Bàsica (45 minuts)

Al master, apliqueu mesures addicionals a /etc/bind/named.conf.options:

version "No disponible";
allow-query-cache { 192.168.XX.0/24; };

logging {
    channel query_log {
        file "/var/log/bind/query.log" versions 3 size 10m;
        severity info;
        print-time yes;
    };
    category queries { query_log; };
};

rate-limit {
    responses-per-second 15;
    window 5;
};

Creeu el directori de logs amb els permisos correctes:

sudo mkdir -p /var/log/bind
sudo chown bind:bind /var/log/bind
sudo systemctl restart bind9

Verifiqueu que la versió ja no es filtra:

dig @192.168.XX.10 version.bind txt chaos

Documenteu: captura abans/després d'ocultar la versió i del fitxer de log amb consultes reals registrades.


Qüestions

Responeu al document de lliurament:

  1. Quina diferència hi ha entre un servidor DNS recursiu, un forwarder i un autoritatiu? Poden coexistir al mateix procés named?
  2. Per què cal restringir allow-recursion i allow-query en un servidor autoritatiu públic (risc de DNS amplification)?
  3. Quin problema de seguretat resol TSIG en una transferència de zona i com funciona a nivell criptogràfic (resum)?
  4. Quina informació sensible es podria filtrar si no s'oculta la version del servidor?

Lliurament

  1. Fitxers de configuració de les dues màquines: named.conf.options, named.conf.local i les zones (db.NOMCOGNOM.local, db.192.168.XX) de master i slave.
  2. Documentació PDF amb:
  3. El vostre número de llista N i el rang 192.168.XX.0/24 calculat
  4. Captures de cada part (1 a 5)
  5. Respostes a les 4 qüestions
  6. Taula resum de la configuració aplicada
  7. README.md amb un resum dels passos d'instal·lació i configuració seguits.

Criteris d'Avaluació

Consulteu la rúbrica detallada per a la puntuació completa (10 punts, 5 blocs + penalitzacions).


Recursos Addicionals

  • BIND9 a Linux — configuració de referència d'aquesta pràctica.
  • BIND 9 Administrator Reference Manual: https://bind9.readthedocs.io/
  • RFC 1035 — Domain Names: https://www.rfc-editor.org/rfc/rfc1035
  • RFC 2845 — Secret Key Transaction Authentication (TSIG): https://www.rfc-editor.org/rfc/rfc2845

Data de creació: Juliol 2026 Autor: Curs M0375 - Serveis de Xarxa i Internet