« Protéger son serveur des attaques par brute force avec fail2ban » : différence entre les versions

De Linux Server Wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(26 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Category:serveur]]
[[Category:debian]]
[[Category:debian]]
[[Category:security]]
Fail2ban est un petit outil qui permet de surveiller les erreurs d'authentification répétée dans les fichiers logs de plusieurs services. Après un nombre défini d'authentification ratée, fail2ban banni temporairement l'ip ayant essayé de se loguer.
Fail2ban est un petit outil qui permet de surveiller les erreurs d'authentification répétée dans les fichiers logs de plusieurs services. Après un nombre défini d'authentification ratée, fail2ban banni temporairement l'ip ayant essayé de se loguer.


Ligne 9 : Ligne 11 :
=Configuration=
=Configuration=


Le fichier <code>/etc/fail2ban/jail.conf</code> permet de configurer les options par défaut de fail2ban. Ajoutez les adresses ip et ip6 de votre serveur à la directive <code>ignoreip</code> pour éviter que le serveur se bannisse lui même.
Le fichier <code>/etc/fail2ban/jail.conf</code> contient les options de configuration par défaut de fail2ban.
Entrez l'adresse email à laquelle vous souhaitez envoyer les alertes à la ligne <code>destemail</code>. Personnellement, j'utilise une mailing-list centraliser les mails de fail2ban.<br />
Enfin, changez la ligne <code>action =</code> en :
<pre>action = %(action_mwl)s</pre>


La suite du fichier de configuration est divisée est section. Voici la configuration de ma section [ssh] :
Copiez les directives qui vous intéressent dans le fichier <code>/etc/fail2ban/jail.local</code> afin de ne pas modifier la configuration par défaut du programme. Considérez en particulier :
* <code>ignoreip</code> suivi d'une liste d'adresses ip qui ne seront jamais banni
* <code>destemail</code> suivi de l'adresse email où les alertes seront envoyées
* <code>action</code> que vous définirez selon les choix proposés par fail2ban.
 
Voici mon fichier <code>/etc/fail2ban/jail.local</code> :
<pre>
[DEFAULT]
ignoreip = 127.0.0.1 ip_du_serveur votre_ip
bantime  = 1800
maxretry = 3
 
destemail = security@list.domain.tld
 
action = %(action_mwl)s
</pre>
 
Si vous souhaitez modifier d'autres fichiers de configuration de fail2ban, copiez le fichier en question en changeant l'extension de <code>.conf</code> à <code>.local</code>. Vous pourrez ensuite modifier le fichier .local et éviter de toucher à la configuration par défaut de fail2ban.
 
=Faire tourner fail2ban en tant qu'utilisateur plutot que root=
 
<pre>aptitude install fail2ban sudo</pre>
 
