Skip to content

Latest commit

Β 

History

History
347 lines (256 loc) Β· 9.53 KB

File metadata and controls

347 lines (256 loc) Β· 9.53 KB

🌐 Configuration AXFR - Récupération automatique des domaines .ch

Ce guide explique comment configurer la rΓ©cupΓ©ration automatique de tous les domaines .ch via transfert de zone AXFR.

πŸ“‹ PrΓ©requis

Installer dnsutils (pour la commande dig)

sudo apt update
sudo apt install -y dnsutils

VΓ©rifier l'installation:

dig -v

πŸ§ͺ Test manuel

1. Tester la rΓ©cupΓ©ration des domaines

cd /opt/oldsite-scanner
source venv/bin/activate
python -m backend.fetch_ch_domains

Cette commande va:

  1. βœ… Tenter un AXFR sur zonedata.switch.ch
  2. βœ… Si Γ©chec, essayer des serveurs alternatifs (ns1.nic.ch, ns2.nic.ch, etc.)
  3. βœ… CrΓ©er/mettre Γ  jour domains_ch.txt avec tous les domaines trouvΓ©s
  4. βœ… Si tout Γ©choue, conserver le fichier existant (pas d'erreur bloquante)

2. VΓ©rifier le fichier gΓ©nΓ©rΓ©

# Voir le nombre de domaines
wc -l domains_ch.txt

# Voir les premiers domaines
head -20 domains_ch.txt

# Voir les derniers domaines
tail -20 domains_ch.txt

3. Tester le scan complet

# Scanner 10 domaines pour tester
python -m backend.scan_ch_sites --limit 10

# Scanner 100 domaines
python -m backend.scan_ch_sites --limit 100

πŸ€– Automatisation avec systemd

Installation

# Copier les nouveaux services
sudo cp deployment/oldsites-fetch-domains.service /etc/systemd/system/
sudo cp deployment/oldsites-full-scan.service /etc/systemd/system/
sudo cp deployment/oldsites-full-scan.timer /etc/systemd/system/

# Recharger systemd
sudo systemctl daemon-reload

# Activer le timer (scan quotidien Γ  3h00)
sudo systemctl enable oldsites-full-scan.timer
sudo systemctl start oldsites-full-scan.timer

# VΓ©rifier que le timer est actif
sudo systemctl list-timers | grep oldsites

Test manuel du pipeline complet

# Lancer manuellement le pipeline (fetch + scan)
sudo systemctl start oldsites-full-scan.service

# Voir les logs en temps rΓ©el
sudo journalctl -u oldsites-full-scan -f

πŸ“Š Services disponibles

1. oldsites-fetch-domains.service

Récupère uniquement les domaines via AXFR (sans scanner).

# Lancer
sudo systemctl start oldsites-fetch-domains.service

# Logs
sudo journalctl -u oldsites-fetch-domains -n 50

2. oldsites-full-scan.service

Pipeline complet: rΓ©cupΓ©ration des domaines + scan (1000 domaines par dΓ©faut).

# Lancer
sudo systemctl start oldsites-full-scan.service

# Logs
sudo journalctl -u oldsites-full-scan -f

3. oldsites-full-scan.timer

Timer pour exΓ©cuter automatiquement le pipeline tous les jours Γ  3h00.

# Statut
sudo systemctl status oldsites-full-scan.timer

# Voir quand sera la prochaine exΓ©cution
sudo systemctl list-timers | grep oldsites

# DΓ©sactiver
sudo systemctl stop oldsites-full-scan.timer
sudo systemctl disable oldsites-full-scan.timer

βš™οΈ Configuration

Modifier le nombre de domaines scannΓ©s

Γ‰diter /etc/systemd/system/oldsites-full-scan.service:

# Scanner 5000 domaines au lieu de 1000
ExecStart=/opt/oldsite-scanner/venv/bin/python -m backend.scan_ch_sites --limit 5000

# Scanner TOUS les domaines (attention: peut prendre des heures!)
ExecStart=/opt/oldsite-scanner/venv/bin/python -m backend.scan_ch_sites

Puis:

sudo systemctl daemon-reload

Modifier la frΓ©quence du scan

Γ‰diter /etc/systemd/system/oldsites-full-scan.timer:

# Toutes les 6 heures
OnCalendar=*-*-* 00,06,12,18:00:00

# Tous les lundis Γ  3h
OnCalendar=Mon *-*-* 03:00:00

# Tous les jours Γ  3h et 15h
OnCalendar=*-*-* 03,15:00:00

Puis:

sudo systemctl daemon-reload
sudo systemctl restart oldsites-full-scan.timer

Modifier le timeout

Si le scan prend trop de temps, augmenter le timeout dans oldsites-full-scan.service:

# 4 heures au lieu de 2
TimeoutStartSec=14400

πŸ” DΓ©pannage

AXFR Γ©choue

# Tester manuellement avec dig
dig @zonedata.switch.ch ch AXFR

# Essayer un autre serveur
dig @ns1.nic.ch ch AXFR
dig @a.nic.ch ch AXFR

Causes possibles:

  • ❌ Le serveur refuse les transferts AXFR (politique de sΓ©curitΓ©)
  • ❌ Firewall bloque le port 53
  • ❌ ProblΓ¨me rΓ©seau

Solutions:

  1. Le script essaie automatiquement plusieurs serveurs
  2. Si tout Γ©choue, il conserve l'ancien fichier domains_ch.txt
  3. Vous pouvez crΓ©er manuellement domains_ch.txt avec vos domaines

dig n'est pas installΓ©

sudo apt install -y dnsutils

Permissions

sudo chown -R www-data:www-data /opt/oldsite-scanner
sudo chmod +x /opt/oldsite-scanner/backend/fetch_ch_domains.py

Le scan ne dΓ©marre pas

# VΓ©rifier les logs
sudo journalctl -u oldsites-full-scan -n 100

# VΓ©rifier que le fichier domains_ch.txt existe
ls -lh /opt/oldsite-scanner/domains_ch.txt

# Tester manuellement
cd /opt/oldsite-scanner
source venv/bin/activate
python -m backend.fetch_ch_domains
python -m backend.scan_ch_sites --limit 10

πŸ“ˆ Monitoring

Voir les statistiques

# Nombre de domaines dans le fichier
wc -l /opt/oldsite-scanner/domains_ch.txt

# Nombre de scans dans la base
sqlite3 /opt/oldsite-scanner/oldsites.db "SELECT COUNT(*) FROM scans;"

# Derniers scans
sqlite3 /opt/oldsite-scanner/oldsites.db "SELECT domain, score FROM scans s JOIN domains d ON d.id=s.domain_id ORDER BY s.scan_time DESC LIMIT 10;"

Logs

# Logs de rΓ©cupΓ©ration des domaines
sudo journalctl -u oldsites-fetch-domains -n 50

# Logs du scan complet
sudo journalctl -u oldsites-full-scan -f

# Logs de l'API
sudo journalctl -u oldsites-api -f

🎯 Workflow complet

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Timer systemd (tous les jours Γ  3h00)                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  1. RΓ©cupΓ©ration des domaines (fetch_ch_domains.py)        β”‚
β”‚     - Tente AXFR sur zonedata.switch.ch                    β”‚
β”‚     - Si Γ©chec: essaie ns1.nic.ch, ns2.nic.ch, etc.        β”‚
β”‚     - Si Γ©chec: conserve l'ancien domains_ch.txt           β”‚
β”‚     - CrΓ©e/met Γ  jour domains_ch.txt                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  2. Scan des domaines (scan_ch_sites.py)                   β”‚
β”‚     - Lit domains_ch.txt                                    β”‚
β”‚     - Scanne 1000 domaines (configurable)                  β”‚
│     - Détecte les sites obsolètes                          │
β”‚     - Enregistre dans oldsites.db                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  3. RΓ©sultats disponibles                                   β”‚
β”‚     - Interface web: http://IP:8000                         β”‚
β”‚     - API: http://IP:8000/api/scans                        β”‚
β”‚     - Base de donnΓ©es: oldsites.db                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ’‘ Recommandations

Pour un scan complet de tous les domaines .ch

Si AXFR retourne 100'000+ domaines:

  1. Augmenter la limite progressivement:

    # Jour 1: 1000 domaines
    # Jour 2: 2000 domaines
    # Jour 3: 5000 domaines
    # etc.
  2. Augmenter la concurrence: Γ‰diter /opt/oldsite-scanner/backend/config.py:

    CONCURRENCY = 100  # Au lieu de 30
  3. Augmenter le timeout systemd:

    TimeoutStartSec=28800  # 8 heures
  4. Surveiller les ressources:

    htop
    df -h

Pour un scan ciblΓ©

Si vous voulez scanner seulement certains types de sites:

  1. CrΓ©er un fichier personnalisΓ©:
    # Filtrer seulement les domaines courts (potentiellement plus vieux)
    grep -E '^[a-z]{3,6}\.ch$' domains_ch.txt > domains_short.txt
    
    # Scanner ce fichier
    python -m backend.scan_ch_sites --domains-file domains_short.txt

πŸ”’ SΓ©curitΓ©

  • βœ… Le script tourne avec l'utilisateur www-data (pas root)
  • βœ… Pas de donnΓ©es sensibles stockΓ©es
  • βœ… User-Agent identifiable dans les requΓͺtes
  • βœ… Respect des timeouts pour ne pas surcharger les serveurs

πŸ“ž Support

En cas de problème:

  1. VΓ©rifier les logs: sudo journalctl -u oldsites-full-scan -n 100
  2. Tester manuellement: python -m backend.fetch_ch_domains
  3. Consulter la documentation: README.md