Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
linux:fail2ban [2012/01/09 22:20] matthieu créée |
linux:fail2ban [2012/01/09 22:35] (Version actuelle) matthieu [Installation] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>fr fr:linux fr:serveur fr:web fr:base_de_données}} | ||
====== Fail2Ban ====== | ====== Fail2Ban ====== | ||
Fail2Ban est un petit utilitaire très pratique pour bloquer les attaques brute force inhérentes à toute machine directement accessible sur Internet. | Fail2Ban est un petit utilitaire très pratique pour bloquer les attaques brute force inhérentes à toute machine directement accessible sur Internet. | ||
Ligne 8: | Ligne 9: | ||
===== Installation ===== | ===== Installation ===== | ||
- | L'installation est réalisée sur Debian en ajoutant le paquet : | + | L'installation est réalisée sur [[Debian]] en ajoutant le paquet : |
* fail2ban | * fail2ban | ||
Ligne 70: | Ligne 71: | ||
* créer un filtre pour identifier les tentatives de connexion | * créer un filtre pour identifier les tentatives de connexion | ||
* ajouter une configuration de service dans fail2ban | * ajouter une configuration de service dans fail2ban | ||
+ | |||
+ | Pour l'installation de phpmyadmin, voir [[phpmyadmin]].\\ | ||
+ | Pour la configuration d'apache, voir [[serveur web]]. | ||
==== Loguer les actions phpmyadmin ==== | ==== Loguer les actions phpmyadmin ==== | ||
+ | phpmyadmin offre des variables personnalisées disponibles pour les logs, en particulier le nom et le status de l'utilisateur. Nous allons les utiliser pour détecter les tentatives de connexion. | ||
+ | Pour cela, modifier le format des logs ainsi : | ||
+ | <file apache> | ||
+ | LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n" pma_combined | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log pma_combined | ||
+ | </file> | ||
+ | En consultant les logs, vous devez voir apparaître les nouveaux champs à la fin des lignes. Une tentative d'accès erroné sera logué ainsi : | ||
+ | 192.168.1.1 - - [09/Jan/2012:22:24:48 +0100] "GET /phpmyadmin/index.php?token=d6ba5c4997bd3d7a07404e6123396ed3 HTTP/1.1" 200 2508 "https://192.168.1.2/phpmyadmin/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1" root mysql-denied | ||
+ | ==== Créer un filtre fail2ban ==== | ||
+ | Pour détecter les tentatives, il faut donc identifier "mysql-denied" à la fin des logs, sans oublier de mémoriser l'IP au début. | ||
+ | |||
+ | Créer le fichier ///etc/fail2ban/filter.d/phpmyadmin.conf// avec le contenu suivant : | ||
+ | <file> | ||
+ | # Fail2Ban configuration file | ||
+ | # | ||
+ | # Author: Matthieu Bouthors <matthieu@bouthors.fr> | ||
+ | # | ||
+ | # | ||
+ | |||
+ | [Definition] | ||
+ | |||
+ | # Option: failregex | ||
+ | # Notes.: regex to match the password failures messages in the logfile. The | ||
+ | # host must be matched by a group named "host". The tag "<HOST>" can | ||
+ | # be used for standard IP/hostname matching and is only an alias for | ||
+ | # (?:::f{4,6}:)?(?P<host>[\w\-.^_]+) | ||
+ | # Values: TEXT | ||
+ | # | ||
+ | failregex = <HOST> .* mysql-denied | ||
+ | |||
+ | # Option: ignoreregex | ||
+ | # Notes.: regex to ignore. If this regex matches, the line is ignored. | ||
+ | # Values: TEXT | ||
+ | # | ||
+ | ignoreregex = | ||
+ | </file> | ||
+ | |||
+ | ==== jail.conf ==== | ||
+ | Enfin il faut ajouter la déclaration suivante dans jail.conf : | ||
+ | <file> | ||
+ | [phpmyadmin] | ||
+ | enabled = true | ||
+ | port = http,https | ||
+ | filter = phpmyadmin | ||
+ | logpath = /var/log/apache2/access.log | ||
+ | maxretry = 6 | ||
+ | </file> | ||
+ | |||
+ | Sans oublier de redémarrer fail2ban après la modification : | ||
+ | /etc/init.d/fail2ban restart | ||
+ | |||
+ | ===== Backup ===== | ||
+ | * /etc/fail2ban | ||
+ | |||
+ | ===== Links ===== | ||
+ | * http://www.fail2ban.org | ||
+ | * [[phpmyadmin]] | ||