Мы будем принимать только ICMP-сообщения об ошибках, все остальные приниматься не будут. Далее определим правила для цепочки netl-net2. Как уже было сказано выше, от нас требуется обеспечить доступ к сервисам WWW, FTP, ssh. Также нужно разрешить доступ к серверам SMTP, POPS, DNS, использование программ traceroute и ping (все отклоненные пакеты мы будем регистрировать в журнале). С этой целью определим следующие правила:
правила также разрешают вызов rsync к серверу Web. Теперь определим правила для цепочки inet-net2. Так как в сети 192.168.2.0 находятся серверы SMTP, DNS и Web, то определим ограничения для них. Почтовый сервер должен отправлять почту во внешнюю сеть (Интернет), а также принимать почту из внешней сети. На прием почты по протоколу POP3 имеют право только пользователи внутренней сети. Сервер имен (DNS-сервер) должен посылать запросы во внешнюю сеть, а также принимать запросы из внешней сети через шлюз. Сервер Web должен принимать запросы от пользователей всех сетей. Доступ rsync разрешен только для пользователей внутренних сетей. Все это реализуется следующими правилами:
Далее задаем правила цепочки net1-inet. Пользователи внутренней сети могут получать доступ к сервисам WWW, FTP внешней сети, использовать traceroute во внешнюю сеть. Нужно разрешить доступ к почтовому серверу, серверу имен, Web-серверу. Модуль masq обеспечит пассивный доступ к серверу FTP. Возможные нарушения будут регистрироваться. Пользователи внутренней сети также смогут использовать программу ssh для доступа к внешним узлам, и программу ping.
ipchains -A net1-inet -p icmp -icmp-type ping -j MASQ
ipchains -A net1-inet -j REJECT -l
Сейчас займемся определением правил для цепочки net2-net1. Пользователи могут получать доступ к серверам Web, SMTP, DNS, POPS. Как и для предыдущего случая, мы будем использовать модуль masq для пассивного режима работы FTP-сервера и будем регистрировать нарушения. Правила для этой цепочки будут таковыми:
ipchains -A net2-net1 -р tcp i -y -s 192.84.219.128 smtp -j ACCEPT
ipchains -A net2-net1 -р udp -s 192.84.219.129 domain -j ACCEPT
ipchains -A net2-net1 -р tcp i -y -s 192.84.219.129 domain -j ACCEPT
ipchains -A net2-net1 -р tcp i -y -s 192.84.218.130 www -j ACCEPT
ipchains -A net2-net1 -р tcp i -y -s 192.84.218.130 rsync -j ACCEPT
ipchains -A net2-net1 -р icmp -j icmp
ipchains -A net2-inet -j DENY -l
Правила
для цепочки net2-inet выглядят так:
ipchains -A net2-inet -p tcp -s 192.84.219.128 smtp -j ACCEPT
ipchains -A net2-inet -p udp -s 192.84.219.129 domain -j ACCEPT
ipchains -A net2-inet -p tcp -s 192.84.219.129 domain -j ACCEPT
ipchains -A net2-inet -p tcp ! – y -s 192.84.218.130 www -j ACCEPT
ipchains –A net2-inet –p icmp
ipchains –A net2-inet –j DENY
Эти правила разрешают отправлять почту во внешнюю сеть, принимать почту из внешней и внутренней сети, получать почту только пользователям внутренней сети. Сервер DNS имеет право посылать запросы во внешнюю сеть, принимать запросы от внутренней и внешней сетей, а также от шлюза. Сервер WWW принимает запросы от пользователей внутренней и внешней сетей. Доступ rsync разрешен пользователям внутренней сети.
Следующая цепочка — это inet-net1. В этом случае мы не разрешаем никакого доступа из внешней сети к машинам внутренней сети.
ipchains –A inet-net1 –j REJECT
Основные правила уже определены, осталось установить правила для цепочки input шлюза. Создадим три цепочки input для каждого возможного адресата:
ipchains –N inet-if
ipchains –N net2-if
ipchains –N net1-if
По первой цепочке будут приходить пакеты от внешней сети, а по второй и третьей — от внутренних сетей. Правила для этих цепочек выглядят так:
ipchains –A input –d 192.84.219.1 –j inet-if
ipchains –A input –d 192.84.219.250 –j net2-if
ipchains –A input –d 192.168.1.250 –j net1-if
Непосредственно для цепочки inet-if определим такие правила:
Данные правила разрешают пропинговать любую сеть, использовать программу traceroute для любой сети, доступ к серверу имен, а также получать ICMP-сообщения об ошибках.