Fail2Ban

Fail2ban est un outil en python très pratique qui va inspecter vos logs de connexion afin de bannir des adresses IP au niveau de votre pare-feu. Si l’intégration au niveau de Linux se fait facilement, sous FreeBSD elle nécessite un petit peu plus de modifications. Nous allons ici intégrer fail2ban avec Packet Filter sous FreeBSD.

Installation

Installez tout d’abord le package/port py27-fail2ban

pkg install py27-fail2ban

ou

cd /usr/ports/security/py-fail2ban
make install

Configuration

Nous ne configurerons pas ici la base de PF, nous considérerons que vous avez déjà un Packet Filter opérationnel. On va dans un premier temps configurer votre Packet Filter afin de créer un conteneur d’adresses bloquées. En haut de votre fichier /etc/pf.conf créez une table persistante (elle ne sera pas effacée à chaque rechargement des règles PF)

table <banssh> persist

Créez ensuite une règle de blocage précédant votre règle d’autorisation fail2ban block in quick inet proto tcp from to self port ssh pass in quick inet proto tcp to self port ssh On va maintenant créer un filtre fail2ban associé à SSH et le binder sur PF. Créez le fichier /usr/local/etc/fail2ban/jail.d/ssh-pf.conf et associez lui le contenu suivant.

[ssh-pf]
enabled  = true
filter   = sshd
action   = pf
logpath  = /var/log/auth.log
findtime  = 600
maxretry = 3
bantime  = 86400

On créée ici un filtre sur le démon sshd qui va effectuer l’action pf. On bannit ici pour une durée d’une journée (86400 secondes) Modifiez ensuite le fichier /usr/local/etc/fail2ban/action.d/pf.conf en éditant la ligne tablename

tablename = banssh

Enfin activez et lancez le service fail2ban

sysrc fail2ban_enable=YES
service fail2ban start

Vérifier les IP bloquées

Pour vérifier les adresses IP bloquées, interrogez la table PF de la manière suivante

pfctl -t banssh -T show