======fail2ban======
{{http://www.fail2ban.org/fail2ban_logo.png }}
[[http://www.fail2ban.org|fail2ban]] est un logiciel qui permet de bloquer les IPs (avec iptables) des machines qui dépassent un certains seuil de matches dans les logs d'un service (souvent, des tentatives de connexion ratées), pendant un certain laps de temps. Pour cela, il recherche des expressions régulières prédéfinies dans les journaux de différents logiciels : serveur SSH, serveur web apache, serveur de mail, serveur FTP, etc. Il est donc utile pour se prémunir des attaques de type force brute.
Son comportement diffère de celui du fichier ''/etc/hosts.deny'' (qui, pour mémoire, blackliste directement toute connexion issue des IPs renseignées dans ce fichier) : fail2ban, lui, puni __les abus__ avérés (et peut lever le ban au bout d'un certain temps).
=====Installation=====
aptitude install fail2ban
Sous Debian, les fichiers de configuration sont situés dans ''/etc/fail2ban'' :
* ''fail2ban.conf'' qui est la configuration du démon fail2ban
* ''jail.conf'' est la configuration par défaut. Il contient une section "[DEFAULT]" qui contient la configuration globale :
[DEFAULT]
# whitelist (IPs qui ne seront jamais blacklistées)
ignoreip = 127.0.0.1 192.168.0.0/24
bantime = 3600 # temps de blocage, en secondes (1 jour)
# Une IP est bannie si elle génère "maxretry" fails pendant les dernières "findtime" secondes
maxretry = 5 # nombre de fail avant blocage
findtime = 600 # intervalle de temps pour vérifier les logs, en secondes (10 min)
# destinataire des mails de rapports
destemail = root@localhost
mta = sendmail
...ainsi qu'une section par service ([ssh], [apache], etc...) qui peut surcharger les paramètres globaux :
[ssh]
enabled = true
port = ssh
filter = sshd # nom du filtre qui est déclaré dans le dossier
# il est possible de définir soit-même des filtres sous forme d'expressions régulières ici :
failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:\]
logpath = /var/log/auth.log # chemin vers le fichier de log du service sshd
maxretry = 6 # surcharge du paramètre maxretry
* ''filter.d/*'' est le dossier qui contient la définition des expressions régulières permettant de détecter les erreurs d'identification dans les logs
* ''action.d/'' est le fichier de description des actions entreprises lorsqu'un seuil de connexion est dépassé.
Après modification d'un fichier de conf, penser à recharger le service :
systemctl restart fail2ban || /etc/init.d/fail2ban restart
Les alertes de fail2ban sont recueillies dans le fichier de log ''/var/log/fail2ban.log'' par défaut ; lorsqu'il bloque une machine on obtient :
grep WARNING /var/log/fail2ban.log
18:2010-07-08 14:36:54,228 fail2ban.actions: WARNING [ssh] Ban 192.168.1.22
20:2010-07-08 14:46:39,376 fail2ban.actions: WARNING [ssh] Unban 192.168.1.22
=====fail2ban-client=====
Permet de voir l'état du serveur fail2ban :
fail2ban-client status
Status
|- Number of jail: 7
`- Jail list: apache-overflows, apache-noscript, ssh, openvpn, postfix, sasl, dovecot
... ou l'état d'un filtre spécifique :
fail2ban-client status ssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 0
| `- Total failed: 2
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 0
On peut arrêter/relancer une prison indépendamment des autres :
fail2ban-client stop ssh
fail2ban-client start ssh
====Ajouter un ban manuellement====
Pour ajouter une adresse IP à une prison (rappel : on liste les jails avec ''fail2ban-client status'', et le flag ''-vvv'', adaptable, permet d'afficher les détails DEBUG):
fail2ban-client -vvv set banip
# par exemple
fail2ban-client -vvv set apache-overflows banip 45.155.205.233
Pour débloquer une IP qui a été ban (dans cet exemple, dans le jail sshd) :
fail2ban-client set unbanip
# par exemple
fail2ban-client set sshd unbanip 10.0.0.1
=====fail2ban-regex=====
Permet de tester un fichier de filtre sur un fichier de log, pour voir s'il matche comme prévu :
#fail2ban-regex "ligne de log" "regex à tester"
# OU
#fail2ban-regex
fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/sasl.conf