Cet article fait suite à l'article sur la sécuristion de son VPS, où l'on avait installé le service fail2ban et sécurisé le service SSH.
On s'attaque maintenant à la protection d'Apache.
Pour éloigner les relous qui essaie d'accéder à w00tw00t ou à phpMyAdmin, Il faut ajouter les deux filtres suivant dans le répertoire /etc/fail2ban/filter.d/
Fichier /etc/fail2ban/filter.d/apache-pma.conf
# Fail2Ban configuration file
# Bans bots scanning for non-existing phpMyAdmin installations on your webhost.
#
[Definition]
# Option: failregex
# Notes.: Regexp to match often probed and not available phpmyadmin paths.
# Values: TEXT
#
failregex = [[]client []] File does not exist: .*(PMA|phpmyadmin|myadmin|mysql|mysqladmin|sqladmin|mypma|admin|xampp|mysqldb|mydb|db|pmadb|phpmyadmin1|myadmin2)
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Fichier /etc/fail2ban/filter.d/apache-w00tw00t.conf
[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 = ^ -.*"GET /w00tw00t.at.ISC.SANS.DFind:).*".*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
ignoreregex =
Maintenant pour activer les règles concernant apache (incluses dans fail2ban) et nos 2 règles personnelles, on ajoute au fichier jail.local, les lignes suivantes.
Fichier /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 X.X.X.X
...
[apache-auth]
enabled = true
maxretry = 2
journalmatch =
backend = polling
[apache-badbots]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-noscript]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-overflows]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-nohome]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-botsearch]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-modsecurity]
enabled = true
maxretry = 2
journalmatch =
backend = polling
[apache-shellshock]
enabled = true
maxretry = 1
journalmatch =
backend = polling
[apache-pma]
enabled = true
maxretry = 1
journalmatch =
backend = polling
logpath = %(apache_error_log)s
bantime = 172800
findtime = 172800
[apache-w00tw00t]
enabled = true
maxretry = 1
journalmatch =
backend = polling
logpath = %(apache_access_log)s
bantime = 172800
findtime = 172800
Les règles qui nécessitent d'avoir accès à des fichiers de log, devront impérativement avoir les définitions backend = polling
et journalmatch =
car le backend par défaut est réglé sur auto (c'est à dire systemd). D'ailleurs le fichier jail.conf contient les lignes suivantes
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200