Вы находитесь на странице: 1из 26

Capitulo 3

Protegendo seu
Servidor Web

1. Instalao do Ambiente em
Chroot
Vimos que com a instalao e configurao padro, nosso servidor vulnervel ataques,
alm de fornecer muitas informaes um possvel atacante, facilitando o trabalho dele
de comprometimento de nosso servidor. Por conta disso, vamos realizar uma nova
instalao do Apache e do PHP para melhorar sua segurana. O Apache e o PHP sero
reinstalados dentro de um ambiente seguro chamado chroot, que permite o
enjaulamento de aplicaes, fazendo com que aquilo que estiver dentro do conteiner
no tenha acesso mquina real. Vamos instalao e configurao de nosso ambiente
seguro com um sistema operacional prprio, separado da mquina real. Para instalar o
ambiente chroot no debian, vamos utilizar o debootstrap, ele ir nos auxiliar na criao
deste ambiente.

# apt-get install debootstrap


# mkdir /var/webserversecurity
# debootstrap wheezy /var/webserversecurity/

Aps executar o comando acima, perceba que o deboostrap ir baixar uma srie de
pacotes que so necessrios para que este mnimo ambiente funcione. Agora para que
o ambiente chroot funcione, precisamos de compartilhar o diretrio /proc da mquina
real dentro do chroot.
# mount --bind /proc/ /var/webserversecurity/proc

Vamos acessar o chroot:


# chroot /var/webserversecurity/

Vamos alterar o formato que o pronto aparece, para diferenciarmos a maquina real do chroot:
# vi .bashrc
# exit

Vamos entrar novamento no chroot, agora com o prompt alterado:


# chroot /var/webserversecurity

Vamos alterar a configurao do mirror do apt para o mirro br, e atualizar os pacotes, caso
necessitem:
chroot:~# vi /etc/apt/sources.list
chroot:~# apt-get update
chroot:~# exit

Esses passos vo depender do nvel de segurana que voc quer implementar, so


opcionais, porem os seguindo voc ter acesso ao ssh da maquina real e acesso ao ssh
do chroot. Para isso, precisamos alterar a porta do ssh, e compartilhar /dev/pts e
reiniciar o servio da mquina real.
# vi /etc/ssh/sshd_config
# /etc/init.d/ssh restart
# mount --bind /dev/pts /var/websecurity/dev/pts

Vamos entrar no chroot e prosseguir com as demais configuraes


# chroot /var/webserversecurity/

Instalar o openssh-server:
chroot:~# apt-get install openssh-server ; instalar o ssh server

Vamos definir uma senha para o root


chroot:~# passwd root

Feito isso, vamos fazer com o servio inicie sozinho quando o servidor der boot. Dentro
da mquina real, no arquivo /etc/rc.local adicione a seguinte linha:
/usr/sbin/chroot /var/webserversecurity /etc/init.d/ssh start

Instalar o apache2 no chroot


chroot:~# apt-get install apache2

Faa um teste em seu navegador se o servio foi instalado corretamente:


http://ipdasuamaquinavirtual

Agora vamos alterar alguns parmetros de segurana no apache2

chroot:/# vi /etc/apache2/sites-available/default

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

chroot:/# vi /etc/apache2/conf.d/security

#
# Disable access to the entire file system except for the directories that
# are explicitly allowed later.
#
# This currently breaks the configurations that come with some web application

# Debian packages.
#
#<Directory />
#

AllowOverride None

Order Deny,Allow

Deny from all

#</Directory>

# Changing the following options will not really affect the security of the
# server, but might make attacks slightly more difficult in some cases.

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:

Full | OS | Minimal | Minor | Major | Prod

# where Full conveys the most information, and Prod the least.
#
#ServerTokens Minimal
#ServerTokens OS
#ServerTokens Full
ServerTokens Prod
#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:

On | Off | EMail

#
ServerSignature Off

chroot:/# /etc/init.d/apache2 restart

Feito isso, vamos fazer com o servio inicie sozinho quando o servidor der boot. Dentro
da mquina real, no arquivo /etc/rc.local adicione a seguinte linha:

/usr/sbin/chroot /var/webserversecurity /etc/init.d/apache2 start

