Kniga-Online.club

Родерик Смит - Сетевые средства Linux

Читать бесплатно Родерик Смит - Сетевые средства Linux. Жанр: Программное обеспечение издательство -, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

# iptables -A INPUT -s 192.168.9.0/24 -i eth0 -j DROP

# iptables -A FORWARD -s 192.168.9.0/24 -i eth0 -j DROP

# iptables -A FORWARD -s !192.168.9.0/24 -i eth1 -j DROP

# iptables -A OUTPUT -s !192.168.9.0/24 -i eth1 -j DROP

Первые две команды отвергают поступающие извне (через интерфейс eth0) пакеты, адресованные маршрутизатору или компьютерам локальной сети, в которых указано, что они отправлены из локальной сети. Последние две команды блокируют пакеты, направленные в Internet (поступающие через интерфейс eth1), в которых указан IP-адрес источника, не совпадающий с адресами компьютеров локальной сети.

Проверка пакетов с учетом состояния

Одна из самых новых возможностей фильтрации пакетов, реализованных в системе Linux, позволяет учитывать при проверке пакетов состояние соединения. Средства, рассмотренные ранее в этой главе, позволяли обрабатывать отдельные пакеты, независимо от того, являлись ли они частью соединения или были специально сгенерированы для организации атаки. (Ранее уже встречалась опция --syn, позволяющая определить пакет, содержащий запрос на установление соединения. Существуют средства, которые предоставляют возможность включить свои пакеты в набор пакетов, передаваемых в рамках действующего соединения. Такое включение пакетов называется перехватом TCP- соединения.) Средства проверки пакетов с учетом состояния определяют принадлежность пакетов к текущему соединению, анализируя последовательные номера, IP-адреса, указанные в заголовках, и другие характеристики пакетов. Правила, реализующие такую проверку, позволяют отвергать посторонние пакеты, включенные в состав данных, которые передаются в рамках существующего соединения.

Для включения средств проверки пакетов с учетом состояния используется опция --state, предваряемая опцией -m состояние. Для опции --state можно задать одно или несколько значений. Если вы указываете несколько значений, они должны разделяться запятыми. Символ ! перед опцией --state изменяет ее действие на обратное. Ниже перечислены допустимые параметры опции --state.

• INVALID. Проверка показала, что пакет не принадлежит известному соединению и может оказаться фальсифицированным.

• NEW. Пакет пытается установить новое соединение.

• ESTABLISHED. Пакет соответствует существующему соединению.

• RELATED. Пакет не является частью существующего соединения, но его присутствие допустимо (например, это может быть ICMP-пакет, сообщающий об ошибке).

На заметку

Опция ! --state INVALID эквивалентна опции --state NEW, ESTABLISHED, RELATED.

Рассмотрим пример проверки с учетом состояния. Предположим, что, настраивая брандмауэр на отдельном компьютере, вы задали политику по умолчанию DROP или REJECT, но хотите разрешить взаимодействие с сервером HTTP через порт 80. Вы можете задать поверку с учетом состояния, в ходе которой будут отвергаться пакеты, не предназначенные для установления соединений, не принадлежащие к существующим соединениям и не относящиеся к пакетам, присутствие которых допустимо. Команды, предназначенные для создания правил, имеют следующий вид:

# iptables -A INPUT -m state -p tcp --dport 80

 --state NEW,ESTABLISHED,RELATED -j ACCEPT

# iptables -A OUTPUT -m state -p tcp --sport 80

 --state ESTABLISHED,RELATED -j ACCEPT

Эти правила включают проверку входящих и исходящих пакетов. Для проверки пакетов, передаваемых с компьютера, значение NEW опции --state не задано, так как новое соединение может устанавливаться только по инициативе клиента. Эти правила препятствуют перехвату существующих соединений с Web-сервером.

На заметку

Проверка пакетов с учетом состояния может осуществляться только в тех системах, в которых используется версия ядра 2.4.x. Предыдущими версиями ядра такая возможность не поддерживается. Это может стать одним из стимулов перехода к использованию iptables.

Использование дополнительных опций

Программа iptables поддерживает большое количество опций, которые могут быть использованы для создания брандмауэров. Например, посредством опции --new-chain (-N) можно создать новую цепочку, указав опцию --fragment (-f), можно создать правило, которое будет применяться ко второму и к последующим фрагментам фрагментированного пакета, а опция --tcp-flags дает возможность организовать проверку на присутствие флагов в составе TCP-пакета. Дополнительную информацию об этих и о других опциях вы можете получить на страницах справочной системы Linux, посвященных iptables.

