Ver Feed RSS

Brain Stress

Filtragem ICMP - Colocando limites (Mikrotik)

Avalie este Post de Blog
Alguém já imaginou o trafego ICMP que o UOL tem ? Todo mundo usa um "ping www.uol.com.br" como referencia !!

Montei algumas regras para permitir que o servidor aceite pings, porém controlados !! A idéia é:

- Aceitar somente pings que o pacote seja menor ou igual a 1500 bytes
- Aceitar 1 pacote icmp-echo por segundo
- o que não combinar com as 2 regras acima, é filtrado...

então montei as seguintes regras:

Código :
/ ip firewall filter \
add action=reject chain=input comment="" disabled=no icmp-options=8:0-255 packet-size=1529-65535 protocol=icmp reject-with=icmp-admin-prohibited
 
add action=accept chain=input comment="" disabled=no icmp-options=8:0-255 limit=1,5 protocol=icmp
 
add action=reject chain=input comment="" disabled=no icmp-options=8:0-255 protocol=icmp reject-with=icmp-admin-prohibited
- a primeira regra, filtra os pacotes que são maiores que 1500 bytes.
- a segunda regra, permite 1 pacote por segundo, sendo um burst de 5 ou seja, se alguem disparar apenas 5 pacotes, estes vão ser aceitos, passando de 5 pacotes por segundo ele ja limita a 1 por segundo.
- a terceira regra descarta todo echo-request porque passou das limitações impostas.

vejam os exemplos:

ping NORMAL, 1 pacote de 56 bytes por segundo:

