Installer et configurer SSH + Fail2Ban pour Debian
Ce petit guide permet d'installer et configurer facilement et rapidement SSH et Fail2Ban pour Debian, tout cela soupoudré d'un peu de bonne pratique.
Installer OpenSSH
Exécutez cette commande pour installer le paquet du serveur SSH s'il n'est pas déjà installé sur votre système.
sudo apt install openssh-server -y
Activez le service SSH au démarrage.
sudo systemctl enable ssh
Démarrez le service SSH.
sudo systemctl start ssh
Vérifiez le status du service SSH.
sudo systemctl status ssh
Modifier le port par défaut de SSH et désactiver la connexion SSH en root
Éditez le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config
Paramétrez ces deux lignes.
Remplacez "22" par le port de votre choix.
Port 22
PermitRootLogin no
Afficher une bannière lors de la connexion en SSH
Cette bannière s'affichera lors de la connexion de l'utilisateur.
Éditez le fichier de configuration SSH.
sudo nano /etc/ssh/sshd_config
Paramétrez cette ligne.
Banner /etc/issue.net
Éditez le fichier de bannière SSH.
sudo nano /etc/issue.net
Voici un exemple de bannière d'avant-connexion :
*********************************************************
WARNING: Unauthorized access is prohibited!
This system is monitored. All activity is logged.
Disconnect immediately if you are not an authorized user.
*********************************************************
Redémarrez le service SSH.
sudo systemctl restart ssh
Installer Fail2Ban
Exécutez cette commande pour installer le paquet de Fail2Ban.
sudo apt install fail2ban -y
Activez le service Fail2Ban au démarrage.
sudo systemctl enable fail2ban
Démarrez le service Fail2Ban.
sudo systemctl start fail2ban
Vérifiez le status du service Fail2Ban.
sudo systemctl status fail2ban
Créer une jail par défaut et configurer Fail2Ban pour SSH
Créer un nouveau fichier de configuration de jail.
sudo nano /etc/fail2ban/jail.d/jail.local
Paramétrez ces lignes dans le fichier de la jail.
[DEFAULT]
ignoreip = 127.0.0.1
findtime = 5m
bantime = 24h
maxretry = 3
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
ignoreip => IPs ignorées, séparées par des virgules
findtime => Durée durant laquelle une anomalie est recherchée dans les logs
bantime => Durée de bannissement d'une IP
maxretry => Maximum d'essais avant un bannissement durant le temps imparti défini par findtime
Redémarrez le service Fail2Ban.
sudo systemctl restart fail2ban
Vérifiez les jails Fail2Ban actives.
sudo fail2ban-client status
Bonus
Voir le status d'une jail et les IPs bannies.
sudo fail2ban-client status NOM_DE_LA_JAIL
Débannir une IP d'une jail.
sudo fail2ban-client set NOM_DE_LA_JAIL unbanip IP
Bannir une IP d'une jail.
sudo fail2ban-client set NOM_DE_LA_JAIL banip IP