IPFW: фильтрация ICMP запросов

Автор: | 20/01/2012
 

Некоторые из ICMP запросов могут быть использованы со всякими плохими мыслями, поэтому лучше запретить их выполнение.

Полный список типов запросов/ответов приведен ниже:

 

  • 0 – echo reply (echo-ответ, пинг)
  • 3 – destination unreachable (адресат недосягаем)
  • 4 – source quench (подавление источника, просьба посылать пакеты медленнее)
  • 5 – redirect (редирект)
  • 8 – echo request (echo-запрос, пинг)
  • 9 – router advertisement (объявление маршрутизатора)
  • 10 – router solicitation (ходатайство маршрутизатора)
  • 11 – time-to-live exceeded (истечение срока жизни пакета)
  • 12 – IP header bad (неправильный IP-заголовок пакета)
  • 13 – timestamp request (запрос значения счетчика времени)
  • 14 – timestamp reply (ответ на запрос значения счетчика времени)
  • 15 – information request (запрос информации)
  • 16 – information reply (ответ на запрос информации)
  • 17 – address mask request (запрос маски сети)
  • 18 – address mask reply (ответ на запрос маски сети)

Вот такие правила получились у меня:

cmd=”ipfw -q add”
pif=”em0″

#Enable allow from world to me some types of ICMP
$cmd 00300 allow icmp from any to me in via $pif icmptype 3,8,12

#Enable some types of ICMP from me to world
$cmd 00310 allow icmp from me to any out via $pif icmptype 0,3,4,11,12

Так как последним у меня стоит правило “разрешать все”, то запретим прохождение “лишних” пакетов уже тут:

#Disable ICPM any another
$cmd 00320 deny log icmp from any to me in via $pif icmptype 5,9,10,13,15,17

После всего, не забудем перезагрузить IPFW:

# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
net.inet6.ip6.fw.enable: 1 -> 0
Firewall rules loaded.
Firewall logging enabled.

По материалам www.synack.ru