Рис. 25.1. Для обработки информационных пакетов сетевое ядро Linux использует несколько цепочек
На заметку
Информационный пакет не обязательно должен проходить весь цикл обработки, показанный на рис. 25.1. Некоторые пакеты могут быть блокированы одной из цепочек; не исключено также, что локальный процесс, получив пакет, не станет отвечать на него. В некоторых случаях транзакция инициируется локальным процессом. Ответ на запрос, сгенерированный локальным процессом, будет получен на входе системы.
Каждая из цепочек, показанных на рис. 25.1. предоставляет возможность обрабатывать пакеты. Фильтрация пакетов осуществляется на основании анализа таких данных, как IP-адрес источника и назначения, порт источника и назначения, а также интерфейс, через который передаются пакеты. Каждая из цепочек представляет собой набор правил, на соответствие которым проверяются пакеты. Если пакет соответствует условию правила, над ним выполняются действия, предусмотренные в правилах. При создании брандмауэров используются идентификаторы, определяющие действия. К ним относятся ACCEPT
(принять пакет для обработки), DROP
(игнорировать пакет), QUEUE
(передать пакет пользовательскому процессу) и RETURN
(прекратить обработку и вернуться к вызывающей цепочке). Некоторые действия требуют активизации опций ядра. К ним относятся REJECT
(отвергнуть пакет, сообщив об этом отправителю), MASQUERADE
(используется при организации NAT-преобразования) и LOG
(применяется для протоколирования хода фильтрации).
Цепочки объединяются в таблицы . Цепочки, показанные на рис. 25.1, составляют таблицу filter
, которая используется для обработки стандартных типов трафика. Стандартными таблицами также являются nat
(она используется при построении NAT-преобразователей) и mangle
(с ее помощью осуществляются некоторые типы преобразования пакетов). Вы можете поместить в таблицу новые цепочки и вызвать их из существующих цепочек. Это позволяет реализовать сложные процедуры фильтрации.
Таблицы и цепочки являются средствами ядра Linux, a iptables
— это программа, которая выполняется как пользовательский процесс и предоставляет возможность управлять таблицами и цепочками. Программу iptables
можно использовать для добавления правил к любой из цепочек, показанных на рис. 25.1, а также к другим цепочкам. Например, вы можете включить в цепочку INPUT
правила, блокирующие все пакеты, в заголовке которых указан определенный порт назначения, или добавить в цепочку OUTPUT
правила, запрещающие передавать пакеты системе, взаимодействие с которой по каким-либо причинам запрещено. С помощью этих и других цепочек вы можете реализовать брандмауэр, NAT-преобразователь или другое средство защиты системы.
Изменения, вносимые утилитой iptables
, носят временный характер; информация о них удаляется после перезагрузки компьютера. По этой причине для работы с iptables
следует создавать сценарии. В состав некоторых дистрибутивных пакетов, например Red Hat и Mandrake, включаются инструментальные средства, упрощающие создание брандмауэров и NAT-преобразователь. Сценарий, предназначенный для создания правил посредством утилиты iptables
, обычно запускается как сценарий SysV или локальный сценарий запуска.
Альтернативные средства фильтрации
Программа iptables
была создана для работы с ядром 2.4.x. С ранними версиями ядра использовались другие инструменты. Например, для взаимодействия с соответствующими средствами ядра 2.2.x применялась программа ipchains
, а для работы с ядром 2.0.x — программа ipfwadm
. Смена инструментов отражает изменения в структуре ядра. Программа iptables
дает возможность работать с такими средствами ядра 2.4.x, которые отсутствовали в ядре 2.2.x. Например, она позволяет выполнять проверку пакетов с учетом состояния (stateful packet inspection), при которой учитываются характеристики соединения. Проверка пакетов с учетом состояния предоставляет дополнительные возможности по организации защиты компьютеров.
При работе с версиями ядра, предшествующими версии 2.4.x, вам придется использовать ipchains
или ipfwadm
. В данной главе не уделяется внимание работе с этими программами, поэтому всю необходимую информацию вам придется искать в документации на соответствующий инструмент. Для работы со средствами фильтрации пакетов, которые будут реализованы в последующих версиях ядра, наверное, будут разработаны новые инструментальные средства. Вероятнее всего, что общие принципы их работы будут такими же, какие используются в iptables
, поэтому знание этой программы пригодится при работе с версиями ядра, которые придут на смену версии 2.4.x.
Читать дальше