Plugins Fail2Ban pour Munin

Adminstration Server Linux, Sécurité 14 Comments »

Ne trouvant pas mon bonheur parmi les plugins munin pour fail2ban j’ai décidé de l’écrire moi même. Le plugins s’adapte automatiquement à votre fail2ban car il récupère les jails activées.

On crée le fichier /usr/share/munin/plugins/fail2ban et on le remplit le avec le code ci-dessous

#! /bin/bash

PROGNAME=fail2ban
STATEDIR=/var/lib/munin/plugin-state
LISTJAIL=$(fail2ban-client status | grep " Jail list:" | sed 's/`- Jail list:\t\t//g' | sed 's/,//g')

if [ "$1" = "config" ]
then
 echo 'system.type ABSOLUTE'
 echo 'graph_title Fail2ban'
 echo 'graph_vlabel Number of ban'
 echo 'graph_category Security'
 for f  in $LISTJAIL; do
 echo "$f.label $f"
 done
 exit 0
fi

for f  in $LISTJAIL; do
 echo "$f.value $(fail2ban-client status $f | grep " Currently banned:" | sed 's/   |- Currently banned:\t//g')"
done

Ensuite on active le plugins en créant le lien symbolyque

ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/

Il faut également élever les privilèges de munin pour qu’il puisse utiliser fail2ban

vi /etc/munin/plugin-conf.d/munin-node

On ajoute à la fin :

[fail2ban]
user root

On termine on redémarrant munin

/etc/init.d/munin-node restart

Et vous devriez avoir après quelques jours un graphique semblable 🙂

Graph Munin Fail2ban

Graph Munin Fail2ban

Bloquer les scans de dossier par dictionnaire sur votre serveur WEB

Administration des Réseaux, Adminstration Server Linux 4 Comments »

Je vous expliquais hier comment se protéger des scans Dfind. Aujourd’hui nous allons aller un peu plus loin dans la sécurisation de son server web en bannisant tous requêtes se faisant directement sur l’ip et non via un nom de domaine.

Concrètement dans les logs d’apache vous devriez avoir quelque chose de semblable :

