SlideShare a Scribd company logo
1 of 30
Linux LPIC2 noelmace.com
Noël Macé
Formateur et Consultant indépendant expert Unix et FOSS
http://www.noelmace.com
Sécurisation d'un serveur DNS
Domain Name Server
Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
Linux LPIC2 noelmace.com
Plan
• Introduction
• Remarque sur le hacking
• Types de requêtes
• Masquer le numéro de version
• ACL
• Limiter les requêtes
• Limiter les transfers de zone
• Limiter les privilèges de BIND
• Chroot
• Chroot : logging
• DNSSEC
 Introduction
 Signature des enregistrements
 DNSKEY et RRSIG
 Preuves de non-existance
 Chaine de confiance
• Mise en pratique
 Génération de clés avec
dnssec-keygen
 Limitation des transfers avec
DNSSEC
 Signature de zone
 Configuration du client
 Enregistrements DS
Linux LPIC2 noelmace.com
Introduction
• mettre à jour régulièrement
 garder un œil sur les nouvelles versions et les annonces de failles
de sécurité
 exemple : http://lists.debian.org/debian-security-announce/
• Limiter les informations disponibles
• Limiter l'accès et les transferts de zone
• Isoler/Limiter BIND
• Sécuriser les données (avec DNSSEC)
Linux LPIC2 noelmace.com
Remarque sur le hacking
• Ne pas confondre hacking et malveillance
 black / grey / white hats
• Le hacking n'est d'ailleurs pas uniquement lié aux questions de
sécurité, ni même d'informatique
• "aptitude technique et [...] plaisir pris à résoudre des problèmes et à
dépasser des limites arbitraires" - Eric Raymond,
Comment devenir un hacker ?
 voir aussi The Jargon File, du même auteur, et sa définition très complète
du terme hacker
Linux LPIC2 noelmace.com
Types de requêtes
• requêtes "classiques"
 demande d'une information spécifique
 contrôlée par l'instruction allow-query
• Transferts de zone
 envoi de toutes les informations d'une zone à un autre serveur
 conçues pour les serveurs "esclaves"
 contrôlées par l'instruction allow-transfer
autorisé par défaut pour tout les hôtes
Linux LPIC2 noelmace.com
Masquer le numéro de version
• hack
 peu permettre de cibler les attaques en fonction de failles connues
• solution : named.conf
$ dig @target chaos version.bind txt$ dig @target chaos version.bind txt
options {
...
version "hidden";
};
options {
...
version "hidden";
};
Linux LPIC2 noelmace.com
ACL
• Mettre en place un ACL
• utilisable par diverses instructions de contrôle d'accès
 allow-query, allow-transfer
acl "trusted" {
localhost;
192.168.1.0/24;
};
acl "trusted" {
localhost;
192.168.1.0/24;
};
Linux LPIC2 noelmace.com
Limiter les requêtes
• grâce aux instructions allow-query et allow-transfer
 utilisables dans les instructions zone et options
• celles des instructions zone surchargeant celles, globales, de
l'instruction options
• Exemple
acl "my_network" {
224.123.240.0/24;
};
zone "example.org" IN {
type master;
allow-queries { my_network; };
};
acl "my_network" {
224.123.240.0/24;
};
zone "example.org" IN {
type master;
allow-queries { my_network; };
};
Linux LPIC2 noelmace.com
Limiter les transfers de zone
• hacks
• DOIT être limité aux serveurs "esclaves" sur les serveurs maitre
 totalement interdit (none) sur les serveurs esclaves
• Exemple : named.conf d'un serveur maitre
$ dig axfr @serveurdns domaine$ dig axfr @serveurdns domaine
$ host -l domaine serveurdns$ host -l domaine serveurdns
acl "my_slave_servers" {
224.123.240.3; // cat.example.org
};
zone "example.org" IN {
type master;
allow-transfer { my_slave_servers; };
};
acl "my_slave_servers" {
224.123.240.3; // cat.example.org
};
zone "example.org" IN {
type master;
allow-transfer { my_slave_servers; };
};
ne pas oublier de faire de même pour les zones inverse
Linux LPIC2 noelmace.com
Limiter les privilèges de BIND
• se lance par défaut en tant que root sur certaines distributions
• éviter l'utilisateur/groupe nobody/nogroup
 trop grand nombre d'applications lancées via cet utilisateur
 risque de communication entre ces application → faille
• privilégier un utilisateur/groupe spécifique
 ex : named / named
 Exemple de init script sous Debian
vérifier que cet utilisateur ai l'accès au dossier de travail (instruction directory)
# named -u named -g named# named -u named -g named
start-stop-daemon ... --exec /usr/sbin/named -- -u named -g namedstart-stop-daemon ... --exec /usr/sbin/named -- -u named -g named
Linux LPIC2 noelmace.com
Chroot
• permet d'isoler l'execution d'un programme
 en changeant sa racine (ex : /var/cache/bind)
 option -t de named
• fichiers requis par BIND
 dossiers etc, dev, lib, sbin (ou usr/sbin) et var/run
 périphérique /dev/null
 les fichiers /etc/{passwd,group,shadow,ld.so.cache,localtime} contenant l'utilisateur/groupe named/named
 fichiers de configuration (dans /var/cache/bind/etc/bind/)
• atention à l'instruction directory, qui sera relative à la nouvelle racine
 toutes les librairies utilisées par BIND

 les programmes named, named-xfer et rndc

$ mknod -m 666 /var/cache/bind/dev/null c 1 3$ mknod -m 666 /var/cache/bind/dev/null c 1 3
$ ldd /usr/sbin/named$ ldd /usr/sbin/named
start-stop-daemon ... --exec /usr/sbin/named -- -t /var/cache/bindstart-stop-daemon ... --exec /usr/sbin/named -- -t /var/cache/bind
Linux LPIC2 noelmace.com
Chroot : logging
• la solution traditionnelle de logging présentée aux chapitres
précédents requière des fichiers externes au chroot
 nous devons donc faire appel à une autre solution
 voici un exemple
 le nouveau fichier de log sera donc /var/cache/bind/var/cache/bind/bind.log