Сценарий для создания брандмауэра

В завершение разговора о средствах фильтрации пакетов рассмотрим сценарий, который создает брандмауэр. Код сценария представлен в листинге 25.1. Данный сценарий предназначен для компьютера, на котором выполняется Web-сервер и который поддерживает SSH-соединения с компьютерами, подключенными к локальной сети.

Внимание

Сценарии брандмауэров, предназначенные для практического применения, содержат гораздо больший объем кода по сравнению представленным в листинге 25.1. Для удобства чтения в данном листинге при вызове iptables не указывается путь к файлу. В реальных сценариях это недопустимо. Не указывая путь к файлу, вы создаете угрозу безопасности системы. Код, приведенный в листинге 25.1, может послужить основой для создания более сложных сценариев.

Листинг 25.1. Простой сценарий, использующий iptables для создания брандмауэра

#!/bin/sh

iptables -F INPUT

iptables -F OUTPUT

iptables -F FORWARD

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

# Разрешить NDS-трафик

iptables -A INPUT -p udp --sport 53 -j ACCEPT

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# Разрешить обмен клиентов с локальной сетью

iptables -A INPUT -m state -p tcp --dport 1024:65535

 --state ESTABLISHED,RELATED -s 192.168.9.0/24 -j ACCEPT

iptables -A OUTPUT -m state -p tcp --sport 1024:65535

 ! --state INVALID -d 192.168.9.0/24 -j ACCEPT

# Разрешить все HTTP-соединения

iptables -A INPUT -m state -p tcp --dport 80

 ! --state INVALID -j ACCEPT

iptables -A OUTPUT -m state -p tcp --sport 80

 --state ESTABLISHED, RELATED -j ACCEPT

# Разрешить обращения к SSH-серверу

# из локальной сети (192.168.9.0/24)

iptables -A INPUT -m state -p tcp --dport 22

 ! --state INVALID 192.168.9.0/24 -j ACCEPT

iptables -A OUTPUT -m state -p tcp --sport 22

 --state ESTABLISHED,RELATED -d 192.168.9.0/24 -j ACCEPT

# Разрешить прохождение локального трафика через интерфейс lo

iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT

iptables -A OUTPUT -d 127.0.0.1 -o lo -j ACCEPT

Ниже описаны некоторые особенности кода, приведенного в листинге 25.1.

• Удаление существующих правил и установка политики по умолчанию. В первых шести строках программа iptables вызывается для удаления правил, присутствующих в цепочках, и установки политики по умолчанию. В качестве политики по умолчанию задается действие DROP. Несмотря на то что компьютер не выполняет маршрутизацию пакетов, политика по умолчанию задается также и для цепочки FORWARD. Это делается на случай, если на компьютере будет установлен еще один сетевой интерфейс.

• Взаимодействие с сервером DNS. Для того чтобы компьютер мог взаимодействовать с сервером DNS, две строки, следующие за комментариями "Разрешить NDS-трафик", предоставляют компьютеру возможность обращаться к удаленным серверам DNS (UDP-порт 53). Возможности соединения не ограничиваются одним адресом; компьютеру разрешено взаимодействовать с любым сервером имен. Если понадобится, вы можете наложить более жесткие ограничения.

• Обмен с клиентами локальной сети. Строки, следующие за комментариями "Разрешить обмен клиентов с локальной сетью", открывают путь трафику, связанному с непривилегированными портами (1024-65535). В цепочки INPUT и OUTPUT включены правила проверки пакетов с учетом состояния. Заметьте, что правило в цепочке INPUT запрещает установление новых соединений, поэтому, даже если на компьютере будет находиться сервер, принимающий обращения через непривилегированные порты, другие компьютеры не смогут обратиться к нему. Цепочки INPUT и OUTPUT ограничивают взаимодействие компьютерами локальной сети. При создании реального брандмауэра следует рассмотреть возможность замены этих правил более конкретными, которые разрешали бы прохождение данных между непривилегированными локальными портами и портами, используемыми для поддержки отдельных протоколов.

• Трафик, связанный с Web-сервером. Web-сервер, выполняющийся на компьютере, должен принимать обращения от любого узла сети, поэтому в правилах, регламентирующих обмен с Web-сервером, не указывается IP-адрес. Для того чтобы противодействовать перехвату соединения, в этих правилах задана проверка пакетов с учетом состояния.

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

Родерик Смит читать все книги автора по порядку

Родерик Смит - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Сетевые средства Linux отзывы

Отзывы читателей о книге Сетевые средства Linux, автор: Родерик Смит. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*