Sécuriser un serveur Leçon 4
Bloquer les attaques avec CrowdSec
Repérer automatiquement les adresses qui attaquent, et les bloquer au pare-feu.
À la fin de cette leçon, tu sauras
- Comprendre la différence entre détecter et bloquer
- Installer CrowdSec et son « bouncer » pare-feu
- Lire, ajouter et retirer des blocages ; protéger sa propre adresse
Le principe
Même avec un bon pare-feu, le port 22 et le site restent ouverts : des robots y essaient des mots de passe ou cherchent des pages vulnérables. CrowdSec lit les journaux du serveur, reconnaît ces comportements (scénarios : « 10 mots de passe faux en 1 minute », « recherche de /wp-login.php »…) et décide de bannir l'adresse pour quelques heures.
Il fonctionne en deux morceaux :
- l'agent
crowdsecdétecte et prend des décisions ; - le bouncer (« videur ») applique ces décisions, par exemple dans le pare-feu. Sans bouncer, CrowdSec voit tout mais ne bloque rien !
Les adresses bannies sont partagées (anonymement) avec la communauté : ton serveur profite aussi des attaques vues ailleurs. C'est le « crowd » de CrowdSec. Il remplace avantageusement l'ancien fail2ban.
sudo apt install crowdsec # l'agent
sudo apt install crowdsec-firewall-bouncer-iptables # le videur pare-feu
sudo cscli collections list # ce qui est surveillé (linux, sshd…)
sudo cscli collections install crowdsecurity/nginx # surveiller aussi nginx
sudo systemctl reload crowdsec
sudo cscli bouncers list # le videur est-il branché ?Les décisions
sudo cscli decisions list # qui est banni, pourquoi, jusqu'à quand
sudo cscli decisions add --ip 192.0.2.66 --duration 24h --reason "scan du site"
sudo cscli decisions delete --ip 192.0.2.66 # débannir
sudo cscli alerts list # l'historique des attaquesNe pas se bannir soi-même
Trois mots de passe faux de ta part, et c'est toi qui es bloqué. Une liste blanche (allowlist) protège tes adresses :
sudo cscli allowlists create perso -d "Mes adresses"
sudo cscli allowlists add perso 198.51.100.10
sudo cscli allowlists inspect persoAstuce : les adresses commençant par 192.0.2., 198.51.100. et 203.0.113. sont réservées aux exemples et à la documentation : elles n'appartiennent à personne. C'est pour ça qu'on les utilise dans ce cours.
À retenir
- L'agent CrowdSec lit les journaux et décide ; le bouncer applique les blocages.
- Sans bouncer, rien n'est bloqué :
sudo cscli bouncers listpour vérifier. sudo cscli decisions list / add --ip … --duration … / delete --ip ….- Une liste blanche évite de se bannir soi-même.
- Les collections disent quoi surveiller :
linux,sshd,nginx,caddy…
Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)
Exercice 1 · Installer la protection
Facile ✓ Réussi- installe l'agent
crowdsec; - regarde les adresses déjà bannies ;
- vérifie si un bouncer est branché… et installe
crowdsec-firewall-bouncer-iptablespour que les décisions soient vraiment appliquées ; - vérifie à nouveau la liste des bouncers.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : crowdsec est installé
- À faire : Les décisions sont affichées
- À faire : Le bouncer pare-feu est installé
- À faire : La liste des bouncers est vérifiée après l'installation
Bravo, cet exercice est réussi !
- Indice 1 :
sudo apt install crowdsec, puissudo cscli decisions list. - Indice 2 :
sudo cscli bouncers listrépond « No bouncers found » : rien n'est bloqué pour l'instant. - Indice 3 :
sudo apt install crowdsec-firewall-bouncer-iptables, puis à nouveausudo cscli bouncers list.
Toujours bloqué ? Voir une solution
sudo apt install crowdsec
sudo cscli decisions list
sudo cscli bouncers list
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list Exercice 2 · Bannir, débannir, protéger
Moyen ✓ RéussiCrowdSec est installé. En lisant les journaux, tu remarques que 192.0.2.66 fouille ton site à la recherche de failles. Par ailleurs, ton adresse 198.51.100.10 vient d'être bannie par erreur (tu t'es trompé de mot de passe).
- bannis
192.0.2.66pour48h, avec une raison ; - crée une liste blanche
persoet ajoute-y198.51.100.10(cela retire aussi son blocage) ; - vérifie la liste des décisions.
Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.
Consignes à réussir
- À faire : 192.0.2.66 est banni
- À faire : Pour 48 heures
- À faire : 198.51.100.10 est dans la liste blanche perso
- À faire : 198.51.100.10 n'est plus bloqué
- À faire : Les décisions sont vérifiées
Bravo, cet exercice est réussi !
- Indice 1 :
sudo cscli decisions add --ip 192.0.2.66 --duration 48h --reason "scan du site". - Indice 2 :
sudo cscli allowlists create perso -d "Mes adresses", puissudo cscli allowlists add perso 198.51.100.10. - Indice 3 : Pour finir :
sudo cscli decisions list.
Toujours bloqué ? Voir une solution
# état du serveur (ne pas modifier)
sudo apt install crowdsec
sudo cscli decisions add --ip 198.51.100.10 --reason "ssh-bf"
# à toi :
sudo cscli decisions add --ip 192.0.2.66 --duration 48h --reason "scan du site"
sudo cscli allowlists create perso -d "Mes adresses"
sudo cscli allowlists add perso 198.51.100.10
sudo cscli decisions list