Salta el contingut

Seguretat DNS

Principals Amenaces

Segons una enquesta d'IDC de 2021, el 87% de les organitzacions han patit atacs DNS, amb un cost mitjà d'aproximadament 950.000 dòlars per atac.

DNS Cache Poisoning (Enverinament de Cache):

Aquest atac intenta corrompre la cache DNS per redirigir els usuaris a llocs maliciosos. L'atacant injecta respostes DNS falses abans que arribi la resposta legítima.

DNS Amplification/DDoS:

L'atacant envia peticions DNS amb l'adreça IP de la víctima falsificada com a origen, causant que les respostes (molt més grans) es dirigeixin a la víctima.

DNS Tunneling:

Tècnica que codifica dades en consultes i respostes DNS per exfiltrar informació o establir canals de comandament i control evitant els firewalls.

DNS Hijacking:

L'atacant modifica els servidors DNS o el registrador de domini per desviar el trànsit.

DNSSEC (DNS Security Extensions)

DNSSEC afegeix signatures digitals als registres DNS per garantir-ne l'autenticitat i integritat.

Configuració de DNSSEC en BIND9:

# Generar claus per a la zona
cd /etc/bind/keys/
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE empresa.local
dnssec-keygen -a RSASHA256 -b 4096 -n ZONE -f KSK empresa.local

# Signar la zona
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \
    -N INCREMENT -o empresa.local -t \
    /etc/bind/zones/db.empresa.local

# Configurar BIND per usar la zona signada
zone "empresa.local" {
    type master;
    file "/etc/bind/zones/db.empresa.local.signed";
    # ... resta de configuració
};

Les claus DNSSEC caduquen

Les signatures DNSSEC tenen una validesa limitada i les claus s'han de renovar periòdicament (key rollover). Si no es renoven a temps, les signatures caduquen i tota la zona esdevé irresoluble per als resolvers que validen DNSSEC. Cal automatitzar aquest procés (per exemple amb inline-signing i auto-dnssec maintain a BIND9).

Millors Pràctiques de Seguretat

Les millors pràctiques inclouen implementar limitació de taxa (rate limiting) per controlar el volum de trànsit DNS.

1. Restringir Consultes Recursives:

# Només permetre recursió des de xarxes de confiança
options {
    recursion yes;
    allow-recursion { xarxa-interna; };
};

2. Implementar Rate Limiting:

# Limitar consultes per client
rate-limit {
    responses-per-second 10;
    window 5;
};

3. Amagar Versió de BIND:

options {
    version "DNS Server";
    hostname "NS";
    server-id none;
};

4. Desactivar Transferències de Zona No Autoritzades:

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

# O només a servidors específics
zone "empresa.local" {
    allow-transfer { 192.168.1.11; key transfer-key; };
};

5. Utilitzar TSIG per a Transferències Segures:

# Generar clau TSIG
dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST transfer-key

# Configurar la clau
key "transfer-key" {
    algorithm hmac-sha256;
    secret "base64-encoded-secret-key";
};

# Usar la clau per a transferències
server 192.168.1.11 {
    keys { transfer-key; };
};

Monitorització i Detecció d'Amenaces

És essencial registrar i monitoritzar les consultes DNS per detectar anomalies.

Configuració de logging detallat:

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

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

    category security { security_log; };
    category queries { query_log; };
    category query-errors { query_log; };
};

Eines per analitzar logs:

# Veure les consultes més freqüents
cat /var/log/bind/query.log | grep "query:" | \
    awk '{print $8}' | sort | uniq -c | sort -rn | head -20

# Detectar possibles atacs DDoS
tail -f /var/log/bind/query.log | \
    grep -E "denied|REFUSED|SERVFAIL"

# Analitzar patrons sospitosos
grep -E "ANY|AXFR" /var/log/bind/query.log