[Fri May 01 14:52:11 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/phpMyAdmin
[Fri May 01 14:52:11 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/PHPMYADMIN
[Fri May 01 14:52:11 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/phpmyadmin/main.php
[Fri May 01 14:52:12 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/pHpMyAdMiN
[Fri May 01 14:52:12 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/PhPmYaDmIn
[Fri May 01 14:52:13 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/phpMYadmin
[Fri May 01 14:52:13 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/PHPmyadmin
[Fri May 01 14:52:13 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/PHPMYadmin
[Fri May 01 14:52:14 2009] [error] [client 24.123.67.41] client denied by server configuration: /var/www/phpmyADMIN

On  commence par préparer apache, en effet on va déclarer un vhost qui s’occupera de traiter les requêtes sur l’IP

On crée le dossier /var/empty et on lui donne les droits adéquats pour que apache puisse lire le dossier

mkdir /var/empty
chown www-data:www-data -R /var/empty
chmod 664 -R /var/empty

Ensuite vous créez le vhost

vi /etc/apache2/sites-available/nodnsuse

Et vous copier les lignes suivantes dedans :


        DocumentRoot /var/empty/
        
                Order Deny,Allow
                Deny from All
        

Vous activez le vhost et relancez apache2

a2ensite nodnsuse
/etc/init.d/apache2 restart

On installe Fail2Ban si vous ne l’avez pas encore fait

apt-get update && apt-get install fail2ban

On edit le fichier jail.conf pour y ajouter la nouvelle règle

vi /etc/fail2ban/jail.conf

On ajoute à la fin du fichier les lignes suivantes :

[apache-nodnsuse]

enabled = true
port    = http,https
filter  = apache-nodnsuse
logpath = /var/log/apache*/*error.log
maxretry = 1
banTime = 86400

On ajoute le fichier de détection

vi /etc/fail2ban/filter.d/apache-nodnsuse.conf

Et on y ajoute :

[Definition]
failregex = [[]client []] client denied by server configuration: /var/empty/.*
ignoreregex=

Vous redémarrez enfin Fail2Ban et consulter les logs pour voir qui sera le premier gagnant

/etc/init.d/fail2ban restart && tail -f -n 30 /var/log/fail2ban.log

Bloquer les attaques de type w00tw00t.at.ISC.SANS sur Apache2

Administration des Réseaux, Adminstration Server Linux 4 Comments »

apache_w00tw00tSi vous avez un serveur Apache, vous avez très certainement dans les logs des attaques de type w00tw00t.at.ISC.SANS. Elles sont le fruit de kiddies utilisant un logiciel de scanning nommé DFind

Si votre serveur est à jour et correctement configuré, vous ne devriez pas en avoir peur. Mais on va quand même s’occuper de ces petits mariols du net tout juste bon à utiliser un script.

On va installer Fail2Ban est dés que l’on trouvera la signature du scanner dans les logs, on bannira l’IP de l’attaquant via iptables, simple et radicale.

On commence par mettre à jour les dépôts et installer fail2ban

apt-get update && apt-get install fail2ban

On créer maintenant le fichier qui ajoutera une règle iptables

vi /etc/fail2ban/action.d/iptables-allports.conf

On copie les lignes suivantes dedans

# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Modified: Yaroslav O. Halchenko 
#             made active on all ports from original iptables.conf
#
# $Revision: 658 $
#

[Definition]

# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
#
actionstart = iptables -N fail2ban-
              iptables -A fail2ban- -j RETURN
              iptables -I INPUT -p  -j fail2ban-

# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
#
actionstop = iptables -D INPUT -p  -j fail2ban-
             iptables -F fail2ban-
             iptables -X fail2ban-

# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
#
actioncheck = iptables -n -L INPUT | grep -q fail2ban-

# Option:  actionban
# Notes.:  command executed when banning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:      IP address
#            number of failures
#          

On créé maintenant le fichier qui contenant le regex de détection de la signature de Dfind

vi /etc/fail2ban/filter.d/apache-w00tw00t.conf

On le rempli avec ce qui suit

# w00tw00t.at.ISC.SANS.DFind

[Definition]

# Option:  failregex
# Notes.:  regex to match the w00tw00t scan messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching.
# Values:  TEXT
failregex = [[]client []] (client sent HTTP/1.1 request without hostname|Invalid method in request|request failed: URI too long|erroneous characters after protocol string)

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT

ignoreregex =

Pour finir on édit le fichier jail.conf

vi /etc/fail2ban/jail.conf

Et on y ajoute les lignes suivantes, elles on pour effet de bannir complètement pendant 24h l’IP des attaquant.

[apache-w00tw00t]
enabled  = true
filter   = apache-w00tw00t
action   = iptables-allports[name=w00tw00t]
logpath  = /var/log/apache2/error.log
maxretry = 1
bantime  = 86400

On redémarre Fail2ban

/etc/init.d/fail2ban restart

On peut à présent attendre tranquillement les prochaines attaques

tail /var/log/fail2ban.log
2009-04-30 20:24:29,858 fail2ban.actions: WARNING [apache-w00tw00t] Ban 85.114.141.205
2009-04-30 20:24:29,906 fail2ban.actions: WARNING [apache-w00tw00t] Ban 62.75.220.143
2009-04-30 20:24:29,954 fail2ban.actions: WARNING [apache-w00tw00t] Ban 212.180.3.123
2009-04-30 20:24:30,001 fail2ban.actions: WARNING [apache-w00tw00t] Ban 91.121.210.244
2009-04-30 20:26:03,142 fail2ban.actions: WARNING [apache-w00tw00t] Ban 89.19.1.18

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Connexion
ipv6 ready