- Nouvelle structure : linux-essentials/ et forgejo/ - Nouveau guide : architecture-filesystem.md (comprendre /etc, /var, etc.) - Déplacement et renommage des guides existants - README pour chaque dossier - Suppression des sections auteurs Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Quick Start : Sécuriser Forgejo contre les bots (15 min)
Problème
Bots qui téléchargent massivement des archives → Disque saturé (47G en 24-48h)
Solution en 3 étapes
1️⃣ Fail2ban : Ban plus rapide (3 min)
sudo nano /etc/fail2ban/jail.d/forgejo.conf
Changez ces valeurs :
maxretry = 8 # Au lieu de 20
bantime = 21600 # Au lieu de 3600
Ajoutez (si absent) :
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 604800
sudo systemctl restart fail2ban
2️⃣ Forgejo : Rate limit + Expiration (3 min)
nano /home/debian/forgejo/data/gitea/conf/app.ini
Changez ces valeurs :
[api]
RATE_LIMIT_BURST = 20 # Au lieu de 100
[repository.local]
ARCHIVE_EXPIRY = 3600 # Au lieu de 604800
docker restart forgejo
3️⃣ Cron : Nettoyage plus fréquent (2 min)
sudo crontab -e
Remplacez la ligne existante par :
0 */6 * * * find /home/debian/forgejo/data/gitea/repo-archive -type f -mmin +360 -delete
Nettoyage initial
# Voir la taille
du -sh /home/debian/forgejo/data/gitea/repo-archive
# Nettoyer maintenant
find /home/debian/forgejo/data/gitea/repo-archive -type f -delete
# Vérifier
du -sh /home/debian/forgejo/data/gitea/repo-archive
Vérification quotidienne
# Taille du cache (objectif : < 5G)
du -sh /home/debian/forgejo/data/gitea/repo-archive
# IP bannies (doit augmenter)
sudo fail2ban-client status forgejo-archive
# Top 5 IP actives
docker logs forgejo --since 24h | grep "archive" | grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn | head -5
Résultat attendu
| Avant | Après |
|---|---|
| 47G de cache | 2-3G max |
| 20 archives avant ban | 8 archives avant ban |
| Ban 1h | Ban 6h (puis 12h, 24h...) |
| 100 requêtes/min | 20 requêtes/min |
| Archives gardées 7j | Archives supprimées après 1h |
Dépannage
Le cache se remplit encore ?
# Voir qui télécharge
docker logs forgejo --since 1h | grep "archive" | grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn
# Bannir manuellement
sudo fail2ban-client set forgejo-archive banip IP_SUSPECTE
# Vérifier Fail2ban
sudo fail2ban-client status forgejo-archive
Fail2ban ne bannit pas ?
# Tester la regex
sudo fail2ban-regex /var/lib/docker/containers/.../...json.log /etc/fail2ban/filter.d/forgejo-archive.conf
# Logs Fail2ban
sudo tail -f /var/log/fail2ban.log
Pour plus de détails, voir le guide complet : bloquer-telechargements-abusifs.md