logging {
channel some_log {
file "bind.log" versions 3;
severity info;
};
category default { some_log; };
// ...
};
logging {
channel some_log {
file "bind.log" versions 3;
severity info;
};
category default { some_log; };
// ...
};
Linux LPIC2 noelmace.com
DNSSEC : Plan
• Introduction
 Signature des enregistrements
 DNSKEY et RRSIG
 Preuves de non-existance
 Chaine de confiance
• Mise en pratique
 Génération de clés avec dnssec-keygen
 Limitation des transfers avec DNSSEC
 Signature de zone
 Configuration du client
 Enregistrements DS
Linux LPIC2 noelmace.com
Introduction
• Permet de sécuriser les réponses d'un serveur DNS
 par rapport à des informations existante
• Authentification des données contenues dans les réponses.
• Intégrité de ces données.
 ou par rapport à des informations non existantes
• Preuve de non existence.
• En signant les enregistrements DNS au sain d'une zone
• Permet d’établir une chaîne de confiance basée sur des clés publiques
 délégation de signatures
 un DNS de niveau supérieur pouvant annoncer que tel sous-domaine est signé
• Empêche le DNS poisoning
 intercepter des paquets dns et les modifier
Linux LPIC2 noelmace.com
Signature des enregistrements
Danger :
le DNS poisoning
Solution : la signature des enregistrements
Linux LPIC2 noelmace.com
DNSKEY et RRSIG
• DNSKEY : transmettre une clé publique entre le résolveur
(client) et le serveur de nom
 afin de vérifier la signature du serveur d'autorité
 vérifier l'intégrité et l'authenticité du message
• RRSIG : signature de l'enregistrement envoyé par le serveur
d'autorité
 pour chaque enregistrement
 signature du hash de l'enregistrement avec la clé privée du serveur
d'autorité
Linux LPIC2 noelmace.com
Preuves de non-existance
• pour des noms inexistants
 par défaut, le serveur répondra par une réponse vide
• il n'y a donc rien à signer
• NSEC (Next SECure) : preuve de non existance
 indique les noms n'existant pas !
 permet ainsi la création d'un RRSIG correspondant
 Exemple : il n'y a aucun nom entre beta et delta
 problème : à chaque nom existant est associé un NSEC
• permet donc du "zone walking" (énumération de zone)
• ie : récupérer l'ensemble des enregistrements existant sur la zone
beta.example.net. NSEC delta.example.net. A RRSIG NSECbeta.example.net. NSEC delta.example.net. A RRSIG NSEC
Linux LPIC2 noelmace.com
Preuves de non-existance
• NSEC3 : évite les attaques de type énumération de zone
 utilise les hashs des noms au lieu des noms eux même
 Exemple : il n'y a pas de hash valide entre 810c et c73a
• algo (1), salt (5A17), iterations (5)
• NSEC3PARAM : paramètres NSEC3
 ne sert qu'aux serveur d'autorité
 afin de calculer le hash des noms qu'il conserve
810c.example.net. NSEC 1 0 5 5A17 c73a A RRSIG810c.example.net. NSEC 1 0 5 5A17 c73a A RRSIG
Linux LPIC2 noelmace.com
Chaine de confiance
• être certain que la clé publique (DNSKEY) du résolveur
correspond bien à la bonne clé de la zone
• cf délégation de zone
 un serveur de confiance indique que l'un de ses serveurs enfants est
digne de confiance
• DS : identifier rapidement la clé publique de la zone fille
• directement lié à l'enregistrement DNSKEY d'une des zones filles
- envoyé par le serveur fils pour l'enregistrer dans le serveur père
• hash du nom du détenteur de la clé publique (zone fille)
Linux LPIC2 noelmace.com
Mise en pratique
• 2 types de clés :
 KSK (Key Signing Keys)
• utilisée uniquement pour signer les clés d'une zone (DNSKEY)
 ZSK (Zone Signing Keys)
• utilisée pour signer tout les RRsets d'une zone (RRSIG)
Linux LPIC2 noelmace.com
Génération de clés avec dnssec-keygen
• algo : algorithme cryptographique
 non sensible à la casse
 pour DNSSEC : RSAMD5, RSASHA1, DSA …
 pour TSIG/TKEY : DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1 …
• size : longueur de la clé (en bits)
 RSA : entre 512 et 2048
 DH : entre 128 et 4096
 DSA : entre 512 et 1024
 HMAC : entre 1 et 512
• nametype : type d'utilisation de la clé
 non sensible à la casse
 ZONE, USER ou OTHER
• flag : utilisé pour indiquer qu'une clé est une clé KSK
 ZSK sinon
• créé les fichiers Kname+algorithm+footprint.private and Kname+algorithm+footprint.key
$ dnssec-keygen -a algo -b size -n nametype [-f flag] nom$ dnssec-keygen -a algo -b size -n nametype [-f flag] nom
Linux LPIC2 noelmace.com
Limitation des transfers avec DNSSEC
• dans named.conf
 limiter les droits d'accès en lecture au seul utilisateur/groupe liés au
serveur BIND
• définir les serveurs pouvant se connecter grâce à cette clé
 à inscrire sur tout les serveurs
•
key key.example.com. {
algorithm "hmac-md5";
secret "5VBiSy...";
};
key key.example.com. {
algorithm "hmac-md5";
secret "5VBiSy...";
};
server ip_du_serveur_distant {
keys key.example.com.;
};
server ip_du_serveur_distant {
keys key.example.com.;
};
Linux LPIC2 noelmace.com
Limitation des transfers avec DNSSEC
• grâce à la clé déclarée précédemment
zone "example.com" {
type master;
file "example.com.zone";
allow-transfer { key key.example.com.; };
};
zone "example.com" {
type master;
file "example.com.zone";
allow-transfer { key key.example.com.; };
};
Linux LPIC2 noelmace.com
Signature de zone
1) Création des clés (dans /etc/bind/)
2) Inclusion des clés dans le fichier de zone
3) Signature de la zone
 créé le fichier de zone signée projet.signed
$ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
$include nom_du_fichier_KSK.key
$include nom_du_fichier_ZSK.key
$include nom_du_fichier_KSK.key
$include nom_du_fichier_ZSK.key
$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key
Linux LPIC2 noelmace.com
Signature de zone
4) modification de named.conf
5) modification de named.conf.options
6) relancer bind
zone “projet” {
type “master”;
file “/etc/bind/db.projet.signed”;
};
zone “projet” {
type “master”;
file “/etc/bind/db.projet.signed”;
};
dnssec-enable yes;dnssec-enable yes;
$ /etc/init.d/bind9 restart$ /etc/init.d/bind9 restart
Linux LPIC2 noelmace.com
Configuration du client
• récupérer la clé KSK
 de manière sécurisée (scp, sftp ...)
• l'ajouter au fichier /etc/trusted-key.key
• tester la configuration
tail -n 1 KSK.key >> /etc/trusted-key.keytail -n 1 KSK.key >> /etc/trusted-key.key
$ dig +dnssec +sigchase papa.projet$ dig +dnssec +sigchase papa.projet
Linux LPIC2 noelmace.com
Signature de zone
1) Création des clés (dans /etc/bind/)
2) Inclusion des clés dans le fichier de zone
3) Signature de la zone
 créé le fichier de zone signée projet.signed)
$ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet
$include nom_du_fichier_KSK.key
$include nom_du_fichier_ZSK.key
$include nom_du_fichier_KSK.key
$include nom_du_fichier_ZSK.key
$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key
Linux LPIC2 noelmace.com
Enregistrements DS
• Exemple : un serveur A1 fait autorité sur example.org
 un serveur A2, grâce à une délégation de zone, fait autorité sur
sd.example.org
• Nous devons donc transmettre les enregistrements DS
générés dans A2 à A1 afin d'établire une chaine de confiance
• Ces enregistrements ont été créés dans un fichier séparé,
dsset-sd.example.org
 envoyer ce fichier de manière sécurisée à A1
 l'inclure dans le fichier de zone non signé
Linux LPIC2 noelmace.com
Ce qu’on a couvert
• Principes de base de la sécurisation du DNS.
 lancement en tant qu'utilisateur non-root
 Chrooting de bind
 Transfert de zone
• Signature de zone avec DNSSEC
 dnssec-keygen et dnssec-signzone
Weight : 2
Description : Candidates should be able to configure a DNS server to run as a non-root user and run
in a chroot jail. This objective includes secure exchange of data between DNS servers.
207.3 Securing a DNS server
Linux LPIC2 noelmace.com
Licence
Ce(tte) œuvre (y compris ses illustrations, sauf mention explicite) est mise à disposition selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou écrivez à :
Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
Vous êtes libre de :
 partager — reproduire, distribuer et communiquer cette œuvre
 remixer — adapter l’œuvre
Selon les conditions suivantes :
 Attribution — Vous devez clairement indiquer que ce document, ou tout document dérivé de celui, est (issu de) l’œuvre
originale de Noël Macé (noelmace.com) (sans suggérer qu'il vous approuve, vous ou votre utilisation de l’œuvre, à moins
d'en demander expressément la permission).
 Pas d’Utilisation Commerciale — Vous n’avez pas le droit d’utiliser cette œuvre à des fins commerciales (ie. l'intention
première ou l'objectif d'obtenir un avantage commercial ou une compensation financière privée). Pour obtenir ce droit, une
autorisation explicite de l'auteur est requise.
 Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de
distribuer votre création que sous une licence identique ou similaire à celle-ci.
Pour toute demande de collaboration, d'utilisation commerciale ou de publication de ce support ou d'un dérivé de celui-ci sous une
licence incompatible, contacter l'auteur via les contacts indiqués sur le site http://www.noelmace.com. Vous êtes par ailleurs
vivement encouragé (sans obligation légale) à communiquer avec celui-ci si vous réalisez une œuvre dérivée ou toute amélioration
de ce support.

More Related Content

What's hot

LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxNoël
 
L’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueL’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueAmadou Dia
 
Adresses ip et dns
Adresses ip et dnsAdresses ip et dns
Adresses ip et dnsnanoune1965
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linuxBalamine Gassama
 
Domain Name System
Domain Name SystemDomain Name System
Domain Name SystemAmira Hakim
 
05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpipNoël
 
09 01 configuration du serveur samba
09 01 configuration du serveur samba09 01 configuration du serveur samba
09 01 configuration du serveur sambaNoël
 
08 03 sécurisation d'un serveur web avec ssl
08 03 sécurisation d'un serveur web avec ssl08 03 sécurisation d'un serveur web avec ssl
08 03 sécurisation d'un serveur web avec sslNoël
 
LPIC1 07 11 introduction aux systèmes de fichiers
LPIC1 07 11 introduction aux systèmes de fichiersLPIC1 07 11 introduction aux systèmes de fichiers
LPIC1 07 11 introduction aux systèmes de fichiersNoël
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
09 02 configuration du serveur nfs
09 02 configuration du serveur nfs09 02 configuration du serveur nfs
09 02 configuration du serveur nfsNoël
 
08 02 mise en place de serveurs virtuels apache 2
08 02 mise en place de serveurs virtuels apache 208 02 mise en place de serveurs virtuels apache 2
08 02 mise en place de serveurs virtuels apache 2Noël
 
05 03 dépannage réseau
05 03 dépannage réseau05 03 dépannage réseau
05 03 dépannage réseauNoël
 
01 01 composants du noyau
01 01 composants du noyau01 01 composants du noyau
01 01 composants du noyauNoël
 

What's hot (20)

LPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseauxLPIC1 11 01 sécurité réseaux
LPIC1 11 01 sécurité réseaux
 
L’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en PratiqueL’ Administration des Réseaux en Pratique
L’ Administration des Réseaux en Pratique
 
Adresses ip et dns
Adresses ip et dnsAdresses ip et dns
Adresses ip et dns
 
Configuration dns sous linux
Configuration  dns sous linuxConfiguration  dns sous linux
Configuration dns sous linux
 
Domain Name System
Domain Name SystemDomain Name System
Domain Name System
 
05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip05 02 surveillance et analyse de traffic tcpip
05 02 surveillance et analyse de traffic tcpip
 
09 01 configuration du serveur samba
09 01 configuration du serveur samba09 01 configuration du serveur samba
09 01 configuration du serveur samba
 
Configuration dns
Configuration dnsConfiguration dns
Configuration dns
 
Openfire
OpenfireOpenfire
Openfire
 
08 03 sécurisation d'un serveur web avec ssl
08 03 sécurisation d'un serveur web avec ssl08 03 sécurisation d'un serveur web avec ssl
08 03 sécurisation d'un serveur web avec ssl
 
Implémentation d'openvpn
Implémentation d'openvpnImplémentation d'openvpn
Implémentation d'openvpn
 
LPIC1 07 11 introduction aux systèmes de fichiers
LPIC1 07 11 introduction aux systèmes de fichiersLPIC1 07 11 introduction aux systèmes de fichiers
LPIC1 07 11 introduction aux systèmes de fichiers
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
09 02 configuration du serveur nfs
09 02 configuration du serveur nfs09 02 configuration du serveur nfs
09 02 configuration du serveur nfs
 
Domain Name System
Domain Name SystemDomain Name System
Domain Name System
 
Samba 4
Samba 4Samba 4
Samba 4
 
08 02 mise en place de serveurs virtuels apache 2
08 02 mise en place de serveurs virtuels apache 208 02 mise en place de serveurs virtuels apache 2
08 02 mise en place de serveurs virtuels apache 2
 
05 03 dépannage réseau
05 03 dépannage réseau05 03 dépannage réseau
05 03 dépannage réseau
 
01 01 composants du noyau
01 01 composants du noyau01 01 composants du noyau
01 01 composants du noyau
 
Rapport tp openssl
Rapport  tp  opensslRapport  tp  openssl
Rapport tp openssl
 

Viewers also liked

LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingNoël
 
LPIC1 10 03 cron
LPIC1 10 03 cronLPIC1 10 03 cron
LPIC1 10 03 cronNoël
 
Les attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineLes attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineZellagui Amine
 
06 05 résolution de nom
06 05 résolution de nom06 05 résolution de nom
06 05 résolution de nomNoël
 
06 03 route
06 03 route06 03 route
06 03 routeNoël
 
06 04 arp
06 04 arp06 04 arp
06 04 arpNoël
 
06 01 interfaces
06 01 interfaces06 01 interfaces
06 01 interfacesNoël
 
SSL/TLS : Faille Heartbleed
SSL/TLS : Faille HeartbleedSSL/TLS : Faille Heartbleed
SSL/TLS : Faille HeartbleedThomas Moegli
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logsNoël
 
Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Bee_Ware
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAMNoël
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)Noël
 
