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