[FUG-BR] Ataque de DDoS tem como evitar ?
Marcelo Soares da Costa
unixmafia em yahoo.com.br
Quinta Setembro 6 14:58:42 BRT 2007
Esse tread cresceu bastante , como disse o colega de lista o semaninha
danada ...
Bem vou espor umas idéias , vou tentar ser um Mythbuster ..... mesmo que
eu não tenha tanto talento qto.
http://www.discoverybrasil.com/cacadores_funsite/
a pergunta é :
Ataque de DDoS tem como evitar ?
Resposta: Não, porque enquanto existir jovens espinhentos que não
praticam sexo sempre tera um desses querendo mostrar o poder de querer
ser um "HACKER" fazendo papel de "LAMER".
Mas se isso é um fato , o quanto eu estou vuneravel a este tipo de
ataque ?
Bem a definição disso passa por muitas coisas , com o aumento das bandas
de conexão é digamos até esperado que esse tipo de ataque seja mais
frequente e tenha maior probabilidade de atingir algum tipo de objetivo,
isso é se isso tem algum objetivo além de gerar discussões,
controvérsias e aborrecimento para algumas pessoas.
Em contrapartida isso não tem nada de novidade é historicamente poucos
desses ataques tiveram realmente destaques mundiais , um lá pelos idos
de 1996 que tirou boa parte do que era uma redezinha internacional
funcionando que era usada denominada internet e o caso mais famoso na
minha opinião que vou o ataque em massa ao Yahoo onde o destaque foram
os servidores FreeBSD que sobreviveram muito bem. Desde então muita
coisa mudou , os sistemas operacionais evoluiram e temos o cenario
atual, alguma referencia pode ser encontrada :
http://en.wikipedia.org/wiki/Denial-of-service_attack
A resposta é que se voce tem um bom sistema bem configurado , não estou
me referindo a um OS específico , quase certo que voce de certa maneira
esta imune a este tipo de ataque, todos os sistemas adotaram ações
pró-ativas contra esses ataques, excessões podem existir lógico.
Bem essa lista trata de FreeBSD e seus "Primos" , então focando nisso
podemos considerar :
Todos os BSD's tem proteção pró-ativa contra DDOS !!!!
Experimente vc mesmo ai na sua rede "flodar" um BSD , olhe o prompt e
vera mensagens do sistema descartando pacotes , isso não requer qualquer
tipo de ação ou setup, é um recurso de segurança dos sistemas BSD's.
Dai então a pergunta :
Então vc pode simplemente ignorar um ataque DDOS ?
Resposta : Não , não deve , vc deve ter o maximo de preocupação com
isso , mesmo porque saiba-se lá o que pode estar por detraz de um ataque
desses, vc deve ao menos tomar providencias com a intenção de ao menos
desistimular os esfeitos colaterais desses ataques.
Como isso pode ser feito ?
Bem qualquer filtro de pacote tem, ou deveria ter , mecanismos que
bloqueam pacotes cujo objetivo são simplesmente causar problemas.
Onde vc encontra informações sobre como configurar meu firewall para
isso ?
Resposta : No manual horas, Handbook
Uma das referencias especifica para IPFW
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html
Onde na página do Handbook estão essas informações ?
Bem veja as descrições e recomendações para uma configuração eficiente
do firewall.
Logo no primeiro exemplo :
Start your rules file like this:
############### start of example ipfw rules script #############
#
ipfw -q -f flush # Delete all rules
# Set defaults
oif="tun0" # out interface
odns="192.0.2.11" # ISP's DNS server IP address
cmd="ipfw -q add " # build rule prefix
ks="keep-state" # just too lazy to key this each time
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks
$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks
$cmd 00611 allow udp from any to $odns 53 out via $oif $ks
################### End of example ipfw rules script ############
Note as regras :
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
A primeira busca por regras dinamicas , esse é uma boa ação , usar
regras dinamicas ao invéz de estáticas , pois assim diminue em muito o
processamento necessário para definir o que fazer com um determinado
pacotes. A segunda descarta os pacotes fragmentados e a terceira e mais
importante "DESCARTA pacotes marcados como established , pois eles não
deveriam estar ai correto ? Afinal o que faz o check-state antes ,
aceita os pacotes criados por regras dinamicas do seu firewall , então
se o pacote não se encaixou no check-state ele tem mais é que ser
descartado mesmo.
Mais sera tão simples assim ? Somente isso é suficiente ?
Sim e não, simples mas apenas o suficiente para voce não ter efeitos
colaterais ao seus servidores , voce pode melhorar ainda se entender o
que vem ser um ataque DDOS. Regras como essas são um passo importante
IPFW :
# Bloqueia pacotes com opções de Source Routing e Record Route do Cabecalho IP ativadas.
add 00001 deny tcp from any to any ipoptions ssrr,lsrr,rr
# Bloqueio de pacotes com combinações estranhas de flags do protocolo TCP
add 00003 deny tcp from any to any tcpflags syn,fin
add 00004 deny tcp from any to any tcpflags syn,rst
PF :
## NORMALIZATION - Scrubbing will automatically drop TCP packets that
# have invalid flag combinations, so there's no need for typical 'anti-portscan'
scrub in on $ext_if
scrub out on $ext_if no-df random-id min-ttl 24 max-mss 1492
Ou seja , um ataque DDOS é simplemente o envio de um monte de pacote com
o objetivo de "atolar" sua rede , para conseguirem fazer isso precisam
rodar scripts que enviam randomicamente pacotes com todos os tipos de
combinações possiveis , alguns ataques podem ser direcionados a portas,
de serviços especificas ou mesmo protocolos como ICMP, então uma boa
prática poderia ser tambem uma boa filtragem de ICMP.
do man ipfw :
icmptypes types
Matches ICMP packets whose ICMP type is in the list types.
The
list may be specified as any combination of individual
types
(numeric) separated by commas. Ranges are not allowed. The
sup-
ported ICMP types are:
echo reply (0), destination unreachable (3), source quench
(4),
redirect (5), echo request (8), router advertisement (9),
router
solicitation (10), time-to-live exceeded (11), IP header
bad
(12), timestamp request (13), timestamp reply (14),
information
request (15), information reply (16), address mask request
(17)
and address mask reply (18).
Descartar icmp tipo 3 e 5 vindo da interface externa e não deixando sair
icmp tipo 0 e 8 da sua rede interna para o mundo são uma boa prática
add 00018 deny icmp from any to any via $ext_if in icmptypes 3,5
add 00018 deny icmp from any to any via $ext_if out icmptypes 0,8
Ah , uma referenciazinha , sera que tem BSD lá a algum tempo?
http://www.rnp.br/newsgen/9901/ipfw-bsd.html
Mas a pergunta persiste , assim eu fico imune ao ataque DDOS ?
Resposta : Sua rede fica imune , vc não precisa usar nenhuma solução
comercial , ipfw e pf ajudam mas seu BSD já ta pronto para aguentar o
tranco mas o seu link com a internet cheio de pacotes "voando" de uma ou
de varias origens isso esta fora do seu alcance , portando depende do
seu fornecedor de link/operadora, procure obter o máximo de informação
após um ataque , tente contatos, reporte o ataque ao CERT , pois a
melhor maneira de realmente diminuir ataques é fazendo com que as
consequencias para quem faz isso seja bastante ruim, crie logs , mas
cuidado para não tomar muito remédio e fica envenenado, veja no
handbook:
28.6.5.3 Logging Firewall Messages
....................
Logging is a two edged sword, if you are not careful, you can lose
yourself in the over abundance of log data and fill your disk up with
growing log files. DoS attacks that fill up disk drives is one of the
oldest attacks around. These log message are not only written to
syslogd, but also are displayed on the root console screen and soon
become very annoying.
O que mais pode ser feito ?
Se vc implementar sugestões como as acima o "pentelho" vai sentir
dificuldade em "scanear" sua rede , isso já sera um dado positivo pois
vai desestimular o ataque , soluções com portsentry e snort ajudam ainda
mais a desestimular esses "meninos".
Bem o afinal de contas qual o mito ?
Bem isso digo agora num precisa de solução mirabolante ou comercial ou
produzida pelos "super hiper entendidos " que vendem seus produtos ,
voce mesmo pode fazer isso no seu BSD se tiver um pouco de dedicação e
bastante pesquisa em sites e manuais, e digo mais vai funcionar melhor
ainda já que vc não tem que atender a "Gregos e Troianos".
So para lembrar que :
http://www.fug.com.br/content/view/353/2/
Bem espero ter ajudado , mais informações , mais detalhes sobre PF podem
enrriquecer essa thead
abraço e boa sorte a todos
Mais detalhes sobre a lista de discussão freebsd