Sécurisation du service DNS - CardinPatson/SysAdmin GitHub Wiki

Identification des risques

1. DNS Spoofing (Usurpation de dns)

L'attaque consite à se faire passer pour quelqu'un d'autre sur le réseau. Le pirate peut récupérer le numéro d'identification du dns en:

  1. Sniffant le réseau
  2. Prédisant le numéro (faille présente sur les OS et les serveurs DNS)

Une fois le numéro trouvé, le pirate peut répondre à la requête dns du client en falsifiant la réponse, avant l'arrivé de la réponse du serveur. Le client utilisera alors l'ip du pirate qu'il croira être celle du serveur primaire. On a donc un risque de vol de donnée et d'infection du système par malware

2. DNS cache poisonning (empoisonnement du cache dns)

Le pirate ici utilise une vulnérabilité du serveur DNS qui est de transmettre des informations sans contrôle à celui ci.Il fait alors accepter au serveur DNS des informations incorrectes qu'il va stocker dans son cache.

Lorsque le serveur dns repond à ses clients, il le fait avec des données incorrectes et redirige alors les clients vers la machine du pirate ou des faux site web pour un eventuel phishing. Avec un serveur DNS pollué, un attaquant redirige les clients vers bon lui semble.

3. Attaque par deni de service (DDoS)

L'attaquant rend le service de résolution de noms inopérant ou inaccessible en le saturant de requêtes afin de l’immobiliser. Il peut utiliser un réseau d'ordinateur infecté par des logiciels malveillants pour envoyer une grande quantité de trafic vers le serveur

Source

Contre-mesures contrant les risques identifiés

1. DNS cache poisonning (empoisonnement du cache dns)

La meilleur façon de contrer les attaque par empoisonnement du cache est:

  • La Mise à jour régulière du programme
  • La réduction des temps TTL (Time To Live) durée de validité d'une requête DNS mise en cache
  • La suppression régulière des caches DNS des machines locales et des systèmes réseau
  • La mise en place d'un DNSSEC pour signer les noms de domaine.

2. Attaque par deni de service (DDoS)

  • Autoriser uniquement les ordinateurs locaux à accéder a votre server DNS
  • Mettre en place un serveur secondaire dans le cas ou le primaire tombe
  • Mettre en place des mesures de sauvegarde afin de prévenir et de réduire les effets de l'attaque
  • Utilisation du protocole DNSSEC pour signer chaque requête DNS source

3. DNS Spoofing (Usurpation de dns)

L'utilisation d'un chiffrement est la meilleur façon de se protéger contre le DNS Spoofing:

  • Utilisation d'un chiffrement HTTPS sur votre navigateur pour protéger les connexions car l'hôte malveillant ne dispose pas d'un certificat de sécurité
  • Chiffre le trafic DNS (DNSCrypt , DNSover DNS over TLS(DoT)) qui offre une protection contre l'attaque de l'homme du milieu

NB : le serveur DNS doit également supporter la technologie de sécurité correspondante pour que le chiffrement du DNS fonctionne

  • Utilisation d'un résolveur DNS public

Identification des risques résiduels (non-couverts par des contre-mesures)

  • DNS Tunneling
  • Intrusion de code malveillant dans les entrées TXT du serveur DNS
  • Malware

Choix des contre-mesures et justification.

  1. Utilisation d'un chiffrement pour signer les connexion DNS (DNSSEC)

Mise en place

  • Installer rng-tools (Hardware Random Generator)
apt-get install rng-tools
  • Editer le fichier /etc/default/rng-tools et ajouter ces deux lignes :
HRNGDEVICE=/dev/urandom
RNGDOPTIONS="-W 80% -t 20"
  • Puis on lance le service :
/etc/init.d/rng-tools start
  • On peut maintenant générer les clés très rapidement, déplacez-vous avant dans le répertoire /etc/bind/keys/
  • Générer la clé KSK :
dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE m1-3.ephec-ti.be
  • Générer la clé ZSK :
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE m1-3.ephec-ti.be
  • Vérifier les permissions sur les clé privées .private (chmod 600) :
ls -la /etc/bind/keys

Importation des clés dans le fichier de zone

  • Assurer vous que les lignes suivantes se trouvent dans votre fichier de zone
$INCLUDE "/etc/bind/keys/m1-3.ephec-ti.be.zsk.key" ;
$INCLUDE "/etc/bind/keys/m1-3.ephec-ti.be.ksk.key" ;
  • Signer votre zone : Déplacer vous dans le dossier /etc/bind/keys
cd /etc/bind/keys
dnssec-signzone -e20221020030000 -t -g -k ./m1-3.ephec-ti.be.ksk.key -o m1-3.ephec-ti.be ../db.m1-3.ephec-ti.be ./m1-3.ephec-ti.be.zsk.key
  • Dans le fichier named.conf
nano /etc/bind/named.conf
  • Vérifier que les lignes suivantes se trouve dans l'objet options{}
dnssec-enable yes;
dnssec-validation yes;
  • Redémarrer le service bind
systemctl restart bind9.service

-Tester le dnssec

dig +short DNSKEY m1-3.ephec-ti.be
  1. Utilisation d'un résolveur public
  • Mise en place simple
  • Une vitesse élevée des réponses DNS
  • Un haut degré de protection des données et d’anonymat
  • Un blocage des domaines malveillants Source