Apache2.4 mod_evasive HTTP/1.1 400 Bad Request
Apache2.4 mod_evasive HTTP/1.1 400 Bad Request
Tester mod_evasive sur Apache 2.4
J'ai fais une synthèse de l'utilisation de mod_evasive qui semble complète :
https://www.visionduweb.eu/wiki/inde...an#Mod_Evasive
Pourtant, cela ne semble pas fonctionner avec ma configuration.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <IfModule mod_evasive20.c>
DOSHashTableSize 3097
# Pas plus de 2 pages par seconde.
DOSPageCount 2
DOSPageInterval 1
# Pas plus de 150 requetes par seconde (Images, CSS, ...)
DOSSiteCount 150
DOSSiteInterval 1
# Période en seconde durant laquelle on bloque le client.
DOSBlockingPeriod 600
# Ajouter une ou plusieurs adresse IP en liste blanche.
# L'adresse IP locale peut être mise en liste blanche.
DOSWhitelist 127.0.0.1
# Les 3 adresses IP sont celles du Bot de Google.
DOSWhitelist 66.249.65.*
DOSWhitelist 66.249.66.*
DOSWhitelist 66.249.71.*
# Notifier l'alerte avec un mail.
DOSEmailNotify admin@example.org
# Chemin vers le dossier de log de Apache2, mod_evasive.
# Le fichier contiendra les adresses IP blacklistées.
DOSLogDir "/var/log/apache2/mod_evasive/"
# Lancer une commande avec DOSSystemCommand.
# Lancer par exemple un script Iptables :
# DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP"
# Écrire les logs :
# DOSSystemCommand "/bin/echo %s >> /var/log/mod_evasive/dos_evasive.log && /bin/date >> /var/log/mod_evasive/dos_evasive.log"
</IfModule> |
Tester si le module mod_evasive fonctionne ou non :
Utiliser le script perl "test.pl" situé dans le répertoire /usr/share/doc/libapache2-mod-evasive/examples/.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/usr/bin/perl
# test.pl: small script to test mod_dosevasive's effectiveness
use IO::Socket;
use strict;
for(0..100) {
my($response);
my($SOCKET) = new IO::Socket::INET( Proto => "tcp",
PeerAddr=> "127.0.0.1:80");
if (! defined $SOCKET) { die $!; }
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
$response = <$SOCKET>;
print $response;
close($SOCKET);
} |
Puis, lancer le script depuis le terminal.
sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Le script effectue 100 demandes sur votre serveur Web.
Le code de réponse 403 indique que l'accès est refusé par le serveur Web.
HORS ! Lors de mes essais, j'ai la réponse suivante :
Citation:
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
Source : https://www.visionduweb.eu/wiki/inde...er_mod_evasive
( Je suis sur Debian SID. )
/var/log/apache2$ cat other_vhosts_access.log m'affiche bien les 100 requêtes, mais, en erreur 400 également.
Citation:
vpsxxx.vps.ovh.ca:80 127.0.0.1 - - [07/Nov/2018:04:23:50 +0100] "GET /?96 HTTP/1.0\n" 400 0 "-" "-"
vpsxxx.vps.ovh.ca:80 127.0.0.1 - - [07/Nov/2018:04:23:50 +0100] "GET /?97 HTTP/1.0\n" 400 0 "-" "-"
vpsxxx.vps.ovh.ca:80 127.0.0.1 - - [07/Nov/2018:04:23:50 +0100] "GET /?98 HTTP/1.0\n" 400 0 "-" "-"
vpsxxx.vps.ovh.ca:80 127.0.0.1 - - [07/Nov/2018:04:23:50 +0100] "GET /?99 HTTP/1.0\n" 400 0 "-" "-"
vpsxxx.vps.ovh.ca:80 127.0.0.1 - - [07/Nov/2018:04:23:50 +0100] "GET /?100 HTTP/1.0\n" 400 0 "-" "-"
Ce serrait du à mes différents VirtualHosts ?
Source : https://www.visionduweb.eu/wiki/inde...port_HTTP_80_2
Configuration de l'écoute du port HTTP 80
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # VirtualHost du domaine green-nrj.com
<VirtualHost *:80>
ServerName www.green-nrj.com
ServerAlias green-nrj.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Redirection http://(www).domaine.ext vers https://
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.green-nrj.com$1 [QSA,L,R=301]
</IfModule>
</VirtualHost> |