2. Suhosin
Suhosin um avanado sistema de proteo que foi desenvolvido com o objetivo
de proteger servidores e usurios de falhas nas aplicaes escritas em PHP e
implementar correes prpria base da linguagem. separado em duas partes
independentes que podem ser utilizadas em conjunto ou individualmente, sendo
que uma delas um patch a ser aplicado no core do PHP que implementa
proteo contra vulnerabilidades do sistema (Engine Protection) e a outra parte
uma extenso que coloca em funcionamento todas as outras protees e
implementaes de segurana.
Contra o qu o Suhosin nos protege?

Suhosin a nico proteo estvel e real disponvel contra remote file include
Protege contra HTTP Response Splitting Vulnerabilities
Protege contra scripts que manipulam o memory_limit
Adiciona proteo contra ataques ao mail()
Filtra caracteres ASCIIZ de inputs de usurios
Ignora variveis de GET, POST, COOKIE com os seguintes nome: GLOBALS, _COOKIE, _ENV,
_FILES, _GET, _POST, _REQUEST, _SERVER, _SESSION, HTTP_COOKIE_VARS,
HTTP_ENV_VARS,
HTTP_GET_VARS,
HTTP_POST_VARS,
HTTP_POST_FILES,
HTTP_RAW_POST_DATA, HTTP_SERVER_VARS, HTTP_SESSION_VARS

Suporta verificao de upload de arquivos atravs de um script externo


Pagina do projeto: http://www.hardened-php.net/
6

2.1. Instalando o PHP5 e Suhosin


H duas fomas de realizarmos a instalao do Suhosin:

A mais fcil;
A mais difcil.

Vou explicar porque uma considerada mais fcil que a outra.


No mtodo mais difcil, necessrio a instalao do pacth do Suhosin, a recompilao do
PHP5 e a instalao de uma extenso especfica do Suhosin. Esse um processo que pode
levar mais de 1h, o que pode ser precioso para o profissional que est instalando e
configurando seu servidor web. J pela maneira mais fcil, que a que adotaremos
aqui, podemos utilizar um pacote do PHP5 previamente compilado, com o patch
e a extenso j instaladas, que precisa apenas ser configurado, para
personalizarmos os controles de segurana do Suhosin. Esse pacote est
disponvel para Debian/Ubuntu.
Primeiramente vamos transferir via winscp para dentro do chroot o pacote php5suhosin_0.9.34-1~update.1_amd64.deb
chroot:~# dpkg i php5-suhosin_0.9.34-1~update.1_amd64.deb

Vamos resolver as dependencias de pacotes que ele solicita:


chroot:~#/tmp# apt-get -f install

Aps finalizar a instalao vamos criar um arquivo chamado info.php dentro de


/var/www com o conteudo <? phpinfo(); ?> e em seguinda vamos abri-lo no navegador.

Vamos criar um apontamento para o arquivo do suhosin para sua chamada pelo php5 ser
efetiva:
chroot:~#/etc/php5/conf.d# ln -s ../mods-available/suhosin.ini

Ativando o suporte ao Mysql pelo php5


chroot:~#/etc/php5# apt-get install php5-mysql

Ativar modificaes:
chroot:~#/etc/php5# /etc/init.d/apache2 restart

Vamos editar o arquivo de configurao do Suhosin e adequar as seguintes


opes:

chroot:~#/etc/php5# vi /etc/php5/mods-available/suhosin.ini

# Limitar a quantidade de directory transversals (../../../):


suhosin.executor.include.max_traversal=4

#Desabilitar o /e no preg_replace, que normalmente utilizado de forma


insegura, j que esse parmetro permite a execuo de funes do PHP:
suhosin.executor.disable_emodifier=Off

#Proteger formulrios de e-mail contra ataque de spammers:


suhosin.mail.protect=2

#Configurar limite de memria, pois quando o safe_mode est desabilitado,


usurios podem utilizar o ini_set para alterar seu limite de memria:
suhosin.memory_limit=256M

#Qual ao o Suhosin executar ao filtrar algo (a opo 402 far com que o
cdigo no seja executado e retornse uma resposta HTTP):
suhosin.filter.action=402

#Limite mximo de tamanho para variveis vindas de COOKIE, POST e GET:


suhosin.request.max_array_depth=4096
suhosin.request.max_array_index_length=2048
suhosin.request.max_name_length=2048
suhosin.request.max_value_length=650000
suhosin.request.max_vars=4096

