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

Автор: | 01/20/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