
- •Лабораторная работа «Межсетевой экран netfilter/iptables»
- •1 Описание
- •1.1 Порядок прохождения таблиц и цепочек
- •1.1.1 Таблица Mangle
- •1.1.2 Таблица Nat
- •1.1.3 Таблица Filter
- •1.2 Построение правил
- •1.2.1 Основы
- •1.2.2 Таблицы
- •1.2.3 Команды
- •1.3 Критерии
- •1.3.1 Общие критерии
- •1.3.2 Неявные критерии
- •1.3.3 Явные критерии
- •1.4 Действия и переходы
- •1.4.1 Понятие переходов
- •1.4.2 Действие accept
- •1.4.3 Действие drop
- •1.4.4 Действие queue
- •1.4.5 Действие return
- •1.4.6 Действие log
- •1.4.7 Действие mark
- •1.4.8 Действие reject
- •1.4.9 Действие tos
- •1.4.10 Действие mirror
- •1.4.11 Действие snat
- •1.4.12 Действие dnat
- •1.4.13 Действие masquerade
- •1.4.14 Действие redirect
- •1.4.15 Действие ttl
- •1.4.16 Действие ulog
- •2 Рабочее задание
- •2.1 Фильтрация по критерию «отправитель»
- •2.2 Фильтрация по критерию «протокол»
- •2.3 Фильтрация по критерию «порт назначения»
- •2.4 Фильтрация по критерию «входной интерфейс»
- •2.5 Маскировка машины путем блокирования icmp-пакетов
- •2.6 Журналирование пакетов
- •3 Форма отчета по лабораторной работе
- •1. Фильтрация по критерию «отправитель»
- •2. Фильтрация по критерию «протокол»
1.1.3 Таблица Filter
Как следует из названия, в этой таблице должны содержаться наборы правил для выполнения фильтрации пакетов. Пакеты могут пропускаться далее, либо отвергаться, в зависимости от их содержимого. В этой таблице допускается использование большинства из существующих действий, однако ряд действий, которые были рассмотрены выше в этой главе, должны выполняться только в присущих им таблицах.
1.2 Построение правил
В данной разделе будет обсуждаться порядок построения собственных правил для iptables. Каждая строка, вставляемая ту или иную цепочку, должна содержать отдельное правило. Также рассмотрим основные проверки и действия и порядок создания своих собственных цепочек правил.
1.2.1 Основы
Как уже говорилось выше, каждое правило -- это строка, содержащая в себе критерии определяющие, подпадает ли пакет под заданное правило, и действие, которое необходимо выполнить в случае выполнения критерия. В общем виде правила записываются примерно так:
iptables [-t table] command [match] [target/jump]
Нигде не утверждается, что описание действия (target/jump) должно стоять последним в строке, однако, будем придерживаться именно такой нотации для удобства.
Если в правило не включается спецификатор [-t table], то по умолчанию предполагается использование таблицы filter, если же предполагается использование другой таблицы, то это требуется указать явно. Спецификатор таблицы так же можно указывать в любом месте строки правила, однако более или менее стандартом считается указание таблицы в начале правила.
Далее, непосредственно за именем таблицы, должна стоять команда. Если спецификатора таблицы нет, то команда всегда должна стоять первой. Команда определяет действие iptables, например: вставить правило, или добавить правило в конец цепочки, или удалить правило и т.п.
Раздел match задает критерии проверки, по которым определяется, подпадает ли пакет под действие этого правила или нет. Здесь можно указать самые разные критерии -- и IP-адрес источника пакета или сети, и сетевой интерфейс и т.д. Существует множество критериев, которые будут рассмотрены в данной главе.
И, наконец, target указывает, какое действие должно быть выполнено при условии выполнения критериев в правиле. Здесь можно заставить ядро передать пакет в другую цепочку правил, «сбросить» пакет и забыть про него, выдать на источник сообщение об ошибке и т.п.
1.2.2 Таблицы
Опция -t указывает на используемую таблицу. По умолчанию используется таблица filter. С ключом -t применяются следующие опции.
Таблица 4 – Таблицы
Таблица |
Описание |
nat |
Таблица nat используется главным образом для преобразования сетевых адресов (Network Address Translation). Через эту таблицу проходит только первый пакет из потока. Преобразования адресов автоматически применяется ко всем последующим пакетам. Это один из факторов, исходя из которых мы не должны осуществлять какую-либо фильтрацию в этой таблице. Цепочка PREROUTING используется для внесения изменений в пакеты на входе в МСЭ. Цепочка OUTPUT используется для преобразования пакетов, созданных приложениями внутри МСЭа, перед принятием решения о маршрутизации. И последняя цепочка в этой таблице -- POSTROUTING, которая используется для преобразования пакетов перед выдачей их во вне. |
mangle |
Эта таблица используется для внесения изменений в заголовки пакетов. Примером может служить изменение поля TTL, TOS или MARK. Важно: в действительности поле MARK не изменяется, но в памяти ядра заводится структура, которая сопровождает данный пакет все время его прохождения через машину, так что другие правила и приложения на данной машине (и только на данной машине) могут использовать это поле в своих целях. Таблица имеет пять цепочек PREROUTING, POSTROUTING, INPUT, OUTPUT и FORWARD. PREROUTING используется для внесения изменений на входе в МСЭ, перед первым принятием решения о маршрутизации. POSTROUTING используется для внесения изменений на выходе из МСЭа, после последнего принятия решения о маршрутизации. INPUT -- для внесения изменений в пакеты перед тем как они будут переданы локальному приложению внутри МСЭа. OUTPUT -- для внесения изменений в пакеты, поступающие от приложений внутри МСЭа. FORWARD -- для внесения изменений в транзитные пакеты после первого принятия решения о маршрутизации, но перед последним принятием решения о маршрутизации. Следует заметить, что таблица mangle ни в коем случае не должна использоваться для преобразования сетевых адресов или маскарадинга (Network Address Translation, Masquerading), поскольку для этих целей имеется таблица nat. |
filter |
Таблица filter используется главным образом для фильтрации пакетов. Для примера, здесь мы можем выполнить DROP, LOG, ACCEPT или REJECT без каких либо сложностей, как в других таблицах. Имеется три встроенных цепочки. Первая -- FORWARD, используемая для фильтрации пакетов, идущих транзитом через МСЭ. Цепочку INPUT проходят пакеты, которые предназначены локальным приложениям (МСЭу). И цепочка OUTPUT -- используется для фильтрации исходящих пакетов, сгенерированных приложениями на самом МСЭе. |
Выше были рассмотрены основные отличия трех имеющихся таблиц. Каждая из них должна использоваться только в своих целях, и это следует понимать. Не целевое использование таблиц может привести к ослаблению защиты МСЭ и сети, находящейся за ним.