Tous services connectés à l’Internet risquent d’être attaqués par force brute: de nombreux robots et attaquants essaient des mots de passe/utilisateurs aléatoires pour se connecter à votre serveur. Le serveur OpenSSH et le client lui-même sont assez sécurisés, mais comme tout le reste, il peut être craqué avec des attaques par force brute. Pour protéger le serveur j’utilise fail2ban qui bloque l’adresse IP pendant un certain temps après un certain nombre d’échecs de connexions.
Installation fail2ban
On va installer fail2ban sur Ubuntu 20.04 64 Bit
apt update && apt upgrade -y
sudo apt install fail2ban
Pour vérifier si il est bien installé on va vérifier status:
systemctl status fail2ban
Configuration de fail2ban
Le service fail2ban conserve ses fichiers de configuration dans /etc/fail2ban/jail.conf
Chaque fois que vous mettez à jour le programme, ce fichier sera remplacé, nous allons donc changer la copie de ce fichier et le nommer jail.local
sudo cp /etc/fail2ban/jail.{conf,local}
On va ouvrir et configurer jail.local :
nano /etc/fail2ban/jail.local
Il faut corriger paramètres situé dans la section [DEFAUT] les paramètres suivantes:
bantime – le paramètre définit l’intervalle de temps, le client sera banni. Pour bannir définitivement une IP, utilisez un nombre négatif.
maxretry est le nombre d’échecs avant qu’une IP soit bannie. La valeur par défaut est 5, ce qui devrait convenir à la plupart des utilisateurs.
findtime est la durée entre le nombre d’échecs avant qu’une interdiction ne soit définie.
Avec les paramètres par défaut, le service fail2ban bannit un client qui tente sans succès de se connecter 5 fois dans une fenêtre de 10 minutes.
Je configure:
- bantime = 120m
- findtime = 10m
- maxretry = 5
Aussi vous pouvez ajouter adresses IP, plages d’adresses IP ou hôtes que vous souhaitez exclure de l’interdiction.
Décommenter la ligne commençant par ignoreip et ajoutez vos adresses IP séparées par un espace :
Par exemple:
Si vous changez votre port SSH en 222 (par example), vous remplacerez ssh par ce numéro:
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
port = 222
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Chaque fois que vous modifiez le fichier de configuration, vous devez redémarrer le service fail2ban pour que les modifications prennent effet :
systemctl restart fail2ban
Pour afficher les IP bannie
fail2ban-client status sshd
Débloquer l’IP :
fail2ban-client set sshd unbanip 123.123.123.123
Bloquer l’IP :
fail2ban-client set sshd banip 123.123.123.123
Résolution des problèmes
Si le service Fail2ban ne démarre pas correctement ou ne fonctionne pas comme prévu, voici quelques étapes à suivre :
Vérifiez les logs de Fail2ban : Consultez les logs de Fail2ban pour identifier les erreurs possibles :
sudo journalctl -u fail2ban
ou
sudo tail -f /var/log/fail2ban.log
Vérifiez la syntaxe des fichiers de configuration : Assurez-vous qu’il n’y a pas d’erreurs de syntaxe dans les fichiers de configuration jail.local et fail2ban.conf :
sudo fail2ban-client -d
Backend incorrect : Si Fail2ban ne fonctionne pas avec le backend par défaut, essayez de définir explicitement le backend dans jail.local :
backend = systemd
ou
backend = auto
Port SSH personnalisé : Si vous avez changé le port SSH, vérifiez que le port est correctement configuré dans le fichier jail.local et que le pare-feu autorise ce port.
En suivant ces étapes, vous devriez être en mesure de résoudre la plupart des problèmes courants liés à Fail2ban.
Pour plus d’informations sur ce sujet et pour plus d’informations sur la configuration, visitez https://www.fail2ban.org/
Bonne chance!