Назад | Перейти на главную страницу

iptables: разрешение только установленных исходящих соединений, таких как DMZ

Я хочу смоделировать сценарий, подобный DMZ, где server1 (внутри DMZ, 10.1.1.0) должен иметь возможность отвечать на любое входящее соединение и не может самостоятельно создавать новое исходящее соединение.

Буду признателен, если кто-нибудь предоставит рабочий пример.

Пример:

Я делаю простой тест. Я получаю доступ к веб-странице, размещенной по адресу 10.1.1.10, с 10.2.2.10. Так что, если бы это правило разрешало все входящие и только связанные / установленные исходящие, я мог бы открыть веб-страницу и сделать все на ней. Но с этим правилом я не могу получить доступ к веб-странице. Если я сделаю nc -v 80 из 10.2.2.10 (server2). Я добиваюсь успеха, а также могу видеть входящие пакеты в tshark

Я пробовал использовать правило iptables, но оно работает не так, как я ожидал

*filter
-A INPUT  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state NEW -j DROP
-A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
COMMIT

Iptables -L -nv output

iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1375  142K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    8   480 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW reject-with icmp-port-unreachable 
 1185 1346K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

PS:

Я использую CentOS 6.4.

Достаточно общий ответ (я уверен, что в другом месте на serverfault есть лучшие, если вы ищете): если iptables не работает так, как вы ожидаете, вам следует:

  • добавьте правила ведения журнала в соответствующих точках и следите за журналом по мере создания трафика
  • следите за счетчиками ваших правил с iptables -L -n -v как вы генерируете трафик
  • и (мой любимый) используйте препроцессор iptables, например Shorewall сделать тяжелую работу по созданию правил для вас