[FUG-BR] Bloquear ataques

Marcelo Gondim gondim em bsdinfo.com.br
Quarta Março 28 11:52:42 BRT 2012


Em 28/03/2012 10:24, Marco Aurélio V. da Silva escreveu:
> Caros,
>
> É o seguinte, tenho sofrido ataques a um servidor meu dns que tem variado o ip de origem. Segue log feito utilizando tcpdump:
>
> IP (tos 0x0, ttl 64, id 49078, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->261c)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49079, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->261b)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49080, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->261a)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49081, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2619)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49082, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2618)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49083, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2617)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49084, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2616)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49085, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2615)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49086, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2614)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
> IP (tos 0x0, ttl 64, id 49087, offset 0, flags [none], proto UDP (17), length 29, bad cksum 0 (->2613)!) xxx.xxx.xxx.xxx.59663>  91.204.161.226.46325: [bad udp cksum c007!] UDP, length 1
>
> Poderiam me dar uma dica de como bloquear estes ataques ? Inicialmente eu tenho adicionado regras do ipfw para bloquear os ips, mas a cada ataque o ip muda.
>
> Desde já agradeço a atenção recebida.

Bem você poderia tentar algumas coisas:

1) Setar política default no ipfw como drop adicionando como últimas linhas:

ipfw add allow tcp from me to any out setup keep-state
ipfw add allow all from me to any out keep-state
ipfw add 65534 deny log all from any to any

As regras acima libera as saídas do seu servidor de dns e bloqueia o 
restante. Logicamente que você vai ter que ter as regras antes liberando 
suas portas de entrada.

2) liberar apenas pacotes que sejam: arp, rarp e ipv4:

# So passa IPv4
# habilitar net.link.ether.ipfw=1
# ip         0x0800
# ipv4       0x0800
# ipv6       0x86dd
# arp        0x0806
# rarp       0x8035
# vlan       0x8100
# loop       0x9000
# trail      0x1000
# at         0x809b
# atalk      0x809b
# aarp       0x80f3
# pppoe_disc 0x8863
# pppoe_sess 0x8864
# ipx_8022   0x00E0
# ipx_8023   0x0000
# ipx_ii     0x8137
# ipx_snap   0x8137
# ipx        0x8137
# ns         0x0600
ipfw add allow all from any to any layer2 mac-type ipv4,arp,rarp

Para usar esse recurso precisa habilitar net.link.ether.ipfw=1 no 
/etc/sysctl.conf e ativar ele.
IMPORTANTE!!! Lembrando que se a última linha do seu firewall for DROP 
pra tudo e habilitar net.link.ether.ipfw=1... se não houver a regra 
acima e outras regras liberando suas portas de acesso ao servidor, vai 
travar o acesso remoto à essa máquina.  :)

Aqui no meu caso descobri uns pacotes estranhos vindos da minha 
operadora e comecei à barrar eles e informei a operadora. Chegava 
pacotes de outras empresas na minha vlan.
Pode não ser seu caso mas é bom filtrar. Se você tiver trânsito IPv6 não 
esquecer de habilitar na regra o ipv6 também.

3) Nas liberações dos serviços se for udp coloca um "limit src-addr 1", 
por exemplo, mas vai depender da sua necessidade. Com essa regra você 
limitaria até 1 conexão vinda do mesmo IP para o seu serviço.

Exemplo: ipfw add allow tcp from any to me 22 setup limit src-addr 
1      nesse caso estou limitando apenas 1 conexão vinda de um mesmo IP 
na porta do ssh. É uma boa proteção para DoS.

O "setup" você só usa em conexões TCP porque ele obriga a conexão fazer 
o 3 way hadshake.

Mais uns carinhas legais no sysctl.conf:

net.inet.ip.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.maskrepl=0
net.inet.icmp.log_redirect=0
net.inet.icmp.drop_redirect=1
net.inet.tcp.drop_synfin=1

Bem essas são algumas dicas mas vale muito de como você configurou seu 
sistema e suas regras.

> Marco Aurélio V. da Silva
> marco em prodatanet.com.br
> marcoprodata em gmail.com
> msn: marco em prodatanet.com.br
> Prodata Inf. e Cadastros LTDA
> (33) 3322-4444
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>



Mais detalhes sobre a lista de discussão freebsd