Le Déni de service (DoS) est une attaque ayant pour but de rendre indisponible un service de la machine ou un réseau pour ses utilisateurs destinés, comme d'interrompre ou de suspendre les services d'un hôte connecté à Internet temporairement ou indéfiniment.
Un déni de service distribué (DDoS) est le faite d'impliquer une multitude de source souvent des PC “zombies” dans l'attaque, donc des milliers de adresses IP unique.
On appelle « attaque par déni de service » toutes les actions ayant pour résultat la mise hors ligne d'un serveur.
Dans les faits, les attaques par déni de service sont opérées en saturant la bande passante d'un serveur défini.
wikipedia.org
Les attaques par déni de service distribuées sont plus difficiles à contrer.
Le principe même de l'attaque par déni de service distribuée est de diminuer les possibilités de stopper l'attaque.
Les attaques par déni de service non distribuées peuvent être contrées en identifiant l'adresse IP de la machine émettant les attaques et en la bannissant au niveau du pare-feu (iptables).
Comment, protéger notre serveur apache pour qu'il remonte ce genre d'attaque ?
Le “mod_evasive” est un module Apache pour contrer les attaques DOS.
Celui-ci est par exemple capable de détecter lorsqu'un utilisateur demande un trop grand nombre de pages sur un site web, sur un délai de temps très court.
Voici comment l'installer et le configurer pour une utilisation basique.
Sous Debian ou équivalent :
aptitude install libapache2-mod-evasive
Toute la configuration de se trouve dans le fichier Sous Debian ou équivalent :
/etc/apache2/mods-available/evasive.conf
Voici ce que contient le fichier configuration :
<IfModule mod_evasive20.c> #DOSHashTableSize 3097 #DOSPageCount 2 #DOSSiteCount 50 #DOSPageInterval 1 #DOSSiteInterval 1 #DOSBlockingPeriod 10 #DOSEmailNotify you@yourdomain.com #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" #DOSLogDir "/var/log/mod_evasive" </IfModule>
Voici, quelques directives décrites brièvement :
Une configuration que j'utilise :
<IfModule mod_evasive20.c> DOSHashTableSize 3097 # Pas plus de 200 pages en 100 seconde DOSPageCount 200 DOSSiteCount 100 # Pas plus de 1 requetes par seconde (images, CSS...) DOSPageInterval 1 DOSSiteInterval 1 # Periode en seconde pendant laquelle on bloque le client DOSBlockingPeriod 10 #DOSEmailNotify you@yourdomain.com #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'" # Dossier contenant les IP blaclistes DOSLogDir "/var/log/mod_evasive" </IfModule>
Création du répertoire qui contiendra les logs :
mkdir /var/log/mod_evasive chown :www-data /var/log/mod_evasive chmod 771 /var/log/mod_evasive
Activation du module dans apache :
a2enmod evasive
Maintenant que mod_evasive
est configuré correctement, nous allons tester, si notre serveur à la protection anti DoS à l'aide ab
(Apache Benchmark).
Installez ab
si vous ne l'avez pas en tapant:
aptitude install apache2-utils
Vérification de nos stat dans /var/log/mod_evasive
root@test:~# ls -l /var/log/mod_evasive/ total 0 root@test:~#
Ensuite Nous allons maintenant envoyer des demandes en vrac sur le serveur, ce qui provoquera une attaque DOS en tapant :
ab -n 100 -c 10 http://test.domaine.com/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking test.domaine.com (be patient).....done Server Software: Apache Server Hostname: test.domaine.com Server Port: 80 Document Path: / Document Length: 0 bytes Concurrency Level: 10 Time taken for tests: 0.365 seconds Complete requests: 100 Failed requests: 40 (Connect: 0, Receive: 0, Length: 40, Exceptions: 0) Non-2xx responses: 100 Total transferred: 26020 bytes HTML transferred: 8360 bytes Requests per second: 273.84 [#/sec] (mean) Time per request: 36.518 [ms] (mean) Time per request: 3.652 [ms] (mean, across all concurrent requests) Transfer rate: 69.58 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 6 8 2.1 6 14 Processing: 13 25 46.2 13 236 Waiting: 13 25 46.2 13 236 Total: 19 33 46.7 21 249 Percentage of the requests served within a certain time (ms) 50% 21 66% 22 75% 23 80% 24 90% 38 95% 225 98% 236 99% 249 100% 249 (longest request)
Vérifier vos fichier log apache, mon petit doigt, me dit que le calme devrait avoir cesser
[Wed Jan 27 10:49:24.580491 2016] [evasive20:error] [pid 13449] [client xxx.xxx.xxx.xxx:38389] client denied by server configuration: [Wed Jan 27 10:49:24.587827 2016] [evasive20:error] [pid 13451] [client xxx.xxx.xxx.xxx:38390] client denied by server configuration: [Wed Jan 27 10:49:24.590058 2016] [evasive20:error] [pid 13452] [client xxx.xxx.xxx.xxx:38392] client denied by server configuration: [Wed Jan 27 10:49:24.590559 2016] [evasive20:error] [pid 13448] [client xxx.xxx.xxx.xxx:38391] client denied by server configuration: [Wed Jan 27 10:49:24.590587 2016] [evasive20:error] [pid 13474] [client xxx.xxx.xxx.xxx:38393] client denied by server configuration: [Wed Jan 27 10:49:24.601284 2016] [evasive20:error] [pid 13450] [client xxx.xxx.xxx.xxx:38394] client denied by server configuration: [Wed Jan 27 10:49:24.607367 2016] [evasive20:error] [pid 13451] [client xxx.xxx.xxx.xxx:38395] client denied by server configuration: [Wed Jan 27 10:49:24.609893 2016] [evasive20:error] [pid 13449] [client xxx.xxx.xxx.xxx:38396] client denied by server configuration: [Wed Jan 27 10:49:24.614346 2016] [evasive20:error] [pid 13450] [client xxx.xxx.xxx.xxx:38398] client denied by server configuration: [Wed Jan 27 10:49:24.614491 2016] [evasive20:error] [pid 13452] [client xxx.xxx.xxx.xxx:38397] client denied by server configuration: