Настройка файервола в Solaris немного необычна, но не такая сложная, как кажется. Она состоит из нескольких этапов
Тестовый стенд: Solaris 11
1) Подготовка к запуску.
По умолчанию он отключенё. Это можно проверить состоянием файервола (список правил):
# ipfstat -io
empty list for ipfilter(out)
empty list for ipfilter(in)
Файервол в Solaris, как и большинство компонент является сервисом, а значит управляется через svccfg. И так, изменим некоторые параметры:
#svccfg
svc:>select network/ipfilter:default
svc:/network/ipfilter:default>setprop firewall_config_default/policy = astring: "custom"
svc:/network/ipfilter:default>setprop firewall_config_default/custom_policy_file = astring: "/etc/ipf/ipf.conf"
svc:/network/ipfilter:default>exit
Теперь необходимо создать файл с правилами и написать хотя бы одно правило. Без этого файла или если файл будет пустой – ipfilter не запуститься. Добавим такие правила:
pass out quick all
pass in quick all
2) Запуск файервола.
Запуск происходит как запуск обычного сервиса:
#svcadm enable svc:/network/ipfilter:default
# svcs -a | grep ipfilter
online 17:55:23 svc:/network/ipfilter:default
3) Работа с файерволом
Посмотрим список правил, а заодно и статистику по правилам:
# ipfstat -iov
407 49895 pass out quick all
2559 268272 pass in quick all
Посмотреть общую статистику
#ipfstat bad packets: in 0 out 0 IPv6 packets: in 92 out 52 input packets: blocked 0 passed 3651 nomatch 110 counted 0 short 0 output packets: blocked 0 passed 577 nomatch 56 counted 0 short 0 input packets logged: blocked 0 passed 1164 output packets logged: blocked 0 passed 179 packets logged: input 0 output 0 log failures: input 22 output 19 fragment state(in): kept 0 lost 0 not fragmented 0 fragment state(out): kept 0 lost 0 not fragmented 0 packet state(in): kept 0 lost 0 packet state(out): kept 0 lost 0 ICMP replies: 0 TCP RSTs sent: 0 Invalid source(in): 0 Result cache hits(in): 0 (out): 0 IN Pullups succeeded: 0 failed: 0 OUT Pullups succeeded: 0 failed: 0 Fastroute successes: 0 failures: 0 TCP cksum fails(in): 0 (out): 0 IPF Ticks: 2434 Packet log flags set: (0x10000000) packets passed through filter
Обнулить статистику без перезагрузки:
#ipf -z -f /etc/ipf/ipf.conf
Добавить налету правила (и затереть все текущие):
#ipf -F as -f /etc/ipf/ipf.conf
Подробнее об остальных возможностях файервола можно узнать из man svc.ipfd
Перечитать конфиг с правилами
#svcadm refresh ipfilter
Но при такой команде могут сброситься все активные сессии. Если вы редактируете только правила NAT’a, то можно делать так (что бы не сбрасывались сессии)
#ipnat -f /etc/ipf/ipnat.conf
4) ipfilter и зоны
ipfilter может работать с зонами, только следующим образом: для зон с shared-IP правила пишутся в глобальной зоне, а для зон с exclusive-IP – могут писаться прямо в самих зонах.
5) Логгирование.
Для логгирования в режиме реального времени существует утилита ipmon. Если просто её запустить, то на экране увидим такое:
#ipmon
09/12/2011 12:42:29.977815 2x net0 @0:1 p 10.5.5.133,22 -> 10.5.5.55,49572 PR tcp len 20 196 -AP OUT
09/12/2011 12:42:29.978091 net0 @0:1 p 10.5.5.55,49572 -> 10.5.5.133,22 PR tcp len 20 52 -A IN
09/12/2011 12:42:29.978261 2x net0 @0:1 p 10.5.5.133,22 -> 10.5.5.55,49572 PR tcp len 20 196 -AP OUT
09/12/2011 12:42:29.978507 net0 @0:1 p 10.5.5.55,49572 -> 10.5.5.133,22 PR tcp len 20 52 -A IN
09/12/2011 12:42:29.978678 2x net0 @0:1 p 10.5.5.133,22 -> 10.5.5.55,49572 PR tcp len 20 196 -AP OUT
09/12/2011 12:42:29.978924 net0 @0:1 p 10.5.5.55,49572 -> 10.5.5.133,22 PR tcp len 20 52 -A IN
09/12/2011 12:42:29.979093 2x net0 @0:1 p 10.5.5.133,22 -> 10.5.5.55,49572 PR tcp len 20 196 -AP OUT
09/12/2011 12:42:29.979348 net0 @0:1 p 10.5.5.55,49572 -> 10.5.5.133,22 PR tcp len 20 52 -A IN
У этой команды есть множество ключей, о которых можно прочесть в справочном руководстве.
Для более подробного изучения ipfilter можно так же использовать это руководство.