suhosin.post.max_array_depth=8048
suhosin.post.max_array_index_length=1024
suhosin.post.max_name_length=2048
suhosin.post.max_totalname_length=8048
suhosin.post.max_vars=4096

#Mximo upload de arquivos em um script:


suhosin.upload.max_uploads=100

# Cuidado com quais mdulos colocar na blacklist


#suhosin.executor.eval.blacklist =

include,

include_once, require,

require_once, curl_init, fpassthru, file, base64_encode, base64_decode, mail,


exec, system, proc_open, leak, syslog, pfsockopen, shell_exec, ini_restore,
symlink, stream_socket_server, proc_nice ,popen, proc_get_status, dl,
pcntl_exec, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus,
pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped,
pcntl_wstopsig,

pcntl_wtermsig,

socket_accept,

socket_bind,

socket_connect, socket_create, socket_create_listen, socket_create_pair, link,


register_shutdown_function, register_tick_function

# Cuidado ao ativar essa funo


suhosin.executor.disable_eval = off

#Armazenar em log todas as aes, alm das queries SQL que falharam, com o
syslog:
suhosin.log.syslog = S_ALL & ~S_SQL

#Desabilitar a possibilidade de fazer o upload de binrios:


suhosin.upload.disallow_binary=Off

#Desabilitar a possibilidade realizar o upload de arquivos ELF


suhosin.upload.disallow_elf=Off

Para maiores detalhes sobre configuraes do suhosin, acesse:


http://www.suhosin.org/stories/configuration.html

Agora, vamos adequar algumas configuraes do php5:


9

chroot:~# vi /etc/php5/apache2filter/php.ini

disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen,


diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl,
set_time_limit, exec, system, highlight_file, source, show_source, fpaththru,
virtual, proc_open, proc_close,
phpinfo

proc_get_status, proc_nice,

proc_terminate,

# Desativar display_errors, para evitar que informaes sejam passados para o


usurio, caso ocorra algum erro na aplicao
display_errors = off

#Desativar allow_url_fopen para no permitir a abertura de arquivos


atravs da URL
allow_url_fopen = off

#Desativar allow_url_include, para evitar ataques como RFI


allow_url_include = off

#Ativar log_errors, para que todos os erros sejam armazenados em um arquivo de


log
log_errors = on

#Desativar expose_php, para evitar que informaes sobre o PHP sejam exibidas
para o usurio, a menos que uma url esteja como .php:
expose_php = off

#Para aumentar ainda mais a segurana, limitando o tempo de execuo de cada


script, em segundos
max_execution_time = 30

Segue link de algumas funes para serem pesquisadas:

http://php.net/diskfreespace
http://php.net/dl
http://php.net/exec
http://php.net/fpaththru

10

http://php.net/getmypid
http://php.net/getmyuid
http://php.net/highlight_file
http://php.net/ignore_user_abord

Aplicar modificaes
chroot:~# /etc/init.d/apache2 restart
chroot:~# apachectl M

3. ModSecurity + Geo IP
O Mod Security um Web Application Firewall que atua na camada 7 do modelo OSI e
tem por objetivo bloquear diversos tipos de ataques, como o Cross-Site Scripting (XSS),
SQL Injection, Command Injection, ASP e PHP Injection, Trojans & Backdoors Detection,
dentre outros, que variam de acordo com as regras existentes, ele filtra todas as
requisies e respostas entre o servidor Web e o cliente fazendo a checagem das regras
que esto em vigor. Atualmente suportado pelo Apache, IIS7 e Nginx.
Vamos comear instalando os pacotes necessrios para compilar nosso Mod Security:
chroot:~# apt-get install apache2-threaded-dev libxml2-dev

libcurl4-gnutls-

dev liblua5.1-0 liblua5.1-0-dev build-essential

V at o diretrio /opt e faa o download do modsecurity:


chroot:~# cd /opt/ &&
wget https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz

Agora descompacte o arquivo e acesse o diretrio criado:


chroot:~# tar -xvzf modsecurity-2.8.0.tar.gz && cd modsecurity-2.8.0

Agora iremos iniciar a compilao com o ./configure fazendo as configuraes de path e


