http://www.howtoforge.com/how-to-defend-slowloris-ddos-with-mod_qos-apache2-on-debian-lenny

Url Site officiel : http://mod-qos.sourceforge.net/

Téléchargement :

cd /opt/SOURCES
wget http://downloads.sourceforge.net/project/mod-qos/mod-qos/9.1/mod_qos-9.1-src.tar.gz?use_mirror=freefr
tar xvzf mod_qos-9.1-src.tar.gz
cd mod_qos-9.1

Pre-requis :

  • httpd-devel (c'est selon votre distribution et votre installation d'apache)
  • pcre et pcre-devel

Installation :

Très simple.

cd apache2/
apxs -i -c mod_qos.c

Utilisez apxs2 si vous etes sous Debian ou Ubuntu.

Si tout ce deroule bien vous devriez avoir quelque chose comme ceci :

[...]
Libraries have been installed in:
   /usr/lib/httpd/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Configuration :

Faites un locate sur mod_qos pour voir ou il se trouve et ajoutez quelque chose comme ce qui suit dans votre fichier de configuration d'apache :

LoadModule qos_module /opt/httpd2213/modules/mod_qos.so

Au prochain redémarrage de votre apache le module sera chargé.

Rajoutez aussi ceci, ce sont les parametres pour mod_qos :

## QoS Settings
<IfModule mod_qos.c>

    # handles connections from up to 100000 different IPs
    QS_ClientEntries 100000

    # will allow only 50 connections per IP
    QS_SrvMaxConnPerIP 50

    # maximum number of active TCP connections is limited to 256
    MaxClients              256
 
    # disables keep-alive when 70% of the TCP connections are occupied:
    QS_SrvMaxConnClose      180

    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):
    QS_SrvMinDataRate       150 1200

    # and limit request header and body (carefull, that limits uploads and post requests too):
    # LimitRequestFields      30
    # QS_LimitRequestBody     102400

</IfModule>

Ajustez tout ça selon vos choix biensur.

Personnellement avec ce module j'obtiens de charmante chose dans mon fichier d'erreur log d'apache :


*** glibc detected *** /opt/httpd/bin/httpd: double free or corruption (!prev): 0x0000000000b0d4e0 *** ======= Backtrace: ========= /lib64/libc.so.60x3eedc722ef /lib64/libc.so.6(cfree+0x4b)0x3eedc7273b /usr/lib64/libapr-1.so.0(apr_allocator_destroy+0x1b)0x7f9a0051125b /opt/httpd/bin/httpd0x4534ad /opt/httpd/bin/httpd0x45400d ...


à creuser....