Panorama de la cybercriminalité en 2016
Panorama de la cybercriminalité en 2016Panorama de la cybercriminalité en 2016
Panorama de la cybercriminalité en 2016Serrerom
 
06 02 ip
06 02 ip06 02 ip
06 02 ipNoël
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilCyber Security Alliance
 
LPIC1 11 02 sécurité système
LPIC1 11 02 sécurité systèmeLPIC1 11 02 sécurité système
LPIC1 11 02 sécurité systèmeNoël
 
Huawei Bts3900C (omb+rru) (ver.c) hardware description
Huawei Bts3900C (omb+rru) (ver.c) hardware descriptionHuawei Bts3900C (omb+rru) (ver.c) hardware description
Huawei Bts3900C (omb+rru) (ver.c) hardware descriptionYassmina AGHIL
 

Viewers also liked (20)

LPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et natingLPIC2 12 01 pare-feu et nating
LPIC2 12 01 pare-feu et nating
 
LPIC1 10 03 cron
LPIC1 10 03 cronLPIC1 10 03 cron
LPIC1 10 03 cron
 
Les attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui AmineLes attaques reseaux par zellagui Amine
Les attaques reseaux par zellagui Amine
 
06 05 résolution de nom
06 05 résolution de nom06 05 résolution de nom
06 05 résolution de nom
 
06 03 route
06 03 route06 03 route
06 03 route
 
06 04 arp
06 04 arp06 04 arp
06 04 arp
 
06 01 interfaces
06 01 interfaces06 01 interfaces
06 01 interfaces
 
Ethical Hacking
Ethical HackingEthical Hacking
Ethical Hacking
 
SSL/TLS : Faille Heartbleed
SSL/TLS : Faille HeartbleedSSL/TLS : Faille Heartbleed
SSL/TLS : Faille Heartbleed
 
LPIC1 10 01 logs
LPIC1 10 01 logsLPIC1 10 01 logs
LPIC1 10 01 logs
 
Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration Waf, le bon outil, la bonne administration
Waf, le bon outil, la bonne administration
 
10 02 authentification PAM
10 02 authentification PAM10 02 authentification PAM
10 02 authentification PAM
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)
 
Panorama de la cybercriminalité en 2016
Panorama de la cybercriminalité en 2016Panorama de la cybercriminalité en 2016
Panorama de la cybercriminalité en 2016
 
06 02 ip
06 02 ip06 02 ip
06 02 ip
 
Protocole ARP/RARP
Protocole ARP/RARPProtocole ARP/RARP
Protocole ARP/RARP
 
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan MarcilASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
ASFWS 2012 - Les utilités d’un pare-feu applicatif Web (WAF) par Jonathan Marcil
 
LPIC1 11 02 sécurité système
LPIC1 11 02 sécurité systèmeLPIC1 11 02 sécurité système
LPIC1 11 02 sécurité système
 
Sécurité des réseaux
Sécurité des réseauxSécurité des réseaux
Sécurité des réseaux
 
Huawei Bts3900C (omb+rru) (ver.c) hardware description
Huawei Bts3900C (omb+rru) (ver.c) hardware descriptionHuawei Bts3900C (omb+rru) (ver.c) hardware description
Huawei Bts3900C (omb+rru) (ver.c) hardware description
 

Similar to 07 03 sécurisation d'un serveur dns

Dhcp3
Dhcp3Dhcp3
Dhcp3TECOS
 
10 01 configuration dhcp
10 01 configuration dhcp10 01 configuration dhcp
10 01 configuration dhcpNoël
 
Etat des Lieux DANE (DNS Based Authentication of Named Entities)
Etat des Lieux DANE (DNS Based Authentication of Named Entities)Etat des Lieux DANE (DNS Based Authentication of Named Entities)
Etat des Lieux DANE (DNS Based Authentication of Named Entities)Afnic
 
SSH - Secure Shell
SSH - Secure ShellSSH - Secure Shell
SSH - Secure ShellSouhaib El
 
0240-formation-ssh-secure-shell.pdf
0240-formation-ssh-secure-shell.pdf0240-formation-ssh-secure-shell.pdf
0240-formation-ssh-secure-shell.pdfBellaj Badr
 
10 03 clients ldap
10 03 clients ldap10 03 clients ldap
10 03 clients ldapNoël
 
DNSSEC : les extensions de sécurité du DNS
DNSSEC : les extensions de sécurité du DNSDNSSEC : les extensions de sécurité du DNS
DNSSEC : les extensions de sécurité du DNSAfnic
 
this a course about the methodologie of DNS
this a course about the methodologie of DNSthis a course about the methodologie of DNS
this a course about the methodologie of DNSkhalidkabbad2
 
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...AZUG FR
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)Hackfest Communication
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
04 01 configuration raid
04 01 configuration raid04 01 configuration raid
04 01 configuration raidNoël
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnYaya N'Tyeni Sanogo
 

Similar to 07 03 sécurisation d'un serveur dns (20)

Dhcp3
Dhcp3Dhcp3
Dhcp3
 
10 01 configuration dhcp
10 01 configuration dhcp10 01 configuration dhcp
10 01 configuration dhcp
 
Etat des Lieux DANE (DNS Based Authentication of Named Entities)
Etat des Lieux DANE (DNS Based Authentication of Named Entities)Etat des Lieux DANE (DNS Based Authentication of Named Entities)
Etat des Lieux DANE (DNS Based Authentication of Named Entities)
 
SSH - Secure Shell
SSH - Secure ShellSSH - Secure Shell
SSH - Secure Shell
 
0240-formation-ssh-secure-shell.pdf
0240-formation-ssh-secure-shell.pdf0240-formation-ssh-secure-shell.pdf
0240-formation-ssh-secure-shell.pdf
 
10 03 clients ldap
10 03 clients ldap10 03 clients ldap
10 03 clients ldap
 
DNSSEC : les extensions de sécurité du DNS
DNSSEC : les extensions de sécurité du DNSDNSSEC : les extensions de sécurité du DNS
DNSSEC : les extensions de sécurité du DNS
 
this a course about the methodologie of DNS
this a course about the methodologie of DNSthis a course about the methodologie of DNS
this a course about the methodologie of DNS
 
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...
GAB 2017 PARIS - Tester la sécurité de vos annuaires Active Directory et Azur...
 
S43-PreChap4.pptx
S43-PreChap4.pptxS43-PreChap4.pptx
S43-PreChap4.pptx
 
Linux_best_practices
Linux_best_practicesLinux_best_practices
Linux_best_practices
 
Presentation
PresentationPresentation
Presentation
 
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
802.1X filaire, un monde idéal illusoire? (Olivier Bilodeau)
 
Windows server2016 presentation
Windows server2016 presentation Windows server2016 presentation
Windows server2016 presentation
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
Nagios
NagiosNagios
Nagios
 
04 01 configuration raid
04 01 configuration raid04 01 configuration raid
04 01 configuration raid
 
Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpn
 
Expozimbra
ExpozimbraExpozimbra
Expozimbra
 

More from Noël

LPIC1 10 04 anacron
LPIC1 10 04 anacronLPIC1 10 04 anacron
LPIC1 10 04 anacronNoël
 
LPIC1 10 05 at
LPIC1 10 05 atLPIC1 10 05 at
LPIC1 10 05 atNoël
 
LPIC1 10 02 temps
LPIC1 10 02 tempsLPIC1 10 02 temps
LPIC1 10 02 tempsNoël
 
LPIC1 09 06 kill
LPIC1 09 06 killLPIC1 09 06 kill
LPIC1 09 06 killNoël
 
LPIC1 09 05 priorités
LPIC1 09 05 prioritésLPIC1 09 05 priorités
LPIC1 09 05 prioritésNoël
 
LPIC1 09 04 bg fg
LPIC1 09 04 bg fgLPIC1 09 04 bg fg
LPIC1 09 04 bg fgNoël
 
LPIC1 09 03 top
LPIC1 09 03 topLPIC1 09 03 top
LPIC1 09 03 topNoël
 
LPIC1 09 02 ps
LPIC1 09 02 psLPIC1 09 02 ps
LPIC1 09 02 psNoël
 
LPIC1 09 01 intro
LPIC1 09 01 introLPIC1 09 01 intro
LPIC1 09 01 introNoël
 
LPIC1 08 05 runlevels
LPIC1 08 05 runlevelsLPIC1 08 05 runlevels
LPIC1 08 05 runlevelsNoël
 
LPIC1 08 03 grub2
LPIC1 08 03 grub2LPIC1 08 03 grub2
LPIC1 08 03 grub2Noël
 
LPIC1 08 02 grub legacy
LPIC1 08 02 grub legacyLPIC1 08 02 grub legacy
LPIC1 08 02 grub legacyNoël
 
LPIC1 08 01 démarrage
LPIC1 08 01 démarrageLPIC1 08 01 démarrage
LPIC1 08 01 démarrageNoël
 
LPIC1 07 14 mount
LPIC1 07 14 mountLPIC1 07 14 mount
LPIC1 07 14 mountNoël
 
LPIC1 07 13 fsck
LPIC1 07 13 fsckLPIC1 07 13 fsck
LPIC1 07 13 fsckNoël
 
LPIC1 07 18 debugfs
LPIC1 07 18 debugfsLPIC1 07 18 debugfs
LPIC1 07 18 debugfsNoël
 
LPIC1 07 17 tune2fs
LPIC1 07 17 tune2fsLPIC1 07 17 tune2fs
LPIC1 07 17 tune2fsNoël
 
LPIC1 07 16 dumpe2fs
LPIC1 07 16 dumpe2fsLPIC1 07 16 dumpe2fs
LPIC1 07 16 dumpe2fsNoël
 
LPIC1 07 12 formatage
LPIC1 07 12 formatageLPIC1 07 12 formatage
LPIC1 07 12 formatageNoël
 
LPIC1 07 10 GNU parted
LPIC1 07 10 GNU partedLPIC1 07 10 GNU parted
LPIC1 07 10 GNU partedNoël
 

More from Noël (20)

LPIC1 10 04 anacron
LPIC1 10 04 anacronLPIC1 10 04 anacron
LPIC1 10 04 anacron
 
