Sécurisation du DNS Public - cyrilGrandjean/admin2 Wiki

Original URL: https://github.com/cyrilGrandjean/admin2/wiki/Sécurisation-du-DNS-Public

Risque

Interception des paquets:

DNS spoofing: ou empoisonnement du cache DNS est utilisé pour modifier les enregistrements et ainsi rediriger le trafic vers un autre site qui ressemble au site de base, mais avec un rôle frauduleux.

Cela permet de pouvoir par exemple récupérer les identifiants ainsi que d'autres informations sensibles.

Pour être mise en place il faut un "Man in the middle" qui est un type d'attaque qui permet d'intercepter les communications entre un utilisateur et le serveur DNS

Contre mesure

DNSSec: ce protocole est utilisé pour sécuriser le DNS en ajoutant un cryptage au niveau de l'authentification.

Mais DNSSEC ne protège pas pour l'énumération de zones il va même faire l'inverse car il va plutôt aider, NSEC qui est une ressource du DNSSEC permet de savoir si un enregistrement existe dans une zone DNS en les ressemblants.

Risque

Attaque par déni de service: exemple le DDoS qui est une attaque visant à créer une surcharge d'un dispositif du DNS et ainsi le rendre inaccessible.

Pour être mise en place:

Cette attaque ne permet pas à proprement dis de récupérer des informations mes permet de pouvoir empêcher l'accès à certain service ou au moins les inhibés.

Contre mesure

Redondance: En mettant en place de la redondance, cela permettra de faire en sorte que si le service venait à tomber, il pourrait être remplacé par celui faisant la redondance le temps de le réparer ou de stopper l'attaque.

Serveur tampon: ou "cleaning center", ce serveur tampon ferait en sorte de pouvoir filtrer le trafic et ne laisser entrer que ce qui est autorisé.

Architecture: Mettre en place une architecture, où les différents services ne seraient pas regroupé tous ensemble permettrait que si un service se fait attaquer les autres n'en soufreraient pas.

Risque

Transfert de Zone: Il faut empêcher qu'un autres serveur DNS puisse répondre aux requêtes et ainsi rediriger l'utilisateur vers un site qui serait frauduleux.

Contre mesure

Mettre « allow-transfer { none;}; » dans le fichier named.conf.options

Contre mesure mise en place

Tout d'abord nous avont empêché qu'un autre DNS puisse répondre aux requêtes, pour empêcher que l'utilisateur puisse être redirigé vers un site qui serait frauduleux.

Ensuite nous avons implémenté le DNSsec pour pouvoir authentifier une zone DNS et garantir son authenticité grâce à un système de clé.

Installation DNSsec

Dans le fichier /DNS/bind/named.conf.options ajouter les commandes ci-dessous pour activer le DNSSEC

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

ensuite il faut se rendre dans le fichier bind

cd /etc/bind/

On va ensuite devoir créer une paire de clé de signature de zone ZSK

dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE "nom de domaine"

Créer une paire de clé de signature de clé (KSK)

dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE "nom de domaine"

Ensuite renomer les clés pour avoir plus facile(pas obligatoire)

mv K"nom de domaine"...+0..key K"nom de domaine".zsk.key
mv K"nom de domaine"...+0..private K"nom de domaine".zsk.private
mv K"nom de domaine"...+0..key K"nom de domaine".ksk.key
mv K"nom de domaine"...+0..private K"nom de domaine".ksk.private

Dans le fichier de zone ajouté

$INCLUDE K"nom de domaine".zsk.key
$INCLUDE K"nom de domaine".ksk.key

Ensuite il faut signer le fichier pour l'utiliser

dnssec-signzone -t -g -A -3 $(head -c 1000 /dev/urandom | sha1sum | cut -b 1-16) -N INCREMENT -k K"nom de domaine".ksk.key -o "nom de domaine" -t "fichier de zone" K"nom de domaine".zsk.key

Dans le fichier /DNS/bind/named.conf.external Modifier ligne file pour pointer vers le fichier signé (extension .signed)

Ensuite il faut faire un reload

service bind9 reload 

Pour savoir si le DNSsec est bien actif

dig DNSKEY "nom de domaine complet" @localhost +multiline

Cette commande doit renvoyer un résultat dig classique avec les keys affichées complètement

Dernière il faut activer le dnssec dans le name serveur parent il faut donc donnée une entrée DS