No post anterior, você viram que eu estou com alguns problemas para compilar o Mod_security no meu apache, mas assim, eu preciso assegurar o meu ambiente Web. E aí, como fazê-lo ?

Mod_reqtimeout

Temos algumas alternativas além de fazer um hardering no apache. A primeira dela será compilar o apache com o mod_reqtimeout. Este módulo vem a partir do release do apache 2.2.17

O passo a passo de compilação que eu utilizei para o apache + mod_reqtimeout + ssl foi esse abaixo:

./configure --prefix=/app/apache/httpd-2.1.19 --with-mpm=worker /
--enable-so --enable-proxy --enable-proxy-connect --enable-proxy-ftp/
 --enable-proxy-http --enable-headers --enable-rewrite --enable-status/
 --enable-info --enable-deflate --enable-reqtimeout /
 --enable-mem-cache --enable-cache --enable-disk-cache --enable-expires /
--enable-mods-shared=all --enable-ssl --enable-setenvif /
--with-ssl=/usr/bin/openssl
make && make install

Vejam que o httpd.conf já está com o módulo setado:

 LoadModule reqtimeout_module modules/mod_reqtimeout.so

Depois do apache compilado com o módulo, você deverá adicionar a seguinte linha no httpd.conf e depois dar um restart no apache (apachectl restart)

RequestReadTimeout header=10-20,MinRate=500 body=10-20,MinRate=500

Lembrando que você deverá parametrizar o seu apache de acordo com o carga que ele deverá suportar, além dos timeouts e do nível de defesa que você deseja ter. Tentativa erro meus amigos. 🙂

Deixo claro que alguns fóruns dizem que o mod_reqtimout apresenta alguns problemas.

Mod_qos

A instalação é bem simples, como em qualquer módulo você precisa executar a seguinte linha de comando

/app/apache/httpd-2.1.19/bin/apxs -cia mod_qos.c

Depois é claro de ter feito o download do cara 🙂

Dando tudo certo, você terá o seguinte resultado:

----------------------------------------------------------------------
Libraries have been installed in:
/app/apache/httpd-2.1.19/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.
----------------------------------------------------------------------
chmod 755 /app/apache/httpd-2.1.19/modules/mod_qos.so
[activating module `qos' in /app/apache/httpd-2.1.19/conf/httpd.conf]

Vejam que após a compilação, o apache já adiciona o módulo no httpd.conf:

LoadModule antiloris_module   modules/mod_antiloris.so
LoadModule qos_module         modules/mod_qos.so

O mod_qos é parecido com o mod_reqtimout, pois você precisa adicionar algumas regras
para ele funcionar. Essas regras deverão ser incluídas no httpd.conf do seu servidor apache, vejam um exemplo:

## 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>
Vale lembrar que cada regra muda de acordo com a carga que o seu apache deverá suportar, tanto para funcionar como para se defender de ataques.

Para verificar nos logs do apache o funcionamento do mod_qos:

$ cat /var/log/apache2/access.log | qslog -f ..IR.B.T -o /tmp/stat_log -p 

E por último, eu lhes apresento o Mod_antiloris.so

este é um dos módulos mais fáceis de ser instalado. Você precisa baixá-lo:

wget "ftp://ftp.monshouwer.eu/pub/linux/mod_antiloris/mod_antiloris-0.3.tar.bz2"
tar xvf mod_antiloris-0.3.tar.bz2
cd mod_antiloris-0.3/

Compilar o apache com ele:

/app/apache/httpd-2.1.19/bin/apxs2 -cia mod_antiloris.c

E dando tudo certo, ele já instará instalado no seu httpd.conf

 LoadModule antiloris_module   modules/mod_antiloris.so

Depois é só dar um restart no apache. Não há regras ou parametrizações que deverão ser adicionadas para utilizar este carinha. Eu segui o passo a passo deste site.

O vídeo abaixo demonstra o seu funcionamento contra um ataque utilizando a ferramenta slowloris:

Vejam que o apache que eu compilei possui os 3 módulos, mas não quer dizer que eu irei utilizá-los ao mesmo tempo, eu nem sei se isso poderá causar alguma instabilidade no próprio apache. Mas acho importante possuir os 3 já instalados para utilizá-los em caso do necessidade.

Outro ponto é que eu só recomendo a utilização destes módulos paós uma série de testes realizados no seus sites, você precisa ajustar os parâmetros de acordo com o seu ambiente. 🙂

P.S>: se você tiver algum problema de compilação de algum destes módulos no seu apache atual, verifique a release dele. Será necessária atualizá-lo para que os módulos funcionem.

Compartilhar:

Deixe uma resposta

Fechar Menu