LPIC1 10 05 at
LPIC1 10 05 atLPIC1 10 05 at
LPIC1 10 05 at
 
LPIC1 10 02 temps
LPIC1 10 02 tempsLPIC1 10 02 temps
LPIC1 10 02 temps
 
LPIC1 09 06 kill
LPIC1 09 06 killLPIC1 09 06 kill
LPIC1 09 06 kill
 
LPIC1 09 05 priorités
LPIC1 09 05 prioritésLPIC1 09 05 priorités
LPIC1 09 05 priorités
 
LPIC1 09 04 bg fg
LPIC1 09 04 bg fgLPIC1 09 04 bg fg
LPIC1 09 04 bg fg
 
LPIC1 09 03 top
LPIC1 09 03 topLPIC1 09 03 top
LPIC1 09 03 top
 
LPIC1 09 02 ps
LPIC1 09 02 psLPIC1 09 02 ps
LPIC1 09 02 ps
 
LPIC1 09 01 intro
LPIC1 09 01 introLPIC1 09 01 intro
LPIC1 09 01 intro
 
LPIC1 08 05 runlevels
LPIC1 08 05 runlevelsLPIC1 08 05 runlevels
LPIC1 08 05 runlevels
 
LPIC1 08 03 grub2
LPIC1 08 03 grub2LPIC1 08 03 grub2
LPIC1 08 03 grub2
 
LPIC1 08 02 grub legacy
LPIC1 08 02 grub legacyLPIC1 08 02 grub legacy
LPIC1 08 02 grub legacy
 
LPIC1 08 01 démarrage
LPIC1 08 01 démarrageLPIC1 08 01 démarrage
LPIC1 08 01 démarrage
 
LPIC1 07 14 mount
LPIC1 07 14 mountLPIC1 07 14 mount
LPIC1 07 14 mount
 
LPIC1 07 13 fsck
LPIC1 07 13 fsckLPIC1 07 13 fsck
LPIC1 07 13 fsck
 
LPIC1 07 18 debugfs
LPIC1 07 18 debugfsLPIC1 07 18 debugfs
LPIC1 07 18 debugfs
 
LPIC1 07 17 tune2fs
LPIC1 07 17 tune2fsLPIC1 07 17 tune2fs
LPIC1 07 17 tune2fs
 
LPIC1 07 16 dumpe2fs
LPIC1 07 16 dumpe2fsLPIC1 07 16 dumpe2fs
LPIC1 07 16 dumpe2fs
 
LPIC1 07 12 formatage
LPIC1 07 12 formatageLPIC1 07 12 formatage
LPIC1 07 12 formatage
 
LPIC1 07 10 GNU parted
LPIC1 07 10 GNU partedLPIC1 07 10 GNU parted
LPIC1 07 10 GNU parted
 