==Si vous êtes sous debian squeeze==
Modifiez le fichier <code>/etc/init.d/fail2ban</code> : localisez la ligne contenant <code>start-stop-daemon</code> et modifiez comme suit (on ajoute 3 lignes et on modifie l'option du --chuid de la ligne start-stop-daemon) :
<pre>
        chown fail2ban /var/run/fail2ban
        touch /var/log/fail2ban.log
        chown fail2ban /var/log/fail2ban.log
 
        start-stop-daemon --start --quiet --chuid fail2ban --exec $DAEMON -- \
</pre>
 
==Si vous êtes sous debian wheezy ou jessie==
Modifiez <code>/etc/default/fail2ban</code> :
<pre>FAIL2BAN_USER="fail2ban"</pre>
 
==Suite quelque soit votre distribution==
 
Créez l'utilisateur :
<pre>useradd --system --no-create-home --home-dir / --groups adm fail2ban
chown fail2ban /var/log/fail2ban.log
</pre>
 
Modifiez <code>/etc/logrotate.d/fail2ban</code> :
<pre>create 640 fail2ban adm</pre>
 
Créez le fichier <code>/etc/sudoers.d/fail2ban</code> contenant :
<pre>
<pre>
[ssh]
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -N fail2ban-[A-Za-z0-9]*
enabled = true
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -A fail2ban-[A-Za-z0-9]* -j RETURN
port    = ssh
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I INPUT -p [A-Za-z0-9]* -m multiport --dports [A-Za-z0-9]* -j fail2ban-[A-Za-z0-9]*
filter  = sshd
 
logpath  = /var/log/auth.log
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -D INPUT -p [A-Za-z0-9]* -m multiport --dports [A-Za-z0-9]* -j fail2ban-[A-Za-z0-9]*
maxretry = 6
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -F fail2ban-[A-Za-z0-9]*
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -X fail2ban-[A-Za-z0-9]*
 
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -n -L INPUT
 
#debian wheezy/squeeze
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j DROP
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -D fail2ban-[A-Za-z0-9]* -s * -j DROP
 
#debian jessie
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j REJECT --reject-with icmp-port-unreachable
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j REJECT --reject-with icmp-port-unreachable
</pre>
</pre>
<pre>chmod 0440 /etc/sudoers.d/fail2ban</pre>
Enfin, modifiez le fichier <code>/etc/fail2ban/action.d/iptables-multiport.conf</code> en remplaçant toutes les occurences à <code>iptables</code> par <code>sudo iptables</code>
Ajoutez un alias pour l'utilisateur iptables :
<pre>
echo fail2ban:root >> /etc/aliases
postalias /etc/aliases</pre>

Dernière version du 16 décembre 2015 à 20:13

Fail2ban est un petit outil qui permet de surveiller les erreurs d'authentification répétée dans les fichiers logs de plusieurs services. Après un nombre défini d'authentification ratée, fail2ban banni temporairement l'ip ayant essayé de se loguer.

Installation

Installez fail2ban :

aptitude install fail2ban

Configuration

Le fichier /etc/fail2ban/jail.conf contient les options de configuration par défaut de fail2ban.

Copiez les directives qui vous intéressent dans le fichier /etc/fail2ban/jail.local afin de ne pas modifier la configuration par défaut du programme. Considérez en particulier :

  • ignoreip suivi d'une liste d'adresses ip qui ne seront jamais banni
  • destemail suivi de l'adresse email où les alertes seront envoyées
  • action que vous définirez selon les choix proposés par fail2ban.

Voici mon fichier /etc/fail2ban/jail.local :

[DEFAULT]
ignoreip = 127.0.0.1 ip_du_serveur votre_ip
bantime  = 1800
maxretry = 3

destemail = security@list.domain.tld

action = %(action_mwl)s

Si vous souhaitez modifier d'autres fichiers de configuration de fail2ban, copiez le fichier en question en changeant l'extension de .conf à .local. Vous pourrez ensuite modifier le fichier .local et éviter de toucher à la configuration par défaut de fail2ban.

Faire tourner fail2ban en tant qu'utilisateur plutot que root

aptitude install fail2ban sudo

Si vous êtes sous debian squeeze

Modifiez le fichier /etc/init.d/fail2ban : localisez la ligne contenant start-stop-daemon et modifiez comme suit (on ajoute 3 lignes et on modifie l'option du --chuid de la ligne start-stop-daemon) :

        chown fail2ban /var/run/fail2ban
        touch /var/log/fail2ban.log
        chown fail2ban /var/log/fail2ban.log

        start-stop-daemon --start --quiet --chuid fail2ban --exec $DAEMON -- \

Si vous êtes sous debian wheezy ou jessie

Modifiez /etc/default/fail2ban :

FAIL2BAN_USER="fail2ban"

Suite quelque soit votre distribution

Créez l'utilisateur :

useradd --system --no-create-home --home-dir / --groups adm fail2ban
chown fail2ban /var/log/fail2ban.log

Modifiez /etc/logrotate.d/fail2ban :

create 640 fail2ban adm

Créez le fichier /etc/sudoers.d/fail2ban contenant :

fail2ban ALL=(root) NOPASSWD:/sbin/iptables -N fail2ban-[A-Za-z0-9]*
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -A fail2ban-[A-Za-z0-9]* -j RETURN
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I INPUT -p [A-Za-z0-9]* -m multiport --dports [A-Za-z0-9]* -j fail2ban-[A-Za-z0-9]*

fail2ban ALL=(root) NOPASSWD:/sbin/iptables -D INPUT -p [A-Za-z0-9]* -m multiport --dports [A-Za-z0-9]* -j fail2ban-[A-Za-z0-9]*
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -F fail2ban-[A-Za-z0-9]*
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -X fail2ban-[A-Za-z0-9]*

fail2ban ALL=(root) NOPASSWD:/sbin/iptables -n -L INPUT

#debian wheezy/squeeze
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j DROP
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -D fail2ban-[A-Za-z0-9]* -s * -j DROP

#debian jessie
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j REJECT --reject-with icmp-port-unreachable
fail2ban ALL=(root) NOPASSWD:/sbin/iptables -I fail2ban-[A-Za-z0-9]* 1 -s * -j REJECT --reject-with icmp-port-unreachable
chmod 0440 /etc/sudoers.d/fail2ban

Enfin, modifiez le fichier /etc/fail2ban/action.d/iptables-multiport.conf en remplaçant toutes les occurences à iptables par sudo iptables

Ajoutez un alias pour l'utilisateur iptables :

echo fail2ban:root >> /etc/aliases
postalias /etc/aliases