Linux Firewall: Trucuri de filtrare ICMP

Acronimul ICMP vine de la Internet Control Message Protocol. După cum îi spune și numele ICMP este un protocol folosit pentru control și verifcări. În general se verifică funcționalitatea unor noduri ale rețelei. Folosit însă în exces de cineva rău intenționat poate provoca DoS sau chiar DDoS. Mai demult când mă întreba cineva ziceam: „Dai DROP și gata!”, practica însă spune că nui chiar așa.

Nu de puține ori dăm câte un ping la serverul respectiv, numai ca să verificăm că funcționează. Ce facem? Îl facem să accepte ping numai de la anumite adrese? Dacă se virusează astea și fac mai mult rău decât restul internetului la un loc?

Eu vă recomand așa:

  • creem un lanț nou, ICMP și direcționătm tot traficul ICMP către el(practica spune că e bine să creem grupurile de reguli ce țin de un anume protocol sau de un serviciu în lanțuri separate)
iptables -N ICMP
iptables -A INPUT -p icmp -j ICMP
iptables -A OUTPUT -p icmp -j ICMP
iptables -A FORWARD -p icmp -j ICMP
  • jurnalizăm și ignorăm pachetele ce depășesc de o anumită dimensiune (pachetele de control în general nu depășesc 1500, adică mai mult de cât MTU, dacă sunt mai mari e clar că ceva e în neregulă)
iptables -A ICMP -m length --length 1700:65507 -m limit --limit 1/sec -j LOG --log-prefix "ICMP TOO BIG: "
iptables -A ICMP -m length --length 1700:65507 -j DROP
  • acceptăm pachetele de tipul care ne interesează și în anumite limite
iptables -A ICMP -p icmp -m limit --limit 10/sec --limit-burst 20 -m icmp --icmp-type 0 -j ACCEPT #echo-reply
iptables -A ICMP -p icmp -m limit --limit 10/sec --limit-burst 20 -m icmp --icmp-type 8 -j ACCEPT #echo-request
iptables -A ICMP -p icmp -m limit --limit 3/sec -m icmp --icmp-type 3 -j ACCEPT #destination-unreachable (folosit la traceroute și mtr)
iptables -A ICMP -p icmp -m limit --limit 3/sec -m icmp --icmp-type 11 -j ACCEPT #time-exceeded
iptables -A ICMP -p icmp -m limit --limit 3/sec -m icmp --icmp-type 30 -j ACCEPT #traceroute
iptables -A ICMP -p icmp -m limit --limit 3/sec -m icmp --icmp-type 17 -j ACCEPT #address-mask-request
iptables -A ICMP -p icmp -m limit --limit 3/sec -m icmp --icmp-type 18 -j ACCEPT #address-mask-reply
  • jurnalizăm și ignorăm restul pachetelor
iptables -A ICMP -m limit --limit 1/sec -j LOG --log-prefix "DROP ICMP: "
iptables -A ICMP -j DROP

Aștept sugestii :)

2 comentarii la “Linux Firewall: Trucuri de filtrare ICMP

  1. -blank, space, whatever :)
    vreau doar sa primesc urmatoarele comentarii pe e-mail, dar nu ma lasa daca nu comentez si eu :)

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

*

Poți folosi aceste etichete HTML și atribute: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">