On commence par installer fail2ban, en tapant la commande suivante en root:

Host:/home/User# apt-get install fail2ban
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Paquets suggérés :
python-gamin
Les NOUVEAUX paquets suivants seront installés :
fail2ban
0 mis à jour, 1 nouvellement installés, 0 à enlever et 21 non mis à jour.
Il est nécessaire de prendre 86,2ko dans les archives.
Après cette opération, 631ko d'espace disque supplémentaires seront utilisés.
Réception de : 1 http://ftp.fr.debian.org lenny/main fail2ban 0.8.3-2sid1 [86,2kB]
86,2ko réceptionnés en 0s (231ko/s)
Sélection du paquet fail2ban précédemment désélectionné.
(Lecture de la base de données... 20389 fichiers et répertoires déjà installés.)
Dépaquetage de fail2ban (à partir de .../fail2ban_0.8.3-2sid1_all.deb) ...
Traitement des actions différées ("triggers") pour "man-db"...
Paramétrage de fail2ban (0.8.3-2sid1) ...
Host:/home/User#

On continue par créer les dossiers pour stocker les logs de fail2ban:

Host:/home/User# mkdir /var/log/fail2ban/

Il ne nous reste plus qu'à éditer le fichier de configuration qui se trouve par défaut dans /etc/fail2ban/fail2ban.conf. Nous allons utiliser le même paradigme que dans un billet précédent, et créer des liens symboliques pour pouvoir upgrader les configurations simplement.

Nous allons modifier le fichier de configuration originel par le suivant:

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
#
# $Revision: 629 $
#
[Definition]
# Option:  loglevel
# Notes.:  Set the log level output.
#          1 = ERROR
#          2 = WARN
#          3 = INFO
#          4 = DEBUG
# Values:  NUM  Default:  3
#
loglevel = 3
# Option:  logtarget
# Notes.:  Set the log target. This could be a file, SYSLOG, STDERR or STDOUT.
#          Only one log target can be specified.
# Values:  STDOUT STDERR SYSLOG file  Default:  /var/log/fail2ban.log
#
logtarget = /var/log/fail2ban/fail2ban.log
# Option: socket
# Notes.: Set the socket file. This is used to communicate with the daemon. Do
#         not remove this file when Fail2ban runs. It will not be possible to
#         communicate with the server afterwards.
# Values: FILE  Default:  /var/run/fail2ban/fail2ban.sock
#
socket = /var/run/fail2ban/fail2ban.sock

Et le sauver dans /etc/fail2ban/fail2ban.conf.0:

Host:/home/User# vim /etc/fail2ban/fail2ban.conf.0
Host:/home/User# /etc/init.d/fail2ban stop
Host:/home/User# rm /etc/fail2ban/fail2ban.conf
Host:/home/User# ln -s /etc/fail2ban/fail2ban.conf.0 /etc/fail2ban/fail2ban.conf
Host:/home/User# /etc/init.d/fail2ban start

En effectuant ces commandes, nous arrêtons temporairement le service, pour pouvoir remplacer le fichier de configuration par le lien symbolique vers notre fichier de configuration.

Il ne nous reste plus qu'à configurer les services suivis par fail2ban. Les services sont contenus dans le fichier /etc/fail2ban/jail.conf, mais fail2ban utilise automatiquement un fichier jail.local s'il existe. Nous allons utiliser le même paradigme de numérotation des fichiers, en prenant pour base le fichier d'exemple jail.conf:

Host:/home/User# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local.0
Host:/home/User# ln -s /etc/fail2ban/jail.local.0 /etc/fail2ban/jail.local

On édite ensuite notre fichier, pour être prévenu par mail d'intrusions possibles:

Host:/home/User# vim /etc/fail2ban/jail.local.0

Première modification à faire: modifier ignoreip pour intégrer vos IPs statiques en plus du loopback. Plusieurs notations sont possibles, comme par exemple:

ignoreip = 127.0.0.1 88.88.88.88 192.168.1.0/24

Dans cette notation, vous ne bannirez pas les tentatives provenant du loopback, de l'ip statique 88.88.88.88 ni des IPs au format 192.168.1.xxx (notation CIDR).

bantime = 600

bantime indique le temps de bannissement, en secondes; par défaut, il est réglé sur 10 minutes (ce qui me semble un bon compromis).

maxretry = 3

maxretry indique le nombre de tentatives échouées avant de se faire bannir.

Personnellement, vu que j'ai "sécurisé" mes IPs de provenance, je règle ces valeurs sur 3600 secondes et une tentative.

destemail = votre@email.com

Ici vous mettez votre adresse email, pour être prévenu en cas de problème.

On a fini maintenant avec la configuration (minimale) de fail2ban. J'espère que ce tutoriel vous sera suffisant pour appréhender la sécurisation un peu plus en profondeur de votre dédibox sous Debian.