Código :
$ ping 189.000.000.000
PING 189.000.000.000 (189.000.000.000) 56(84) bytes of data.
64 bytes from 189.000.000.000: icmp_seq=0 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=1 ttl=58 time=201 ms
64 bytes from 189.000.000.000: icmp_seq=2 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=3 ttl=58 time=188 ms
64 bytes from 189.000.000.000: icmp_seq=4 ttl=58 time=190 ms
64 bytes from 189.000.000.000: icmp_seq=5 ttl=58 time=188 ms
64 bytes from 189.000.000.000: icmp_seq=6 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=7 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=8 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=9 ttl=58 time=192 ms
Pacotes de 1500 bytes, 1 por segundo:
Código :
$ ping 189.000.000.000 -s 1500
PING 189.000.000.000 (189.000.000.000) 1500(1528) bytes of data.
1508 bytes from 189.000.000.000: icmp_seq=0 ttl=58 time=195 ms
1508 bytes from 189.000.000.000: icmp_seq=1 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=2 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=3 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=4 ttl=58 time=193 ms
1508 bytes from 189.000.000.000: icmp_seq=5 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=6 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=7 ttl=58 time=192 ms
1508 bytes from 189.000.000.000: icmp_seq=8 ttl=58 time=193 ms
1508 bytes from 189.000.000.000: icmp_seq=9 ttl=58 time=194 ms
Ping 56 bytes, 2 pacotes por segundo:
Código :
$ ping 189.000.000.000 -i 0.5
PING 189.000.000.000 (189.000.000.000) 56(84) bytes of data.
64 bytes from 189.000.000.000: icmp_seq=0 ttl=58 time=198 ms
64 bytes from 189.000.000.000: icmp_seq=1 ttl=58 time=192 ms
64 bytes from 189.000.000.000: icmp_seq=2 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=3 ttl=58 time=195 ms
64 bytes from 189.000.000.000: icmp_seq=4 ttl=58 time=188 ms
64 bytes from 189.000.000.000: icmp_seq=5 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=6 ttl=58 time=191 ms
64 bytes from 189.000.000.000: icmp_seq=7 ttl=58 time=189 ms
64 bytes from 189.000.000.000: icmp_seq=8 ttl=58 time=190 ms
64 bytes from 189.000.000.000: icmp_seq=9 ttl=58 time=191 ms
64 bytes from 189.000.000.000: icmp_seq=10 ttl=58 time=190 ms
[B][COLOR=Red]From 189.000.000.000 icmp_seq=11 Packet filtered[/COLOR][/B]
64 bytes from 189.000.000.000: icmp_seq=12 ttl=58 time=200 ms
[B][COLOR=Red]From 189.000.000.000 icmp_seq=13 Packet filtered[/COLOR][/B]
64 bytes from 189.000.000.000: icmp_seq=14 ttl=58 time=187 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=15 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=16 ttl=58 time=189 ms
[B][COLOR=Red]From 189.000.000.000 icmp_seq=17 Packet filtered[/COLOR][/B]
64 bytes from 189.000.000.000: icmp_seq=18 ttl=58 time=200 ms
[B][COLOR=Red]From 189.000.000.000 icmp_seq=19 Packet filtered[/COLOR][/B]
64 bytes from 189.000.000.000: icmp_seq=20 ttl=58 time=189 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=21 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=22 ttl=58 time=192 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=23 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=24 ttl=58 time=188 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=25 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=26 ttl=58 time=189 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=27 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=28 ttl=58 time=188 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=29 Packet filtered[/B][/COLOR]
64 bytes from 189.000.000.000: icmp_seq=30 ttl=58 time=189 ms
[COLOR=Red][B]From 189.000.000.000 icmp_seq=31 Packet filtered[/B][/COLOR]
Ping com pacotes de 1501 bytes, 1 por segundo
Código :
$ ping 189.000.000.000 -s 1501
PING 189.000.000.000 (189.000.000.000) 1501(1529) bytes of data.
[COLOR=Red]From 189.000.000.000 icmp_seq=0 Packet filtered
From 189.000.000.000 icmp_seq=1 Packet filtered
From 189.000.000.000 icmp_seq=2 Packet filtered
From 189.000.000.000 icmp_seq=3 Packet filtered
From 189.000.000.000 icmp_seq=4 Packet filtered
From 189.000.000.000 icmp_seq=5 Packet filtered
From 189.000.000.000 icmp_seq=6 Packet filtered
From 189.000.000.000 icmp_seq=7 Packet filtered
From 189.000.000.000 icmp_seq=8 Packet filtered
From 189.000.000.000 icmp_seq=9 Packet filtered
[/COLOR]
Ping com pacotes de 65507 bytes, 1 por segundo
Código :
$ ping 189.000.000.000 -s 65507
PING 189.000.000.000 (189.000.000.000) 65507(65535) bytes of data.
[COLOR=Red]From 189.000.000.000 icmp_seq=0 Packet filtered
From 189.000.000.000 icmp_seq=1 Packet filtered
From 189.000.000.000 icmp_seq=2 Packet filtered
From 189.000.000.000 icmp_seq=3 Packet filtered
From 189.000.000.000 icmp_seq=4 Packet filtered
From 189.000.000.000 icmp_seq=5 Packet filtered
From 189.000.000.000 icmp_seq=6 Packet filtered
From 189.000.000.000 icmp_seq=7 Packet filtered
From 189.000.000.000 icmp_seq=8 Packet filtered
From 189.000.000.000 icmp_seq=9 Packet filtered
[/COLOR]
Ping de 65507 bytes, 5 por segundo:
Código :
$ ping 189.000.000.000 -s 65507 -i 0.2
PING 189.000.000.000 (189.000.000.000) 65507(65535) bytes of data.
[COLOR=Red]From 189.000.000.000 icmp_seq=0 Packet filtered
From 189.000.000.000 icmp_seq=1 Packet filtered
From 189.000.000.000 icmp_seq=2 Packet filtered
From 189.000.000.000 icmp_seq=3 Packet filtered
From 189.000.000.000 icmp_seq=4 Packet filtered
From 189.000.000.000 icmp_seq=5 Packet filtered
From 189.000.000.000 icmp_seq=6 Packet filtered
From 189.000.000.000 icmp_seq=7 Packet filtered
From 189.000.000.000 icmp_seq=8 Packet filtered
From 189.000.000.000 icmp_seq=9 Packet filtered[/COLOR][COLOR=Red]
[/COLOR]
Grande abraço !!!

Atualizado 28-10-2009 em 10:47 por alexandrecorrea

Categorias
mikrotik , Artigos

Comentários

  1. Avatar de kalz
    Ae Alexandre, mto bom cara.

    Valeu pela dica mto util!!!!

    Abraços a todos
  2. Avatar de byosni
    gostaria de um regra que bloquease trafego de broadcast, pois ainda não achei....
    tanks
  3. Avatar de herlon2008
    Para icmp, 1500 bytes eu acho um numero muito alto, principalmente considerando que minha rede é wireless.

    Aplico estas mesmas regras, mas com tamanho de 85 bytes.

    Mas mesmo assim, tenho um consumo de banda com icmp alto e estou para implementar assim como em outros provedores de serviço, um limite de banda para icmp.

    Bloquear não acho correto, pois estaria limitando inumeros serviços.
  4. Avatar de herlon2008
    Quanto ao comentario de bloquear broadcast, isto é impossivel, dependemos dele para a rede funcionar.

    O ideal seria você diminuir os dominios de broadcast com redes menores. Faço isto através de Vlan para cada POP do provedor, o que , ajuda bastante.

    E utilizo PPPoE para conexão dos clientes.
  5. Avatar de lucasdenes
    muito Bom Parabens eu estou aprendendo bastante com essa dica
  6. Avatar de fsoaress76
    Acho que o google seguiu vc Alexandre. estava procurando esta solução e encontrei aqui.

+ Enviar Comentário