CrowdSec & hardening — sécuriser un VPS en production
Introduction
Fail2ban protège contre les attaques localement, mais CrowdSec va plus loin : il s'appuie sur une base de réputation communautaire pour bloquer les IPs malveillantes connues avant même qu'elles tentent une attaque. Couplé à un audit de durcissement Lynis, il permet d'atteindre un niveau de sécurité solide sur un VPS en production. Cet article documente l'installation de CrowdSec et les mesures de hardening appliquées.
1. CrowdSec
Installation
curl -s https://install.crowdsec.net | bash
apt install crowdsec -y
Installation du bouncer Nginx
Le bouncer est le composant qui applique concrètement les décisions (blocage, captcha...).
apt install crowdsec-nginx-bouncer -y
Collections installées
Les collections regroupent des scénarios de détection thématiques.
cscli collections install crowdsecurity/linux
cscli collections install crowdsecurity/nginx
cscli collections install crowdsecurity/sshd
Commandes de base
cscli decisions list # IPs actuellement bloquées
cscli alerts list # historique des alertes
cscli metrics # statistiques de détection
cscli ban add ip <IP> 24h # bannir manuellement une IP
cscli decisions delete --ip <IP> # débannir une IP
Vérifier le statut
systemctl status crowdsec
systemctl status nginx-crowdsec-bouncer
2. Hardening système
Audit avec Lynis
Lynis est un outil d'audit de sécurité open source qui analyse le système et produit un score avec des recommandations.
apt install lynis -y
lynis audit system
Le rapport est disponible dans /var/log/lynis.log. L'objectif est d'atteindre un score Hardening Index ≥ 70/100.
Mesures appliquées
Désactiver les services inutiles
systemctl disable --now <SERVICE_INUTILE>
systemctl list-units --type=service --state=running # inventaire
Sécuriser les paramètres kernel (sysctl)
# /etc/sysctl.d/99-hardening.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
sysctl -p /etc/sysctl.d/99-hardening.conf
Permissions des fichiers sensibles
chmod 600 /etc/ssh/sshd_config
chmod 600 /etc/crontab
chmod 700 /root
Limiter les accès sudo
visudo # éditer /etc/sudoers de manière sécurisée
3. Vérifications de sécurité
Scan des ports ouverts
nmap -sV <IP_VPS> # depuis une machine externe
ss -tlnp # depuis le serveur lui-même
Seuls les ports strictement nécessaires doivent être ouverts (80, 443, et le port SSH personnalisé).
Test SSL
Soumettre le domaine sur SSL Labs pour obtenir un rapport détaillé. L'objectif est le grade A+.
Référence rapide
| Action | Commande |
|---|---|
| IPs bloquées par CrowdSec | cscli decisions list |
| Historique des alertes | cscli alerts list |
| Bannir une IP | cscli ban add ip <IP> <DURÉE> |
| Débannir une IP | cscli decisions delete --ip <IP> |
| Lancer un audit Lynis | lynis audit system |
| Voir les ports ouverts | ss -tlnp |
Conclusion
CrowdSec apporte une protection collective en s'appuyant sur les signalements de milliers de serveurs dans le monde. Couplé au hardening système audité par Lynis, il renforce significativement la posture de sécurité du VPS. Ces mesures complètent le socle SSH + ufw + Fail2ban mis en place précédemment.