moi - PasRP-Theo/Admin-II GitHub Wiki
1. Préparation de l'environnement
1.1. Organisation du VPS
On crée d'abord un utilisateur et une structure propre :
# Créer un utilisateur dédié
sudo adduser dnsadmin
# Ajouter cet utilisateur au groupe docker
sudo usermod -aG docker dnsadmin
# Créer la structure de répertoires
sudo mkdir -p /srv/dns/{config,zones,backups}
sudo chown -R dnsadmin:dnsadmin /srv/dns
# Se connecter avec l'utilisateur
su - dnsadmin
1.2. Préparation des fichiers de configuration
Créer le fichier named.conf
:
mkdir -p /srv/dns/config /srv/dns/zones
cat > /srv/dns/config/named.conf << 'EOF'
options {
directory "/var/cache/bind";
version "not currently available";
allow-query { any; };
allow-query-cache { none; };
recursion no;
};
zone "l2-2.ephec-ti.be." {
type master;
file "/etc/bind/l2-2.zone";
allow-transfer { none; };
};
EOF
Et le fichier de zone :
cat > /srv/dns/zones/l2-2.zone << 'EOF'
$TTL 86400
@ IN SOA ns.l2-2.ephec-ti.be. admin.l2-2.ephec-ti.be. (
2024050401
43200
3600
1209600
86400 )
@ IN NS ns.l2-2.ephec-ti.be.
ns IN A 54.36.183.49
@ IN A 54.36.183.49
www IN A 54.36.183.49
EOF
1.3. Installer les dépendances et se connecter à Docker Hub
# Installer dig
sudo apt update
sudo apt install dnsutils -y
# Se connecter à Docker Hub pour éviter les limitations
docker login
1.4. Test du container avec image officielle
docker run -d \
--name=dns-test \
-p 53:53/udp \
-p 53:53/tcp \
internetsystemsconsortium/bind9:9.18
# Tester une requête DNS
dig @localhost www.google.com
1.5. Construction du serveur DNS personnalisé
Créer un Dockerfile :
cat > /srv/dns/Dockerfile << 'EOF'
FROM internetsystemsconsortium/bind9:9.18
COPY config/named.conf /etc/bind/named.conf
COPY zones/l2-2.zone /etc/bind/l2-2.zone
RUN chown -R bind:bind /etc/bind/
CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]
EOF
Build et run :
cd /srv/dns
docker build -t dns-auth .
docker run -d \
--name=dns-auth \
-p 53:53/udp \
-p 53:53/tcp \
dns-auth
1.6. Validation
dig @localhost www.google.com # Doit échouer
dig @localhost www.l2-2.ephec-ti.be # Doit répondre
1.7. Délégation
Envoyer à votre prof :
l2-2 IN NS ns.l2-2.ephec-ti.be.
ns.l2-2 IN A 54.36.183.49
2. Sécurisation avec DNSSEC
2.1. Activer DNSSEC
Remplacez le fichier named.conf
:
cat > /srv/dns/config/named.conf << 'EOF'
options {
directory "/var/cache/bind";
version "not currently available";
allow-query { any; };
allow-query-cache { none; };
recursion no;
};
zone "l2-2.ephec-ti.be." {
type master;
file "/etc/bind/l2-2.zone";
allow-transfer { none; };
inline-signing yes;
dnssec-policy default;
};
EOF
2.2. Redémarrer le serveur
cd /srv/dns
docker build -t dns-auth-dnssec .
docker stop dns-auth
docker rm dns-auth
docker run -d \
--name=dns-auth-dnssec \
-p 53:53/udp \
-p 53:53/tcp \
-v /srv/dns/zones:/var/cache/bind/zones \
dns-auth-dnssec
2.3. Extraire le DS record
docker exec -it dns-auth-dnssec bash
cd /var/cache/bind/zones
ls -la K*
dnssec-dsfromkey Kl2-2.ephec-ti.be*.key
Envoyez l'enregistrement DS à votre professeur.
3. Validation
Utilisez :
Ou en ligne de commande :
dig @localhost www.l2-2.ephec-ti.be +dnssec
dig @localhost l2-2.ephec-ti.be DNSKEY
delv www.l2-2.ephec-ti.be