Pour Apache, Fail2ban ne sert à rien ou presque !

Devant la pression amicale de mes commentateurs, j’ai donc ce matin entreprise de configurer Fail2ban sur ma Fedora. Pour rien ou presque ! Et, en plus, Fail2ban charge mon CPU à près de 50%, en moyenne. J’ai dû changé les directives loglevel à CRITICAL et backend à systemd. C’est mieux !!!

Installation classique

yum install fail2ban

Configuration pour les erreurs 40x et 50x

J’ai ajouté dans le répertoire /etc/fail2ban/jail.d le fichier apache.conf configuré comme suit :

[apache]
enabled=true
port=http,https
filter=apache
logpath=/var/log/httpd/vm-access_log 
    /var/log/httpd/dsfc-access_log
maxretry=2
bantime=86400
findtime=60
banaction=iptables-multiport[name=apache,port="http,https",protocol=tcp]

Pour votre compréhension, je tiens à préciser que la directive banaction fait référence au fichier iptables-multiport.conf défini dans le répertoire /etc/fail2ban/action.d. Au passage, j’ai remplacé la directive REJECT par DROP dans le fichier iptables-blocktype.conf.

Il faut ensuite créer un filtre dans le répertoire /etc/fail2ban/filter.d avec le nom défini au niveau de la directive filter. Je l’ai donc appelé apache.conf :

[Definition]
failregex = ^<HOST> - - .* "(GET|POST) .* HTTP/1.1" 4[0-3][0-9] 
ignoreregex = proxad\.net

Je vous incite au niveau de la directive ignoreregex à ajouter le nom de domaine associé à votre connexion, fourni par votre FAI. Par exemple , proxad\.net pour Free !

L’expression est obligatoire. Elle permet d’extraire l’adresse ip de la machine. Et c’est là que le bas blesse. Les attaques nous parviennent aujourd’hui sans aucune indication quant à l’adresse ip de la machine assaillante ou à partir de machines dont le nom ne peut pas être résolu !!! Et, dans ce cas, Fail2ban nous sert à rien, sauf à nous protéger des bizuts. Si vous cherchez une solution, je vous renvoie à l’article que j’ai publié récemment sur la manière de faire face à une attaque de type DDoS au niveau de votre serveur Apache !

Regardez bien la 1ère ligne des logs du site Voie Militante : aucune ip, aucun nom de machine ! Juste un point. CQFD.

Pour Apache, Fail2ban ne sert à rien ou presque !

Le module Apache mod_remoteip (avec des pincettes)

Il permet d’identifier plus finement la machine qui émet la requête, même si ce n’est pas fiable à 100%. Pour lister les modules installés dans Apache, tapez la commande :

apachectl -t -D DUMP_MODULES

Pour activer le module mod_remoteip sous Fedora, vous devez décommenter, dans le fichier /etc/httpd/conf.modules.d/00-base.conf, la ligne :

LoadModule remoteip_module modules/mod_remoteip.so

Dans les fichiers de configuration au niveau du format du fichier de log, remplacez alors le %h par le %a.

Je vous recommande, pour ma part, de désactiver la résolution DNS au niveau des logs en passant la directive HostnameLookups à off !

La liste des machines bloquées

Pour visualiser la liste des machines bloquées, il suffit de taper en ligne de commandes : iptables – L.

Apache  / Apache Fail2ban Formateur Apache Formateur LAMP Formateur Sécurité informatique Logs Sécurité informatique 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)