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.
Tester si le module mod_evasive fonctionne ou non :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Utiliser le script perl "test.pl" situé dans le répertoire /usr/share/doc/libapache2-mod-evasive/examples/.
Puis, lancer le script depuis le terminal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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 :
Source : https://www.visionduweb.eu/wiki/inde...er_mod_evasiveHTTP/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
( 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.
Ce serrait du à mes différents VirtualHosts ?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 "-" "-"
Source : https://www.visionduweb.eu/wiki/inde...port_HTTP_80_2
Configuration de l'écoute du port HTTP 80
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Partager