fail2ban est utilisé pour lire les log de tous les autres démons et bannir des adresses IP s'ils ont échoués à plusieurs reprises de se connecter.
On installe simplement :
aptitude install fail2ban
Puis dans le fichier /etc/fail2ban/jail.conf nous allons paramétré chacun de nos règles pour tous les différents services que propose notre serveur. Certaines sont déjà pre-paramétrées, mais nous allons aussi en ajouter d'autres.
destemail = yoy@email.com
action = %(action_mwl)s
Puis dans le fichier, votre trouver des sections. Il faut simplement mettre enabled = true pour activer un filtre. Dans notre cas, vous pouvez directement activer pam-generic, apache, apache-noscript, apache-overflows, postfix and sasl. Bien sûr, vous pouvez modifier le nombre d'essai, le temps de ban, etc...
Pour apache, vous aurez compris qu'on ne peut pas utiliser la configuration par défaut. En effet, nous n'utilisons pas apache ! Mais les logs de Nginx sont similaire à ceux d'Apache. Il suffit simplement d'indiquer le bon chemin vers les fichiers de logs. Selon la configuration de chacun de vos virtualhost, utilisez :
logpath = /var/log/nginx/*error.log /var/log/nginx/*/*error.log
D'autre part, pour postfix, je désactive l'envoi de l'alerte par email car il y en aurait beaucoup trop. Dans la section de postfix :
action = %(action_)s
Enfin, le chemin du sasl n'est pas bon car on utilise postix. Comme indiqué dans le fichier en commentaire, il faut utiliser :
logpath = /var/log/warn.log
Puis ajoutons quelques règles qui ne sont pas par défaut dans fail2ban, mais que j'ai trouvé ici et là.
A la fin du fichier, ajoutez :
[apache-badbots]
enabled = true
port = http,https
filter = apache-badbots
logpath = /var/log/nginx/*error.log /var/log/nginx/*/*error.log
bantime = 86400
maxretry = 1
[apache-w00tw00t]
enabled = true
filter = apache-w00tw00t
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/nginx/*error.log /var/log/nginx/*/*error.log
maxretry = 1
bantime = 86400
[apache-404]
enabled = true
filter = apache-404
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/nginx/*error.log /var/log/nginx/*/*error.log
maxretry = 10
bantime = 86400
[pdns]
enabled = true
filter = pdns
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/pdns.log
maxretry = 1
bantime = 86400
[pdns-recursion]
enabled = true
filter = pdns-recursion
port = all
banaction = iptables-allports
port = anyport
logpath = /var/log/pdns.log
maxretry = 1
bantime = 86400
Et ensuite, il faut créer les fichiers filter de chacun de ces nouveaux filtres.
Le fichier /etc/fail2ban/filter.d/apache-404.conf :
[Definition]
failregex = ˆ<HOST> - - .* 404 .* "-" .*
ignoreregex =
Le fichier /etc/fail2ban/filter.d/apache-w00tw00t.conf :
[Definition]
failregex = ˆ<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".*
ignoreregex =
Le fichier /etc/fail2ban/filter.d/pdns.conf :
[Definition]
failregex = .*AXFR of domain '.*' denied to <HOST>
ignoreregex =
Le fichier /etc/fail2ban/filter.d/pdns-recursion.conf :
[Definition]
failregex = .*Not authoritative for '.*' sending servfail to <HOST> (recursion was desired)
ignoreregex =
Et voilà, il ne reste plus qu'à redémarrer le démon :
/etc/init.d/fail2ban force-reload
Et on passe à la suite, Munin pour créer des graphiques d'utilisation du serveur.
Retour au sommaire du tutorial complet.
Commentaires.
#1 par Axel
Bonjour, je suis dans le même cas de figure que vous, fail2ban et Nginx. Après quelques recherches sur internet j'arrive a des infos un peu contradictoires avec ce que vous écrivez.
-Tout d'abord il est recommandé d'utiliser le fichier /etc/fail2ban/jail.local plutôt que le /etc/fail2ban/jail.conf afin d'éviter qu'il soit écrasé lors d'une MAJ de fail2ban.
Ensuite et c'est la partie qui m’embête le plus les logs de Nginx et Apache ne seraient pas suffisamment proche pour que l'on puisse utiliser un même filtre (a l’exception de apache-badbots.conf ). J'ai lu ces informations ici : http://www.banquise.org/security/fail2ban-configuration-nginx-anomalies/ et là :http://www.fail2ban.org/wiki/index.php/NginX .
Bon je vais tenter de faire des adaptations mais j'ai bien peur de ne pas être capable de vérifier si elles fonctionnent ou pas.. Je suis plutôt du genre grosse quiche.
le Mardi 01 Mai 2012 à 09:00:34
Ajouter un commentaire.