Читаем Linux-сервер своими руками полностью

Теперь установим правила, которые запрещают любые пакеты, кроме пакетов обратной петли (loopback):

# ipchains –A input –i ! lo –j DENY

# ipchains –A output –i ! lo –j DENY

# ipchains –A forward –j DENY

Обратите внимание, что запрет IP-спуфинга и любого трафика, кроме локального, должен быть выполнен до инициализации интерфейсов. В противном случае существует вероятность того, что сквозь наш «бастион» проникнут пакеты.

Очень желательно вставить модуль ip_masq_ftp для маскарадинга сервера FTP. Благодаря этому наш внутренний FTP-сервер сможет работать в активном и пассивном режимах.

Теперь создадим несколько цепочек. Все они будут отфильтровывать проходящие пакеты, то есть будут аналогичны цепочке forward. Название каждой из них определяется направлением передачи пакетов, например, netl-net2 — по этой цепочке пакеты будут передаваться от сети 192.168.1.0 к сети 192.168.2.0.

ipchains –N netl-net2

ipchains –N net1-inet

ipchains –N net2-net1

ipchains –N net2-inet

ipchains –N inet-net2

ipchains –N inet-net1

Также создадим цепочку для приема ICMP-сообщений:

ipchains –N icmp

В цепочке forward мы знаем только исходящий интерфейс, а для выяснения входящего интерфейса, то есть того, из которого пришел пакет, мы используем адрес источника. Подделать этот адрес невозможно, так как мы запретили IP-спуфинг. Выполним следующие команды:

ipchains –A forward –s 192.168.1.0/24 –i eth0 –j net1-net2

ipchains –A forward –s 192.168.1.0/24 –i ppp0 –j net1-inet

ipchains –A forward –s 192.168.2.0/24 –i ppp0 –j net2-inet

ipchains –A forward –s 192.168.2.0/24 –i eth1 –j net2-net1

ipchains –A forward –i eth0 –j inet-net2

ipchains –A forward –i eth1 –j int-net1

ipchains –A forward –j DENY –1

Теперь определим правила для цепочки приема ICMP-сообщений:

ipchains –A icmp –p icmp —icmp-type destination-unreachable –j ACCEPT

ipchains –A icmp –p icmp —icmp-type source-quench –j ACCEPT

ipchains –A icmp –p. icmp —icmp-type time-exceeded –j ACCEPT

ipchains –A icmp –p icmp —icmp-type parameter-problem –j ACCEPT

Мы будем принимать только ICMP-сообщения об ошибках, все остальные приниматься не будут. Далее определим правила для цепочки netl-net2. Как уже было сказано выше, от нас требуется обеспечить доступ к сервисам WWW, FTP, ssh. Также нужно разрешить доступ к серверам SMTP, POPS, DNS, использование программ traceroute и ping (все отклоненные пакеты мы будем регистрировать в журнале). С этой целью определим следующие правила:

ipchains –A net1-net2 –p tcp –d 192.84.219.128 smtp –j ACCEPT

ipchains –A net1-net2 –p tcp –d 192.84.219.128 pop-3 –j ACCEPT

ipchains –A net1-net2 –p udp –d 192.84.219.129 domain –j ACCEPT

ipchains –A net1-net2 –p tcp –d 192.84.219.129 domain –j ACCEPT

ipchains –A net1-net2 –p tcp –d 192.84.218.130 www –j-j ACCEPT

ipchains –A net1-net2 –p tcp –d 192.84.218.130 rsync –j ACCEPT

ipchains –A net1-net2 –p icmp –j icmp ipchains –A net1-net2 –j DENY –l

Эти правила также разрешают вызов rsync к серверу Web. Теперь определим правила для цепочки inet-net2. Так как в сети 192.168.2.0 находятся серверы SMTP, DNS и Web, то определим ограничения для них. Почтовый сервер должен отправлять почту во внешнюю сеть (Интернет), а также принимать почту из внешней сети. На прием почты по протоколу POP3 имеют право только пользователи внутренней сети. Сервер имен (DNS-сервер) должен посылать запросы во внешнюю сеть, а также принимать запросы из внешней сети через шлюз. Сервер Web должен принимать запросы от пользователей всех сетей. Доступ rsync разрешен только для пользователей внутренних сетей. Все это реализуется следующими правилами:

ipchains –A inet-net2 –p tcp –d 192.168.2.98 smtp –j ACCEPT

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT