Некоторые из 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