Главная » 2013 » Декабрь » 12 » 14.4. Практический пример
02:01
14.4. Практический пример

А теперь рассмотрим более серьезный пример. Этот пример частично позаимствован мною из руководства DNS‑HOWTO. Но прежде чем перейти непосредственно к практике, попробую объяснить некоторые термины, которые будут встречаться ниже.

Прежде всего, определимся, что называется маскарадингом. Объяснение я приведу на сугубо формальном языке. Маскарадинг перезаписывает заголовки пакетов, когда они проходят через шлюз так, чтобы казалось, что они всегда исходят от шлюза непосредственно. Затем он перезаписывает ответы так, чтобы клиенту казалось, что они пришли от первоначального получателя. Например, у вас есть шлюз и одна небольшая локальная сеть. Шлюз обладает реальным IP‑адресом 1.1.1.1, а адрес вашей локальной сети – 192.168.1.0. Клиент с IP‑адресом 192.168.1.5 пытается обратиться к узлу http://www. romb. net. IP‑адрес этого узла 62.244.59.193. Пакет клиента проходит через шлюз. IP‑адрес шлюза в локальной сети – 192.168.1.1. Шлюз перезаписывает заголовок пакета и устанавливает вместо адреса клиента свой собственный адрес, то есть 1.1.1.1. После получения ответа, он перед отправлением пакета клиенту опять перезаписывает заголовок пакета и изменяет свой адрес 1.1.1.1 на адрес узла www. romb. net – 62.244.59.193. С точки зрения узла www. romb. net соединение было установлено между адресами 1.1.1.1 и 62.244.59.193. С точки зрения клиента соединение произошло между интерфейсами с адресами 192.168.1.5 и 62.244.59.193.

Итак, приступим к рассмотрению практического примера. Предположим, у нас имеется соединение с Интернет и две подсети. Интерфейсу ррр0 назначен реальный IP‑адрес – 111.1.1.1, интерфейсу eth0 назначен IP‑адрес внутренней сети – 192.168.2.1, а интерфейсу eth8 – 192.168.1.1. (см. рис. 14.1).

Рис. 14.1. Структура сети

Нам нужно обеспечить маршрутизацию между тремя сетями: Интернет, 192.168.2.0 и 192.168.1.0. Другими словами, требуется таким образом настроить пакетную фильтрацию, чтобы можно было пропинговать любую сеть или выполнить трассировку пакетов через любую сеть. Пинговать сеть будем, естественно, с помощью программы ping, а выполнять трассировку будем программой traceroute. В ОС Windows NT те же операции можно выполнить с помощью программ ping и tracert соответственно.

Нам также нужно, чтобы сервер WWW обрабатывал как запросы из внутренних сетей, так и запросы пользователей Internet. Сервер SMTP должен принимать внутренние и внешние соединения, а также отправлять почту в Internet. Получать почту по протоколу POP3 могут только пользователи внутренних сетей. Сервер DNS также должен обрабатывать запросы от всех сетей.

Еще раз определим, к чему будут иметь доступ пользователи Интернет:

1. Наш внутренний сервер WWW.

2. Наш сервер FTP.

3. Наш сервер DNS.

4. Сервер SMTP.

Пользователи локальных сетей будут иметь доступ к:

1. Серверу WWW нашей сети.

2. Серверу FTP нашей сети.

3. Серверу SMTP для отправки почты, как пользователям локальной сети, так и пользователям Интернет.

4. Серверу DNS нашей сети, а также к серверам DNS сети Интернет.

5. Серверу POP3 для получения почты.

6. Серверам WWW сети Интернет.

7. Серверам FTP сети Интернет.

Наши пользователи также должны иметь возможность использовать программы ping, traceroute, ssh. Чуть не забыл! Нам же нужно также обеспечить нормальную работу клиента ICQ. Эта программа стала уже стандартом, как Netscape или Internet Explorer.

Прежде, чем настраивать пакетный фильтр, убедимся, что мы запретили IP‑спуфинг и правильно настроили все сетевые интерфейсы. В этой главе уже приводился более подробный пример запрещения IP‑спуфинга (листинг 14.2). Эту задачу можно попробовать решить одной командой (при этом вы должны использовать интерпретатор bash):

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

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

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

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

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

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

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

Мы будем принимать только 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.

Сейчас займемся определением правил для цепочки net2‑net1. Пользователи могут получать доступ к серверам Web, SMTP, DNS, POPS. Как и для предыдущего случая, мы будем использовать модуль masq для пассивного режима работы FTP‑сервера и будем регистрировать нарушения. Правила для этой цепочки будут таковыми:

Правила для цепочки net2‑inet выглядят так:

Эти правила разрешают отправлять почту во внешнюю сеть, принимать почту из внешней и внутренней сети, получать почту только пользователям внутренней сети. Сервер DNS имеет право посылать запросы во внешнюю сеть, принимать запросы от внутренней и внешней сетей, а также от шлюза. Сервер WWW принимает запросы от пользователей внутренней и внешней сетей. Доступ rsync разрешен пользователям внутренней сети.

Следующая цепочка – это inet‑net1. В этом случае мы не разрешаем никакого доступа из внешней сети к машинам внутренней сети.

Основные правила уже определены, осталось установить правила для цепочки input шлюза. Создадим три цепочки input для каждого возможного адресата:

По первой цепочке будут приходить пакеты от внешней сети, а по второй и третьей – от внутренних сетей. Правила для этих цепочек выглядят так:

Непосредственно для цепочки inet‑if определим такие правила:

Данные правила разрешают пропинговать любую сеть, использовать программу traceroute для любой сети, доступ к серверу имен, а также получать ICMP‑сообщения об ошибках.

Цепочку net2‑if определим следующим образом:

Правила этой цепочки разрешают те же операции, что и для цепочки inet‑if, только в этом случае вместо интерфейса ррр0 используется eth0.

Входящая цепочка net1‑if определяется так:

Разрешается доступ к серверам WWW, SMTP, POP3. Можно использовать программы ping, traceroute, ssh.

Теперь осталось удалить правила блокировки:

В начале этого пункта я обещал объяснить настройку ICQ. Предположим, что сервер SQUID у вас установлен на шлюзе, то есть на той машине, которая обеспечивает пакетную фильтрацию (о прокси‑сервере SQUID читайте в следующей главе). В файле конфигурации SQUID разрешите порт 5190. Именно этот порт используется новыми клиентами ICQ.

Затем установите сервер socks. Можно, конечно, настроить ICQ, используя маскарадинг, но данный метод, как мне кажется, лучше. В качестве сервера socks я рекомендую использовать сервер dame‑socks. В файле конфигурации /etc/socks. conf установите внутренний и внешний адреса шлюза:

Затем определите узлы, которые могут использовать socks:

Осталось определить, кто может отвечать клиентам:

Категория: Бастионы | Просмотров: 420 | Добавил: spb_serge | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: