Sécuriser un VPS Ubuntu — SSH, pare-feu ufw et Fail2ban

Partager
Sécuriser un VPS Ubuntu — SSH, pare-feu ufw et Fail2ban

Introduction

Lorsqu'on déploie un VPS exposé sur internet, la surface d'attaque est immédiate. Les bots scannent en permanence les ports standards à la recherche de cibles faciles. Cet article documente la configuration mise en place sur mon VPS Ubuntu pour durcir l'accès SSH, filtrer le trafic entrant avec ufw, et bloquer automatiquement les tentatives de brute-force avec Fail2ban.


1. Hardening SSH

Objectif

Remplacer l'authentification par mot de passe par une authentification par clé ED25519, désactiver le login root direct, et déplacer SSH sur un port non standard.

Génération de la clé ED25519 (côté client)

ssh-keygen -t ed25519 -C "label" -f ~/.ssh/id_ed25519_vps
ssh-copy-id -p 22 -i ~/.ssh/id_ed25519_vps.pub <USER>@<IP_VPS>

Paramètres clés dans /etc/ssh/sshd_config

Port <PORT_SSH>           # Port non standard, évite les scans automatiques
PermitRootLogin no        # Jamais de connexion directe en root
PasswordAuthentication no # Uniquement par clé
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
systemctl restart sshd

⚠️ Toujours garder une session ouverte pendant les modifications pour éviter de se bloquer soi-même.


2. Pare-feu ufw

apt install ufw -y
ufw default deny incoming
ufw default allow outgoing

ufw allow <PORT_SSH>/tcp  # SSH
ufw allow 80/tcp           # HTTP
ufw allow 443/tcp          # HTTPS
ufw enable

Vérification

ufw status verbose

3. Fail2ban

/etc/fail2ban/jail.local

[DEFAULT]
bantime  = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled  = true
port     = <PORT_SSH>
logpath  = /var/log/auth.log
maxretry = 3
systemctl restart fail2ban
fail2ban-client status sshd

Référence rapide

Action Commande
Statut ufw ufw status verbose
IPs bannies fail2ban-client status sshd
Débannir une IP fail2ban-client set sshd unbanip <IP>
Connexion SSH ssh -p <PORT_SSH> -i ~/.ssh/id_ed25519_vps <USER>@<DOMAINE>
Logs auth tail -f /var/log/auth.log

Conclusion

Ce triptyque SSH + ufw + Fail2ban constitue le socle minimal de tout VPS exposé. Il réduit drastiquement la surface d'attaque sans complexité excessive. La prochaine étape logique est l'ajout de CrowdSec pour une protection communautaire (voir article dédié).