Cours RechercherCtrl K

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.

25 min

À 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 crowdsec dé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 attaques

Ne 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 perso

Astuce : 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 list pour 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
  1. installe l'agent crowdsec ;
  2. regarde les adresses déjà bannies ;
  3. vérifie si un bouncer est branché… et installe crowdsec-firewall-bouncer-iptables pour que les décisions soient vraiment appliquées ;
  4. vérifie à nouveau la liste des bouncers.
commandes.sh
eleve@cours: ~

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
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

CrowdSec 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).

  1. bannis 192.0.2.66 pour 48h, avec une raison ;
  2. crée une liste blanche perso et ajoute-y 198.51.100.10 (cela retire aussi son blocage) ;
  3. vérifie la liste des décisions.
commandes.sh
eleve@cours: ~

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
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

Quiz

1À quoi sert le bouncer ?
2Comment éviter de te bannir toi-même ?
3Que montre sudo cscli decisions list ?