Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt

Use this file to discover all available pages before exploring further.

Runbook 09 — Restauration zone DNS snakysec.com

1. Quand activer

ScénarioActiver ?
Records DNS supprimés accidentellement (OVH UI manipulation)OUI
Domaine entier injoignable (records corrompus côté OVH)OUI
Migration vers un autre registrar (cas hors-DR)OUI mode contrôlé
Sous-domaine client absent post-onboardingNON (re-créer le record manuellement)

2. Objectifs

  • RPO : 30 jours (export mensuel BIND zone)
  • RTO cible : 1 heure (incl. propagation TTL)

3. Source de récupération

L’export mensuel de la zone est dans artifacts/dns-zones/snakysec.com.<YYYY-MM>.bind. Backupé dans le restic OVH+Scaleway artifacts (cf. 03-backup-strategy.md §4.4).

4. Procédure

4.1 Récupérer l’export le plus récent

make dr-shell

# Localiser le dernier export
ls -la /artifacts/dns-zones/snakysec.com.*.bind | tail -3

# Si pas dispo localement (volume HS), restorer depuis backup
/dr/restore/artifacts-restore.sh \
  --include="/artifacts/dns-zones/**" \
  --target-dir="/dr-runtime/dns-restore"

4.2 Inspection du fichier zone

cat /artifacts/dns-zones/snakysec.com.2026-04.bind
Format BIND standard :
$ORIGIN snakysec.com.
$TTL 3600
@                IN SOA  dns.ovh.net. tech.ovh.net. (
                          2026042601  ; Serial
                          86400       ; Refresh
                          3600        ; Retry
                          3600000     ; Expire
                          300 )       ; Minimum
@                IN NS   dns.ovh.net.
@                IN NS   ns.ovh.net.
@                IN A    51.91.X.Y
*                IN A    51.91.X.Y
www              IN CNAME snakysec.com.
openproject      IN A    51.91.X.Y
status           IN A    51.91.X.Y
@                IN MX   1 mx1.mail.ovh.net.
@                IN TXT  "v=spf1 include:_spf.snakysec.com -all"
_dmarc           IN TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@snakysec.com"
default._domainkey IN TXT "v=DKIM1; k=rsa; p=..."

4.3 Re-import via OVH UI (rapide, manuel)

1. Login manager.ovh.com
2. Domaines → snakysec.com → DNS Zone
3. Cliquer "Modify zone in expert mode"
4. Copier-coller le contenu du fichier .bind dans le textarea
5. Vérifier les records contre la liste affichée précédemment
6. Apply
7. OVH propage en ~5 minutes

4.4 Re-import via OVH API (automatisable)

# Depuis dr-runner (a curl + creds OVH API)
make dr-shell

# Lire les credentials OVH API depuis Vault
vault_export_dr_credentials_for_dns_restore() {
  OVH_APP_KEY=$(vault_read_dr ovh_api_app_key)
  OVH_APP_SECRET=$(vault_read_dr ovh_api_app_secret)
  OVH_CONSUMER_KEY=$(vault_read_dr ovh_api_consumer_key)
}
vault_export_dr_credentials_for_dns_restore

# Lire le fichier zone
ZONE_CONTENT=$(cat /artifacts/dns-zones/snakysec.com.2026-04.bind)

# POST le contenu via API (endpoint /domain/zone/<domain>/import)
TIMESTAMP=$(date +%s)
URL="https://eu.api.ovh.com/1.0/domain/zone/snakysec.com/import"
BODY="{\"zoneFile\":$(echo "${ZONE_CONTENT}" | jq -Rs .)}"
SIGNATURE=$(echo -n "${OVH_APP_SECRET}+${OVH_CONSUMER_KEY}+POST+${URL}+${BODY}+${TIMESTAMP}" | sha1sum | awk '{print "$1$" $1}')

curl -X POST \
  -H "X-Ovh-Application: ${OVH_APP_KEY}" \
  -H "X-Ovh-Consumer: ${OVH_CONSUMER_KEY}" \
  -H "X-Ovh-Timestamp: ${TIMESTAMP}" \
  -H "X-Ovh-Signature: ${SIGNATURE}" \
  -H "Content-Type: application/json" \
  -d "${BODY}" \
  "${URL}"
⚠️ Attention : /domain/zone/<domain>/import REMPLACE entièrement la zone. Les records ajoutés depuis le dernier export mensuel seront perdus. Privilégier la version manuelle si on a besoin de précision.

4.5 Validation

# Wait propagation TTL (300s)
sleep 60

# Test depuis une résolution externe (Google DNS)
dig @8.8.8.8 snakysec.com +short
# attendu : <NEW_VPS_IP>

dig @8.8.8.8 *.snakysec.com +short
# attendu : <NEW_VPS_IP>

dig @8.8.8.8 snakysec.com TXT +short
# attendu : SPF, DMARC, DKIM records visibles

5. Communication client

Si la zone DNS a été corrompue, les emails sortants peuvent être bloqués (SPF/DMARC fail). Ne pas envoyer d’email tant que validation §4.5 OK.
Suite à un incident de configuration DNS, certains accès à snakysec.com ont
pu être interrompus pendant N minutes. La situation est rétablie. Pour les
sous-domaines clients (votre-tenant.snakysec.com), vérifiez l'accès et
contactez-nous immédiatement si problème persistant.

6. Erreurs courantes

ErreurSolution
OVH API : “Invalid signature”Vérifier que TIMESTAMP est en secondes Unix UTC, pas en ms
Records visibles dans OVH UI mais pas résolusWait propagation TTL (5-30 min)
Sous-domaine client manquant après importLe record n’était pas dans l’export, à re-créer manuellement
MX records cassés (emails sortants en panne)Re-vérifier MX + SPF + DKIM dans la zone
VersionDateAuteur
1.02026-04-26Nicolas Schiffgens