07 03 sécurisation d'un serveur dns

  • 1. Linux LPIC2 noelmace.com Noël Macé Formateur et Consultant indépendant expert Unix et FOSS http://www.noelmace.com Sécurisation d'un serveur DNS Domain Name Server Licence Creative Commons Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.
  • 2. Linux LPIC2 noelmace.com Plan • Introduction • Remarque sur le hacking • Types de requêtes • Masquer le numéro de version • ACL • Limiter les requêtes • Limiter les transfers de zone • Limiter les privilèges de BIND • Chroot • Chroot : logging • DNSSEC  Introduction  Signature des enregistrements  DNSKEY et RRSIG  Preuves de non-existance  Chaine de confiance • Mise en pratique  Génération de clés avec dnssec-keygen  Limitation des transfers avec DNSSEC  Signature de zone  Configuration du client  Enregistrements DS
  • 3. Linux LPIC2 noelmace.com Introduction • mettre à jour régulièrement  garder un œil sur les nouvelles versions et les annonces de failles de sécurité  exemple : http://lists.debian.org/debian-security-announce/ • Limiter les informations disponibles • Limiter l'accès et les transferts de zone • Isoler/Limiter BIND • Sécuriser les données (avec DNSSEC)
  • 4. Linux LPIC2 noelmace.com Remarque sur le hacking • Ne pas confondre hacking et malveillance  black / grey / white hats • Le hacking n'est d'ailleurs pas uniquement lié aux questions de sécurité, ni même d'informatique • "aptitude technique et [...] plaisir pris à résoudre des problèmes et à dépasser des limites arbitraires" - Eric Raymond, Comment devenir un hacker ?  voir aussi The Jargon File, du même auteur, et sa définition très complète du terme hacker
  • 5. Linux LPIC2 noelmace.com Types de requêtes • requêtes "classiques"  demande d'une information spécifique  contrôlée par l'instruction allow-query • Transferts de zone  envoi de toutes les informations d'une zone à un autre serveur  conçues pour les serveurs "esclaves"  contrôlées par l'instruction allow-transfer autorisé par défaut pour tout les hôtes
  • 6. Linux LPIC2 noelmace.com Masquer le numéro de version • hack  peu permettre de cibler les attaques en fonction de failles connues • solution : named.conf $ dig @target chaos version.bind txt$ dig @target chaos version.bind txt options { ... version "hidden"; }; options { ... version "hidden"; };
  • 7. Linux LPIC2 noelmace.com ACL • Mettre en place un ACL • utilisable par diverses instructions de contrôle d'accès  allow-query, allow-transfer acl "trusted" { localhost; 192.168.1.0/24; }; acl "trusted" { localhost; 192.168.1.0/24; };
  • 8. Linux LPIC2 noelmace.com Limiter les requêtes • grâce aux instructions allow-query et allow-transfer  utilisables dans les instructions zone et options • celles des instructions zone surchargeant celles, globales, de l'instruction options • Exemple acl "my_network" { 224.123.240.0/24; }; zone "example.org" IN { type master; allow-queries { my_network; }; }; acl "my_network" { 224.123.240.0/24; }; zone "example.org" IN { type master; allow-queries { my_network; }; };
  • 9. Linux LPIC2 noelmace.com Limiter les transfers de zone • hacks • DOIT être limité aux serveurs "esclaves" sur les serveurs maitre  totalement interdit (none) sur les serveurs esclaves • Exemple : named.conf d'un serveur maitre $ dig axfr @serveurdns domaine$ dig axfr @serveurdns domaine $ host -l domaine serveurdns$ host -l domaine serveurdns acl "my_slave_servers" { 224.123.240.3; // cat.example.org }; zone "example.org" IN { type master; allow-transfer { my_slave_servers; }; }; acl "my_slave_servers" { 224.123.240.3; // cat.example.org }; zone "example.org" IN { type master; allow-transfer { my_slave_servers; }; }; ne pas oublier de faire de même pour les zones inverse
  • 10. Linux LPIC2 noelmace.com Limiter les privilèges de BIND • se lance par défaut en tant que root sur certaines distributions • éviter l'utilisateur/groupe nobody/nogroup  trop grand nombre d'applications lancées via cet utilisateur  risque de communication entre ces application → faille • privilégier un utilisateur/groupe spécifique  ex : named / named  Exemple de init script sous Debian vérifier que cet utilisateur ai l'accès au dossier de travail (instruction directory) # named -u named -g named# named -u named -g named start-stop-daemon ... --exec /usr/sbin/named -- -u named -g namedstart-stop-daemon ... --exec /usr/sbin/named -- -u named -g named
  • 11. Linux LPIC2 noelmace.com Chroot • permet d'isoler l'execution d'un programme  en changeant sa racine (ex : /var/cache/bind)  option -t de named • fichiers requis par BIND  dossiers etc, dev, lib, sbin (ou usr/sbin) et var/run  périphérique /dev/null  les fichiers /etc/{passwd,group,shadow,ld.so.cache,localtime} contenant l'utilisateur/groupe named/named  fichiers de configuration (dans /var/cache/bind/etc/bind/) • atention à l'instruction directory, qui sera relative à la nouvelle racine  toutes les librairies utilisées par BIND   les programmes named, named-xfer et rndc  $ mknod -m 666 /var/cache/bind/dev/null c 1 3$ mknod -m 666 /var/cache/bind/dev/null c 1 3 $ ldd /usr/sbin/named$ ldd /usr/sbin/named start-stop-daemon ... --exec /usr/sbin/named -- -t /var/cache/bindstart-stop-daemon ... --exec /usr/sbin/named -- -t /var/cache/bind
  • 12. Linux LPIC2 noelmace.com Chroot : logging • la solution traditionnelle de logging présentée aux chapitres précédents requière des fichiers externes au chroot  nous devons donc faire appel à une autre solution  voici un exemple  le nouveau fichier de log sera donc /var/cache/bind/var/cache/bind/bind.log logging { channel some_log { file "bind.log" versions 3; severity info; }; category default { some_log; }; // ... }; logging { channel some_log { file "bind.log" versions 3; severity info; }; category default { some_log; }; // ... };
  • 13. Linux LPIC2 noelmace.com DNSSEC : Plan • Introduction  Signature des enregistrements  DNSKEY et RRSIG  Preuves de non-existance  Chaine de confiance • Mise en pratique  Génération de clés avec dnssec-keygen  Limitation des transfers avec DNSSEC  Signature de zone  Configuration du client  Enregistrements DS
  • 14. Linux LPIC2 noelmace.com Introduction • Permet de sécuriser les réponses d'un serveur DNS  par rapport à des informations existante • Authentification des données contenues dans les réponses. • Intégrité de ces données.  ou par rapport à des informations non existantes • Preuve de non existence. • En signant les enregistrements DNS au sain d'une zone • Permet d’établir une chaîne de confiance basée sur des clés publiques  délégation de signatures  un DNS de niveau supérieur pouvant annoncer que tel sous-domaine est signé • Empêche le DNS poisoning  intercepter des paquets dns et les modifier
  • 15. Linux LPIC2 noelmace.com Signature des enregistrements Danger : le DNS poisoning Solution : la signature des enregistrements
  • 16. Linux LPIC2 noelmace.com DNSKEY et RRSIG • DNSKEY : transmettre une clé publique entre le résolveur (client) et le serveur de nom  afin de vérifier la signature du serveur d'autorité  vérifier l'intégrité et l'authenticité du message • RRSIG : signature de l'enregistrement envoyé par le serveur d'autorité  pour chaque enregistrement  signature du hash de l'enregistrement avec la clé privée du serveur d'autorité
  • 17. Linux LPIC2 noelmace.com Preuves de non-existance • pour des noms inexistants  par défaut, le serveur répondra par une réponse vide • il n'y a donc rien à signer • NSEC (Next SECure) : preuve de non existance  indique les noms n'existant pas !  permet ainsi la création d'un RRSIG correspondant  Exemple : il n'y a aucun nom entre beta et delta  problème : à chaque nom existant est associé un NSEC • permet donc du "zone walking" (énumération de zone) • ie : récupérer l'ensemble des enregistrements existant sur la zone beta.example.net. NSEC delta.example.net. A RRSIG NSECbeta.example.net. NSEC delta.example.net. A RRSIG NSEC
  • 18. Linux LPIC2 noelmace.com Preuves de non-existance • NSEC3 : évite les attaques de type énumération de zone  utilise les hashs des noms au lieu des noms eux même  Exemple : il n'y a pas de hash valide entre 810c et c73a • algo (1), salt (5A17), iterations (5) • NSEC3PARAM : paramètres NSEC3  ne sert qu'aux serveur d'autorité  afin de calculer le hash des noms qu'il conserve 810c.example.net. NSEC 1 0 5 5A17 c73a A RRSIG810c.example.net. NSEC 1 0 5 5A17 c73a A RRSIG
  • 19. Linux LPIC2 noelmace.com Chaine de confiance • être certain que la clé publique (DNSKEY) du résolveur correspond bien à la bonne clé de la zone • cf délégation de zone  un serveur de confiance indique que l'un de ses serveurs enfants est digne de confiance • DS : identifier rapidement la clé publique de la zone fille • directement lié à l'enregistrement DNSKEY d'une des zones filles - envoyé par le serveur fils pour l'enregistrer dans le serveur père • hash du nom du détenteur de la clé publique (zone fille)
  • 20. Linux LPIC2 noelmace.com Mise en pratique • 2 types de clés :  KSK (Key Signing Keys) • utilisée uniquement pour signer les clés d'une zone (DNSKEY)  ZSK (Zone Signing Keys) • utilisée pour signer tout les RRsets d'une zone (RRSIG)
  • 21. Linux LPIC2 noelmace.com Génération de clés avec dnssec-keygen • algo : algorithme cryptographique  non sensible à la casse  pour DNSSEC : RSAMD5, RSASHA1, DSA …  pour TSIG/TKEY : DH (Diffie Hellman), HMAC-MD5, HMAC-SHA1 … • size : longueur de la clé (en bits)  RSA : entre 512 et 2048  DH : entre 128 et 4096  DSA : entre 512 et 1024  HMAC : entre 1 et 512 • nametype : type d'utilisation de la clé  non sensible à la casse  ZONE, USER ou OTHER • flag : utilisé pour indiquer qu'une clé est une clé KSK  ZSK sinon • créé les fichiers Kname+algorithm+footprint.private and Kname+algorithm+footprint.key $ dnssec-keygen -a algo -b size -n nametype [-f flag] nom$ dnssec-keygen -a algo -b size -n nametype [-f flag] nom
  • 22. Linux LPIC2 noelmace.com Limitation des transfers avec DNSSEC • dans named.conf  limiter les droits d'accès en lecture au seul utilisateur/groupe liés au serveur BIND • définir les serveurs pouvant se connecter grâce à cette clé  à inscrire sur tout les serveurs • key key.example.com. { algorithm "hmac-md5"; secret "5VBiSy..."; }; key key.example.com. { algorithm "hmac-md5"; secret "5VBiSy..."; }; server ip_du_serveur_distant { keys key.example.com.; }; server ip_du_serveur_distant { keys key.example.com.; };
  • 23. Linux LPIC2 noelmace.com Limitation des transfers avec DNSSEC • grâce à la clé déclarée précédemment zone "example.com" { type master; file "example.com.zone"; allow-transfer { key key.example.com.; }; }; zone "example.com" { type master; file "example.com.zone"; allow-transfer { key key.example.com.; }; };
  • 24. Linux LPIC2 noelmace.com Signature de zone 1) Création des clés (dans /etc/bind/) 2) Inclusion des clés dans le fichier de zone 3) Signature de la zone  créé le fichier de zone signée projet.signed $ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet $include nom_du_fichier_KSK.key $include nom_du_fichier_ZSK.key $include nom_du_fichier_KSK.key $include nom_du_fichier_ZSK.key $ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key
  • 25. Linux LPIC2 noelmace.com Signature de zone 4) modification de named.conf 5) modification de named.conf.options 6) relancer bind zone “projet” { type “master”; file “/etc/bind/db.projet.signed”; }; zone “projet” { type “master”; file “/etc/bind/db.projet.signed”; }; dnssec-enable yes;dnssec-enable yes; $ /etc/init.d/bind9 restart$ /etc/init.d/bind9 restart
  • 26. Linux LPIC2 noelmace.com Configuration du client • récupérer la clé KSK  de manière sécurisée (scp, sftp ...) • l'ajouter au fichier /etc/trusted-key.key • tester la configuration tail -n 1 KSK.key >> /etc/trusted-key.keytail -n 1 KSK.key >> /etc/trusted-key.key $ dig +dnssec +sigchase papa.projet$ dig +dnssec +sigchase papa.projet
  • 27. Linux LPIC2 noelmace.com Signature de zone 1) Création des clés (dans /etc/bind/) 2) Inclusion des clés dans le fichier de zone 3) Signature de la zone  créé le fichier de zone signée projet.signed) $ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -f KSK -a RSASHA1 -b 1024 -n ZONE projet $ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE projet $include nom_du_fichier_KSK.key $include nom_du_fichier_ZSK.key $include nom_du_fichier_KSK.key $include nom_du_fichier_ZSK.key $ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key$ dnssec-signzone -t -k clé_KSK.key db.projet -o projet clé_ZSK.key
  • 28. Linux LPIC2 noelmace.com Enregistrements DS • Exemple : un serveur A1 fait autorité sur example.org  un serveur A2, grâce à une délégation de zone, fait autorité sur sd.example.org • Nous devons donc transmettre les enregistrements DS générés dans A2 à A1 afin d'établire une chaine de confiance • Ces enregistrements ont été créés dans un fichier séparé, dsset-sd.example.org  envoyer ce fichier de manière sécurisée à A1  l'inclure dans le fichier de zone non signé
  • 29. Linux LPIC2 noelmace.com Ce qu’on a couvert • Principes de base de la sécurisation du DNS.  lancement en tant qu'utilisateur non-root  Chrooting de bind  Transfert de zone • Signature de zone avec DNSSEC  dnssec-keygen et dnssec-signzone Weight : 2 Description : Candidates should be able to configure a DNS server to run as a non-root user and run in a chroot jail. This objective includes secure exchange of data between DNS servers. 207.3 Securing a DNS server
  • 30. Linux LPIC2 noelmace.com Licence Ce(tte) œuvre (y compris ses illustrations, sauf mention explicite) est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France. Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ ou écrivez à : Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. Vous êtes libre de :  partager — reproduire, distribuer et communiquer cette œuvre  remixer — adapter l’œuvre Selon les conditions suivantes :  Attribution — Vous devez clairement indiquer que ce document, ou tout document dérivé de celui, est (issu de) l’œuvre originale de Noël Macé (noelmace.com) (sans suggérer qu'il vous approuve, vous ou votre utilisation de l’œuvre, à moins d'en demander expressément la permission).  Pas d’Utilisation Commerciale — Vous n’avez pas le droit d’utiliser cette œuvre à des fins commerciales (ie. l'intention première ou l'objectif d'obtenir un avantage commercial ou une compensation financière privée). Pour obtenir ce droit, une autorisation explicite de l'auteur est requise.  Partage dans les Mêmes Conditions — Si vous modifiez, transformez ou adaptez cette œuvre, vous n’avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci. Pour toute demande de collaboration, d'utilisation commerciale ou de publication de ce support ou d'un dérivé de celui-ci sous une licence incompatible, contacter l'auteur via les contacts indiqués sur le site http://www.noelmace.com. Vous êtes par ailleurs vivement encouragé (sans obligation légale) à communiquer avec celui-ci si vous réalisez une œuvre dérivée ou toute amélioration de ce support.