verificando as dependncias:
chroot:~# ./configure with-apxs=/usr/bin/apxs2 with-pcre=/usr/bin/pcreconfig with-apr=/usr/bin/apr-config with-apu=/usr/bin/apu-config withlibxml=/usr/bin/xml2-config with-curl=/usr/bin/curl-config

Depois compile e instale o Mod Security:


11

chroot:~# make
chroot:~# make install

Depois de tudo instalado hora de copiar a biblioteca do Mod Security para o diretrio
de mdulos do apache:
chroot:~# cp /usr/local/modsecurity/lib/mod_security2.so
/usr/lib/apache2/modules/

Agora iremos baixar o core rules do Spider Labs. A empresa Spider Labs, mantem um
projeto livre chamado core rules, esse projeto contm milhares de regras capazes de
mitigar as principais vulnerabilidades e ataques a aplicaes web.
V at o diretrio do apache e baixe a ltima verso do core rules:
chroot:~# cd /etc/apache2/ &&
wget https://codeload.github.com/SpiderLabs/owasp-modsecuritycrs/legacy.tar.gz/master

Descompacte o arquivo:
chroot:~# tar -xvzf master

Mude o nome do diretrio para ficar mais legvel


chroot:~# mv SpiderLabs-owasp-modsecurity-crs-ebe8790/ ModSecurity
chroot:~# cd ModSecurity/

Agora iremos renomear o arquivo modsecurity_crs_10_setup:


chroot:~# mv modsecurity_crs_10_setup.conf.example
modsecurity_crs_10_setup.conf

Agora iremos criar um link simblico para o diretrio activated_rules que como o prprio
nome j diz onde contm as regras ativas do nosso Mod Security
chroot:~# ln -s /etc/apache2/ModSecurity/modsecurity_crs_10_setup.conf
/etc/apache2/ModSecurity/activated_rules/modsecurity_crs_10_setup.conf

Depois iremos copiar o arquivo modsecurity.conf e o unicode.mapping para o diretrio


do apache e renomear o modsecurity.conf:
chroot:~# cp /opt/modsecurity-2.8.0/modsecurity.conf-recommended
/etc/apache2/ModSecurity/
chroot:~# cp /opt/modsecurity-2.8.0/unicode.mapping /etc/apache2/ModSecurity
chroot:~# mv modsecurity.conf-recommended modsecurity.conf

12

Modifique o local dos logs do Mod Security, abra o arquivo modsecurity.conf e procure a
entrada SecAuditLog e deixe como mostrado abaixo:
chroot:~# vi modsecurity.conf

SecAuditLog /var/log/apache2/modsec_audit.log

Depois disso iremos criar os arquivos mod_security2.conf e mod_security2.load para


ativar o modulo do Mod Security no Apache:
chroot:~# cd ../mods-available/
chroot:~# vi mod_security2.conf

Inclua o seguinte contedo no arquivo:


