Ataques DoS (Denial of Service) e DDoS (Distributed DoS)
De
acordo com a definição do CERT (Computer Emergency Response Team), os
ataques DoS (Denial of Service), também denominados Ataques de Negação
de Serviços, consistem em tentativas de impedir usuários legítimos de
utilizarem um determinado serviço de um computador. Para isso, são
usadas técnicas que podem: sobrecarregar uma rede a tal ponto em que os
verdadeiros usuários dela não consigam usá-la; derrubar uma conexão
entre dois ou mais computadores; fazer tantas requisições a um site até
que este não consiga mais ser acessado; negar acesso a um sistema ou a
determinados usuários.
Os
ataques do tipo DoS mais comuns podem ser feitos devido a algumas
características do protocolo TCP/IP (Transmission Control Protocol /
Internet Protocol), sendo possível ocorrer em qualquer computador que o
utilize. Uma das formas de ataque mais conhecidas é a SYN Flooding,
onde um computador tenta estabelecer uma conexão com um servidor
através de um sinal do TCP conhecido por SYN (Synchronize). Se o
servidor atender o pedido de conexão, enviará ao computador solicitante
um sinal chamado ACK (Acknowledgement). O problema é que em ataques
desse tipo, o servidor não consegue responder a todas as solicitações e
então passa a recusar novos pedidos.
Outra
forma de ataque comum é o UPD Packet Storm, onde um computador faz
solicitações constantes para que uma máquina remota envie pacotes de
respostas ao solicitante. A máquina fica tão sobrecarregada que não
consegue executar suas funções.
Ataques DDoS
O
DDoS, sigla para Distributed Denial of Service, é um ataque DoS
ampliado, ou seja, que utiliza até milhares de computadores para atacar
uma determinada máquina. Esse é um dos tipos mais eficazes de ataques e
já prejudicou sites conhecidos, tais como os da CNN, Amazon, Yahoo,
Microsoft e eBay.
Para
que os ataques do tipo DDoS sejam bem-sucedidos, é necessário que se
tenha um número grande de computadores para fazerem parte do ataque.
Uma das melhores formas encontradas para se ter tantas máquinas, foi
inserir programas de ataque DDoS em vírus ou em softwares maliciosos.
Em
um primeiro momento, os hackers que criavam ataques DDoS tentavam
"escravizar" computadores que agiam como servidores na internet. Com o
aumento na velocidade de acesso à internet, passou-se a existir
interesse nos computadores dos usuários comuns com acesso banda larga,
já que estes representam um número muito grande de máquinas na
internet.
Para
atingir a massa, isto é, a enorme quantidade de computadores conectados
à internet, vírus foram e são criados com a intenção de disseminar
pequenos programas para ataques DoS. Assim, quando um vírus com tal
poder contamina um computador, este fica disponível para fazer parte de
um ataque DoS e o usuário dificilmente fica sabendo que sua máquina
está sendo utilizado para tais fins. Como a quantidade de computadores
que participam do ataque é grande, é praticamente impossível saber
exatamente qual é a máquina principal do ataque.
Quando
o computador de um internauta comum é infectado com um vírus com
funções para ataques DoS, este computador passa a ser chamado de zumbi.
Após a contaminação, os zumbis entram em contato com máquinas chamadas
de mestres, que por sua vez recebem orientações (quando, em qual
site/computador, tipo de ataque, entre outros) de um computador chamado
atacante. Após receberem as ordens, os computadores mestres as repassam
aos computadores zumbis, que efetivamente executam o ataque. Um
computador mestre pode ter sob sua responsabilidade até milhares de
computadores. Repare que nestes casos, as tarefas de ataque DoS são
distribuídas a um "exército" de máquinas escravizadas. Daí é que surgiu
o nome Distributed Denial of Service.
Impedindo e detectando ataques DoS
Apesar
de não existir nenhum meio que consiga impedir totalmente um ataque
DoS, é possível detectar a presença de ataques ou de computadores
(zumbis) de uma rede que estão participando de um DDoS. Para isso,
basta observar se está havendo mais tráfego do que o normal
(principalmente em casos de sites, seja ele um menos conhecido, como o
InfoWester, seja ele um muito utilizado, como o Google), se há pacotes
TCP e UDP que não fazem parte da rede ou se há pacotes com tamanho
acima do normal. Outra dica importante é utilizar softwares de IDS
(Intrusion Detection System - Sistema de Identificação de Intrusos).
Para
prevenção, uma das melhores armas é verificar as atualizações de
segurança dos sistemas operacionais e softwares utilizados pelos
computadores. Muitos vírus aproveitam de vulnerabilidades para efetuar
contaminações. Também é importante filtrar certos tipos de pacotes na
rede e desativar serviços que não são usados.
Fonte: http://www.infowester.com/col091004.php
Dicas para se dificultar a ação de Ddos
A equipe de segurança da LinuxSvr.Net tem algumas dicas aos clientes sel-managed.
- Utilize o Módulo Dos_Evasive (Apache)
Baixe o Módulo atual em http://www.nuclearelephant.com/projects/mod_evasive/
# wget http://www.linuxsvr.net/nocwork/security/mod_dosevasive-current.tar.gz
# tar -xzvf mod_dosevasive-current.tar.gz
# cd mod_dosevasive*
# /usr/local/apache/bin/apxs -i -a -c mod_dosevasive.c
# rm -rf mod_dosevasive-current.tar*
Edite o httpd.conf e inclua as linhas abaixo:
para Apache v1.3:
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
para Apache v2.0:
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
</IfModule>
- Utilize o APF Firewall
Baixe o módulo atual em http://www.r-fx.org/downloads/apf-current.tar.gz
# tar -xvzf apf-current.tar.gz
# cd apf*
# sh ./install.sh
# rm -rf apf*
Edite o arquivo conf.apf em /etc/apf e altere a linha abaixo
Troque
USE_AD="0"
Por
USE_AD="1"
Explore este arquivo, existem diversas outras opções que podem melhorar a perfomance.
- O filtro abaixo pode ser utilizado para gerenciar a resposta a pacotes e Syn´s.
Edite o arquivo /etc/rc.d/rc.local e adicione as linhas abaixo:
##### Begin DoS Prevention #####
# shut some DoS stuff down
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# increase the local port range
echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
# increase the SYN backlog queue
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 64000 > /proc/sys/fs/file-max
ulimit -n 64000
# stop source routing
for i in /proc/sys/net/ipv4/conf/*/accept_source_route
do
echo 0 > $i
done
# enable reverse-path filtering
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done
##### End DoS Prevention #####
É
importante saber que bloquear um ataque Ddos usando software é possível
em apenas 20% dos casos, e que é necessário perícia e conhecimento
técnico avançado para isso.
Para saber mais:
http://www.cert-rs.tche.br/docs_html/ddos.html
http://www.invasao.com.br/coluna-bytes-03.htm
http://www.istf.com.br/vb/showthread.php?t=3231
http://en.wikipedia.org/wiki/Denial_of_service
http://www.ddosworld.com
http://staff.washington.edu/dittrich/misc/ddos
http://www.ebcvg.com/articles.php?id=236
http://www.rnp.br/newsgen/0003/ddos.html
http://www.securitydocs.com/library/2774