
- •Лабораторная работа «Межсетевой экран 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. Фильтрация по критерию «протокол»
Лабораторная работа «Межсетевой экран netfilter/iptables»
Цель работы: изучение и практическое применение межсетевого экрана ОС Linux netfiler/iptables.
Содержание
Лабораторная работа «Межсетевой экран netfilter/iptables» 1
1 Описание 2
1.1 Порядок прохождения таблиц и цепочек 2
1.2 Построение правил 8
1.3 Критерии 14
1.4 Действия и переходы 27
2 Рабочее задание 38
2.1 Фильтрация по критерию «отправитель» 38
2.2 Фильтрация по критерию «протокол» 38
2.3 Фильтрация по критерию «порт назначения» 39
2.4 Фильтрация по критерию «входной интерфейс» 39
2.5 Маскировка машины путем блокирования ICMP-пакетов 40
2.6 Журналирование пакетов 40
3 Форма отчета по лабораторной работе 42
1 Описание
1.1 Порядок прохождения таблиц и цепочек
В этом разделе рассмотрим порядок прохождения таблиц и цепочек в каждой таблице. Эта информация будет очень важна позднее при построении своих наборы правил, особенно когда в наборы правил будут включаться такие действия как DNAT, SNAT и конечно же TOS.
Когда пакет приходит на МСЭ, то он сперва попадает на сетевое устройство, перехватывается соответствующим драйвером и далее передается в ядро. Далее пакет проходит ряд таблиц и затем передается либо локальному приложению, либо переправляется на другую машину. Порядок следования пакета приводится ниже.
Таблица 1 – Порядок движения транзитных пакетов
Шаг |
Таблица |
Цепочка |
Примечание |
1 |
|
|
Кабель (то есть Интернет) |
2 |
|
|
Сетевой интерфейс (например, eth0) |
3 |
Mangle |
PREROUTING |
Обычно эта цепочка используется для внесения изменений в заголовок пакета, например для изменения битов TOS и пр.. |
4 |
Nat |
PREROUTING |
Эта цепочка используется для трансляции сетевых адресов (Destination Network Address Translation). Source Network Address Translation выполняется позднее, в другой цепочке. Любого рода фильтрация в этой цепочке может производиться только в исключительных случаях |
5 |
|
|
Принятие решения о дальнейшей маршрутизации, то есть в этой точке решается куда пойдет пакет - локальному приложению или на другой узел сети. |
6 |
Filter |
FORWARD |
В цепочку FORWARD попадают только те пакеты, которые идут на другой хост Вся фильтрация транзитного трафика должна выполняться здесь. Не забывайте, что через эту цепочку проходит трафик в обоих направлениях, обязательно учитывайте это обстоятельство при написании правил фильтрации. |
7 |
Mangle |
FORWARD |
Далее пакет попадает в цепочку FORWARD таблицы mangle, которая должна использоваться только в исключительных случаях, когда необходимо внести некоторые изменения в заголовок пакета между двумя точками принятия решения о маршрутизации. |
8 |
|
|
Принятие решения о дальнейшей маршрутизации, то есть в этой точке, к примеру, решается на какой интерфейс пойдет пакет. |
9 |
Nat |
POSTROUTING |
Эта цепочка предназначена в первую очередь для Source Network Address Translation. Не используйте ее для фильтрации без особой на то необходимости. Здесь же выполняется и маскировка (Masquerading). |
10 |
Mangle |
POSTROUTING |
Эта цепочка предназначена для внесения изменений в заголовок пакета уже после того как принято последнее решение о маршрутизации. |
11 |
|
|
Выходной сетевой интерфейс (например, eth1). |
12 |
|
|
Кабель (пусть будет LAN). |
Из данной таблицы видно, что пакет проходит несколько этапов, прежде чем он будет передан далее. На каждом из них пакет может быть остановлен, будь то цепочка iptables или что либо еще, но наибольший интерес представляет iptables. Следует заметить, что нет каких либо цепочек, специфичных для отдельных интерфейсов или чего либо подобного. Цепочку FORWARD проходят ВСЕ пакеты, которые движутся через данный МСЭ/маршрутизатор. Не следует использовать цепочку INPUT для фильтрации транзитных пакетов, так как они туда просто не попадают. Через эту цепочку движутся только те пакеты, которые предназначены данной машине.
А теперь рассмотрим порядок движения пакета, предназначенного локальному процессу/приложению.
Таблица 2 –Для локального приложения
Шаг |
Таблица |
Цепочка |
Примечание |
1 |
|
|
Кабель (то есть Интернет) |
2 |
|
|
Входной сетевой интерфейс (например, eth0) |
3 |
Mangle |
PREROUTING |
Обычно используется для внесения изменений в заголовок пакета, например для установки битов TOS и пр. |
4 |
Nat |
PREROUTING |
Преобразование адресов (Destination Network Address Translation). Фильтрация пакетов здесь допускается только в исключительных случаях. |
5 |
|
|
Принятие решения о маршрутизации. |
6 |
Mangle |
INPUT |
Пакет попадает в цепочку INPUT таблицы mangle. Здесь вносятся изменения в заголовок пакета перед тем как он будет передан локальному приложению. |
7 |
Filter |
INPUT |
Здесь производится фильтрация входящего трафика. Помните, что все входящие пакеты, адресованные нам, проходят через эту цепочку, независимо от того с какого интерфейса они поступили. |
8 |
|
|
Локальный процесс/приложение |
Важно помнить, что на этот раз пакеты идут через цепочку INPUT, а не через FORWARD. И в заключение рассмотрим порядок движения пакетов, созданных локальными процессами.
Таблица 3 – От локальных процессов
Шаг |
Таблица |
Цепочка |
Примечание |
1 |
|
|
Локальный процесс |
2 |
Mangle |
OUTPUT |
Здесь производится внесение изменений в заголовок пакета. Фильтрация, выполняемая в этой цепочке, может иметь негативные последствия. |
3 |
Nat |
OUTPUT |
Эта цепочка используется для трансляции сетевых адресов (NAT) в пакетах, исходящих от локальных процессов МСЭа. |
4 |
Filter |
OUTPUT |
Здесь фильтруется исходящий трафик. |
5 |
|
|
Принятие решения о маршрутизации. Здесь решается - куда пойдет пакет дальше. |
6 |
Nat |
POSTROUTING |
Здесь выполняется Source Network Address Translation. Не следует в этой цепочке производить фильтрацию пакетов во избежание нежелательных побочных эффектов. Однако и здесь можно останавливать пакеты, применяя политику по-умолчанию DROP. |
7 |
Mangle |
POSTROUTING |
Цепочка POSTROUTING таблицы mangle в основном используется для правил, которые должны вносить изменения в заголовок пакета перед тем, как он покинет МСЭ, но уже после принятия решения о маршрутизации. В эту цепочку попадают все пакеты, как транзитные, так и созданные локальными процессами МСЭа. |
8 |
|
|
Сетевой интерфейс (например, eth0) |
9 |
|
|
Кабель (то есть, Internet) |
Рисунок 1 наглядно демонстрирует прохождение пакетов по цепочкам пакетного МСЭ.
Рисунок 1 – Схема прохождения пакетов по цепочкам пакетного МСЭ
Рисунок 1 дает довольно ясное представление о порядке прохождения пакетов через различные цепочки. В первой точке принятия решения о маршрутизации (routing decision) все пакеты, предназначенные данному хосту направляются в цепочку INPUT, остальные - в цепочку FORWARD.
Следует обратить внимание на тот факт, что пакеты, с адресом назначения на МСЭ, могут претерпеть трансляцию сетевого адреса (DNAT) в цепочке PREROUTING таблицы nat и соответственно дальнейшая маршрутизация в первой точке будет выполняться в зависимости от произведенных изменений.