<IfModule security2_module>
SecDataDir /var/cache/modsecurity
Include /etc/apache2/ModSecurity/modsecurity.conf
Include /etc/apache2/ModSecurity/activated_rules/*.conf
</IfModule>
chroot:~# vi mod_security2.load

Adicione as seguintes linhas no arquivo:


LoadFile /usr/lib/libxml2.so.2
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

Agora iremos criar um link simblico para a biblioteca do xml2:


chroot:~# ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/libxml2.so.2

Ative o modulo do Mod Security e o modulo Unique_Id no apache:


chroot:~# a2enmod unique_id
chroot:~# a2enmod mod_security2

Reinicie o apache:
chroot:~# service apache2 restart

Execute o comando abaixo para listar os mdulos ativos:


13

chroot:~# apachectl -t -D DUMP_MODULES

Verifique se a sada contm os mdulos abaixo:


unique_id_module (shared)
security2_module (shared)

Pronto agora nosso Mod Security j est funcionando, vamos configurar as regras, entre
no diretrio base_rules e copie todas as regras para o activated_rules:
chroot:~# cd ../ModSecurity/base_rules/
chroot:~# cp * /etc/apache2/ModSecurity/activated_rules/

Agora entre no diretrio slr_rules e copie todas as regras para o activated_rules:


chroot:~# cd ../slr_rules/
chroot:~# cp modsecurity_crs_46_slr_et_wordpress_attacks.conf
/etc/apache2/ModSecurity/activated_rules/

Copie tambm as regras especificas para o WordPress:


chroot:~# cp modsecurity_46_slr_et_wordpress.data
/etc/apache2/ModSecurity/activated_rules/

Depois entre no diretrio optional_rules e copie as seguintes regras para o


activated_rules:
chroot:~# cd ../optional_rules/
chroot:~# cp modsecurity_crs_42_comment_spam.conf ../activated_rules/
chroot:~# cp modsecurity_42_comment_spam.data ../activated_rules/
chroot:~# cp modsecurity_crs_16_session_hijacking.conf ../activated_rules/

Entre no diretrio experimental_rules e copie as seguintes regras para o


activated_rules:
chroot:~# cd ../experimental_rules
chroot:~# cp modsecurity_crs_11_brute_force.conf ../activated_rules/
chroot:~# cp modsecurity_crs_11_dos_protection.conf ../activated_rules/
chroot:~# cp modsecurity_crs_11_proxy_abuse.conf ../activated_rules/

Baixe o banco de dados de Geo Ip para a regra de Proxy Abuse poder funcioar:
14

chroot:~# cd ..
chroot:~# wget
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
chroot:~# gunzip GeoLiteCity.dat.gz

Agora modifique o local do db no arquivo modsecurity_crs_11_proxy_abuse.conf:


chroot:~# vi activated_rules/modsecurity_crs_11_proxy_abuse.conf

Procure a entrada SecGeoLookupDb e deixe assim:


SecGeoLookupDb /etc/apache2/ModSecurity/GeoLiteCity.dat

Agora desative a regra que bloqueia o acesso por ip ao nosso site, comente a linha 98
do arquivo modsecurity_crs_21_protocol_anomalies.conf:
chroot:~# vi activated_rules/modsecurity_crs_21_protocol_anomalies.conf

Reinicie o Apache
chroot:~# service apache2 restart

Agora de o comando abaixo para acompanhar os logs gerados pelo Mod Security.
Lembre-se que o Mod Security ainda no est bloqueando os ataques, ele est
simplesmente gerando alerta. No incio muito importante voc no ativar o Mod
Security pois voc vai receber muitos falsos positivos, o ideal voc analisar os logs e
criar as excees para diminuir o mximo de falsos positivos possveis.
chroot:~# tail -f /var/log/apache2/modsec_audit.log

Depois no seu browser, realize algum ataque, pode ser Sql Injection, XSS ou rodar algum
scanner como o w3af, wpScan ou o Nikto, depois veja os alertas sendo gerados no
terminal.
Para fazer o Mod Security bloquear os ataques voc vai abrir o arquivo modsecurity.conf
e procurar a entrada SecRuleEngine:
chroot:~# vi modsecurity.conf

Deixe a entrada SecRuleEngine assim:


#SecRuleEngine DetectionOnly

15

SecRuleEngine On

Reinicie o Apache
chroot:~# service apache2 restart

Agora faa um teste, no seu browser, clique em algum post e coloque uma aspa no
final, assim:
http://seu.servidor/?p=1

Voc dever receber um forbidden, isso significa que seu Mod Security est bloqueando
os ataques. Para ajustar seu Mod Security voc vai precisar criar as excees, para isso
voc precisar analisar os logs para ver o que aconteceu. Por exemplo, ao entrar
no http://seu.servidor/?p=1, voc vai receber um Forbidden, ento v at o log e veja o
que aconteceu:
chroot:~# vi /var/log/apache2/modsec_audit.log

Voc vai ver algo parecido com isso:


--06af3f02-A-[03/Aug/2014:20:47:38 +0000] U96f6sCoCrQAAAsWFAsAAAAA 192.168.0.104 57357
192.168.0.102 80
--06af3f02-B-GET /?p=1%27 HTTP/1.1
Host: 192.168.0.102
Connection: keep-alive
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/36.0.1985.125 Safari/537.36
DNT: 1
Accept-Encoding: gzip,deflate,sdch

16

Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4

--06af3f02-F-HTTP/1.1 403 Forbidden


Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 179
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

--06af3f02-E-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">


<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.</p>
</body></html>

--06af3f02-H-Message: Access denied with code 403 (phase 2). Pattern match
"(^[\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\x98;]+|[\"'`\xc2\xb4\xe2\x80\x99\xe2\x80\
x98;]+$)" at ARGS:p. [file
"/etc/apache2/ModSecurity/activated_rules/modsecurity_crs_41_sql_injection_att
acks.conf"] [line "64"] [id "981318"] [rev "2"] [msg "SQL Injection Attack:
Common Injection Testing Detected"] [data "Matched Data: ' found within

17

ARGS:p: 1'"] [severity "CRITICAL"] [ver "OWASP_CRS/2.2.9"] [maturity "9"]


[accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/SQL_INJECTION"] [tag "WASCTC/WASC19"] [tag "OWASP_TOP_10/A1"] [tag "OWASP_AppSensor/CIE1"] [tag "PCI/6.5.2"]
Action: Intercepted (phase 2)
Stopwatch: 1407098858733652 2223 (- - -)
Stopwatch2: 1407098858733652 2223; combined=764, p1=251, p2=355, p3=0, p4=0,
p5=111, sr=57, sw=47, l=0, gc=0
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.8.0 (http://www.modsecurity.org/);
OWASP_CRS/2.2.9.
Server: Apache
Engine-Mode: "ENABLED"

--06af3f02-Z--

Provavelmente voc ir receber mais alguns alertas, ento voc dever fazer o mesmo
processo at que acerte as regras do Mod Security para no gerar mais esses falsos
positivos, coloque o Mod Security em DetectionOnly e analise os alertas.

4. Mod Evasive
O Apache tem algumas ferramentas para auxlio a proteo da sua mquina e uma delas
o mod_evasive, que proteger pelo menos o DDOS. Mod_evasive um mdulo de
segurana do Apache que proporciona bloqueio de acessos em massa ou ataques de
fora bruta ao site. A inteno dele bloquear e separar os acessos em massa a rea,
atravs de uma interface que guarda os acessos gerando uma blacklist dos acessos
impedindo o acesso dos mesmos por um tempo configurvel.

Se o IP do cliente existe na lista temporria de IPS.


Acessos simultneos a pginas, configurando o tempo de acesso as pginas
o default de 1 segundo.
Nmero de requisies ao site como um todo.
18

A ideia retornar o status code 403 - forbidden para os acessos aps terem sido
bloqueados. Aps 10 segundos, perodo padro de bloqueio, o cliente tem acesso
proibido ao site. A ativao do recurso bem fcil. O mod_evasive funciona nas duas
verses de Apache: 1.3 e 2.0.
Veja abaixo os passos de instalao:
chroot:/opt# cd /opt/
chroot:/opt# tar -zxvf mod_evasive_1.10.1.tar.gz
chroot:/opt# cd mod_evasive
chroot:/opt/mod_evasive# apxs2 -c -i -a mod_evasive20.c

Aps instalarmos o mod_evasive sem erros, vamos a sua configurao:


chroot:/opt/mod_evasive# vi /etc/apache2/conf.d/evasive
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
DOSEmailNotify users@example.com
DOSLogDir /var/log/mod_evasive
</IfModule>

chroot:/opt/mod_evasive# /etc/init.d/apache2 restart


chroot:/opt/mod_evasive/apache2# apachectl M
Com a configurao setada, as tentativas de ataque sero bloqueadas por 10 minutos. O
tempo de bloqueio pode ser menor ou maior, de acordo com sua necessidade.
Vamos uma breve explicao dos parmetros configurados acima:

DOSHashTableSize = essa opo interessante ser deixada em seu valor


padro, pois quanto maior, mais memria do servidor ser consumida. S deve
ser aumentada para servidores que possuem um grande nmero de requisies.

DOSPageCount = quantidade mxima de requisies feitas por um mesmo


cliente, em uma mesma sesso uma mesma pgina antes de ser bloqueado.

DOSSiteCount = quantidade mxima de requisies feitas por um mesmo


cliente, em uma mesma sesso a qualquer objeto do site antes de ser bloqueado.

DOSPageInterval = valor em segundos do tempo em que uma pgina far


a contagem da quantidade de requisies.

DOSSiteInterval = valor em segundos do tempo em que o site far a


contagem da quantidade de requisies.

DOSBlockingPeriod = tempo em segundos que o IP suspeito ficar


bloqueado atravs de regras criadas no firewall.

DOSEmailNotify = e-mail para o qual ser enviada uma mensagem todas as


vezes que um ataque for detectado.
19

DOSLogDir = diretrio onde sero armazenados os logs da aplicao.

10.Mod QoS
Em redes de computadores, o termo qualidade de servio (QoS) descreve a gesto
de recursos e no a qualidade de um servio. Qualidade de servio implementa
mecanismos de controle para fornecer diferentes prioridades para diferentes
usurios, aplicaes e conexes. usado para garantir um determinado nvel de
desempenho de recursos de dados. O termo qualidade de serv io muitas vezes
usado no campo de protocolos de rede de maior amplitude (por exemplo, ATM) e
telefonia (por exemplo, VoIP), mas raramente em conjunto com aplicaes web.
O mod_qos um mdulo de qualidade de servio para o servidor web Apache que
implementa mecanismos de controle que podem apresentar diferentes nveis de
prioridade s diferentes requisies HTTP. Ultimamente, com a popularizao do ataque
de DDoS com a ferramenta Slowloris, o mod_qos vem se popularizando, pois uma das
poucas ferramentas que pode mitigar esse ataque to devastador, que as vezes apenas
um atacante executando essa ferramenta, pode derrubar um servidor WEB com
aplicaes crticas.

Veja abaixo os passos de instalao:

chroot:/opt# cd /opt/
chroot:/opt# tar -zxvf mod_qos-11.4.tar.gz
chroot:/opt# cd mod_qos-11.4/apache2
chroot:/opt/mod_qos-11.4/apache2# apxs2 -c -i -a mod_qos.c
chroot:/opt/mod_qos-11.4/apache2# /etc/init.d/apache2 restart
chroot:/opt/mod_qos-11.4/apache2# apachectl -t -D DUMP_MODULES
chroot:/opt/mod_qos-11.4/apache2# vi /etc/apache2/mods-available/qos.load
chroot:/opt/mod_qos-11.4/apache2# ls /usr/lib/apache2/modules/mod_qos.so
chroot:/opt/mod_qos-11.4/apache2# vi /etc/apache2/mods-available/qos.conf

20

## Configurao de QoS
<IfModule mod_qos.c>
# manipula conexes de no maximo 100000 IPs diferentes
QS_ClientEntries 100000
# permitir apenas 50 conexes por IP
QS_SrvMaxConnPerIP 50
# nmero mximo de conexes TCP ativas est limitado em 256
MaxClients 256
# desabilita o keep-alive quando 70% das conexes TCP estiverem ocupadas
QS_SrvMaxConnClose 180
#

velocidade

mnima

de

requisio/respa (bloqueia

clientes

lentos

que

ocupam servidor, ie., como o slowloris que mantm conexes abertas sem requisitar
dad)
QS_SrvMinDataRate 150 1200
# e limita requisio de header e body (cuidado, pois isso tambm limita
requisi upload e post)
# LimitRequestFields 30
# QS_LimitRequestBody 102400
</IfModule>

chroot:/opt/mod_qos-11.4/apache2# a2enmod qos


chroot:/opt/mod_qos-11.4/apache2# /etc/init.d/apache2 restart
chroot:/opt/mod_qos-11.4/apache2# apachectl -M

Com essa configurao, ficaremos protegidos contra ataques de negao de servio que
baseiam sua ao em sobrecarregar o servidor, ocupando todos os seus slots de conexo
e no permitindo conexes vlidas de clientes reais aplicao web. Um exemplo de
ferramenta que executa esse tipo de ataque o Slowloris. A explicao de cada uma das
opes de configurao, encontra-se acima.

21

11.Mod Limitipconn
Limitar que usurios abusem da banda de nosso servidor realizando grandes quantidades
de downloads interessante, para evitar indisponibilidade ou gasto desnecessrio de
banda limitada. Isso atualmente fcil de fazer no Apache, utilizando o mod_limitipconn,
onde podemos, por exemplo, limitar 20 threads de download simultneos. Para utilizar
esse mdulo, precisamos ter o pacote apache2-prefork-dev instalado, mas como j
fizemos isso ao instalar o mod_security e os demais mdulos anteriormente, no
precisamos nos preocupar com isso.

Vamos para a instalao:


chroot:/var/log/apache2# cd /opt/
chroot:/opt# tar -xjvf mod_limitipconn-0.24.tar.bz2
chroot:/opt# cd mod_limitipconn-0.24
chroot:/opt/mod_limitipconn-0.24# apxs2 -c -i -a mod_limitipconn.c
chroot:/opt/mod_limitipconn-0.24# vi /etc/apache2/mods-available/limitipconn.load

ExtendedStatus On
LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so

chroot:/opt/mod_limitipconn-0.24# vi /etc/apache2/modsavailable/limitipconn.conf

<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 10
NoIPLimit image/*
</Location>
</IfModule>

22

chroot:/opt/mod_limitipconn-0.24# /etc/init.d/apache2 restart


chroot:/opt/mod_limitipconn-0.24# apachectl M

12.OSSEC
OSSEC um sistema de cdigo aberto baseado em Host Intrusion Detection que realiza
anlise de log, checagem de integridade de arquivos, monitoramento de polticas,
deteco de rootkit, alertas em tempo real e resposta ativa. Ele roda na maioria dos
sistemas operacionais, incluindo Linux, MacOS, Solaris, HP-UX, AIX e Windows. Ele tem
muitas funcionalidades, tm a capacidade de trabalhar localmente, ou em uma rede
como cliente e servidor. Uma das grandes vantagens dos OSSEC trabalhar com activeresponse, ou seja, para determinados tipos de ataques ele pode tomar algumas medidas
como bloquear o IP que est atacando por um determinado tempo e mandar um e-mail
alertando sobre o ocorrido.

Vamos a instalao:
chroot:/opt/mod_limitipconn-0.24# cd /opt
chroot:/opt# tar -zxvf ossec-hids-2.8.tar.gz
chroot:/opt# cd ossec-hids-2.8
chroot:/opt/ossec-hids-2.8# ./install.sh

** Para instalao em portugus, escolha [br].


** ?????????, ??? [cn].
** Fur eine deutsche Installation wohlen Sie [de].
** G?a e??at?stas? sta ????????, ep????te [el].
** For installation in English, choose [en].
** Para instalar en Espaol , eliga [es].

23

** Pour une installation en franais, choisissez [fr]


** A Magyar nyelvu teleptshez vlassza [hu].
** Per l'installazione in Italiano, scegli [it].
** ?????????????.???????.[jp].
** Voor installatie in het Nederlands, kies [nl].
** Aby instalowac w jezyku Polskim, wybierz [pl].
** ??? ?????????? ?? ????????? ?? ??????? ,??????? [ru].
** Za instalaciju na srpskom, izaberi [sr].
** Trke kurulum iin sein [tr].
(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: br

Em seguida, s seguir com a instalao, pois auto intuitiva, bem simples.


Vamos agora para a instalao da Interface WEB:

chroot:/opt/ossec-hids-2.8# /var/ossec/bin/ossec-control start


chroot:/opt/ossec-hids-2.8# cd ..
chroot:/opt# tar -zxvf ossec-wui-0.8.tar.gz -C /var/www/
chroot:/opt# cd /var/www/
chroot:/var/www# mv ossec-wui-0.8 ossec
chroot:/var/www# cd ossec/
chroot:/var/www/ossec# ./setup.sh

Setting up ossec ui...

Username: admin
New password:
Re-type new password:
Adding password for user admin

24

Enter your web server user name (e.g. apache, www, nobody, www-data, ...)
www-data
Enter your OSSEC install directory path (e.g. /var/ossec)

You must restart your web server after this setup is done.

Setup completed successfuly.

chroot:/var/www# usermod -a -G ossec www-data


chroot:/var/www# /etc/init.d/apache2 restart

13.Mysql
Para finalizar nosso ambiente seguro, vamos instalar o mysql, porem isto ser feito fora
do chroot. O intuito que se um atacante por ventura, depois de todas as protees que
fizemos conseguir acesso ao chroot, no ter acesso ao mysql. O ambiente chroot
consegue se conectar ao mysql pelo compartilhamento do /proc que fizemos no inicio
do curso. Colocando o mysql fora do chroot, temos mais uma camada de segurana em
nosso ambiente.

Vamos a instalao:

# apt-get install mysql-server


# ln -s /var/run/mysqld/mysqld.sock
/var/webserversecurity/var/run/myslqd/mysqld.sock
# mysql -uroot -p

# vi /etc/mysql/my.cnf

25

bind-address

= 192.168.10.180

# /etc/init.d/mysql restart

26

Вам также может понравиться