CrowdSec & hardening — sécuriser un VPS en production

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