Настройка файрвола iptables
Межсетевой экран (файрвол, брандмауэр) — это средство контроля и управления трафиком, проходящим через сетевой интерфейс(ы). Основной задачей файрвола является защита узлов сети от несанкционированного доступа. Общий принцип как аппаратных, так и программных межсетевых экранов сводится к фильтрации проходящих пакетов на основе заданного набора правил. Дополнительно файрволы могут выполнять трансляцию адресов (NAT) и перенаправление адресов/портов.
Цель работы: Ознакомиться с принципами работы межсетевого экрана netfilter, встроенного в ядро ОС Linux на примере дистрибутива OpenSuSE. Изучить правила построения фильтров и процедуру настройки файрвола с помощью утилит iptables и SuSEfirewall2.
Задания к работе
- Вывести список текущих правил (iptables -Lnv)
- Сохранить текущие настройки в файле iptables.backup (iptables-save > iptables.backup, имя файла может быть любое).
- Очистить все правила файрвола
- Создать скрипт, загружающий следующий набор фильтров:
- все исходящие пакеты с локального хоста разрешить;
- все входящие ICMP-пакеты разрешить;
- все входящие пакеты на TCP- и UDP- порты выше 1024 разрешить;
- все входящие пакеты на TCP-порты 20, 21 разрешить
- все входящие пакеты на порты 22, 139 журналировать и отбрасывать
- все входящие пакеты на TCP-порт 80, 443, 8080 разрешить
- все остальные входящие пакеты запретить
- Подключить скрипт в автоматическую загрузку при запуске системы;
- Протестировать работоспособность созданного набора фильтров;
- Удалить все правила и снова протестировать систему;
- Вернуть сохраненные настройки файрвола (из резервного файла).
Файрвол или брандмауэр?
В русском языке для обозначения межсетевого экрана используют заимствованные слова «файрвол» (анг. firewall) и «брандмауэр» (нем. Brandmauer), которые оба дословно переводятся как «огненная стена» и обозначают противопожарный барьер между зданиями. Дискуссию о том, какая транскрипция англоязычного термина будет более правильной: файрволл, файрвол, файервол или фаервол, — оставим на забаву филологам.
Методические указания
Межсетевой экран netfilter
Ядро операционной системы Linux c версии 2.0.x имеет встроенный межсетевой экран, разрабатываемый и поддерживаемый в рамках открытого проекта netfilter.org. Файрволл Linux традиционно называют iptables, хотя правильным названием является netfilter.
Netfilter представляет собой набор структур данных и функций перехвата («хуков», от анг. hooking), реализованных на уровне ядра системы и позволяющих замещать стандартные системные вызовы стека TCP/IP на callback-функции, обрабатывающие каждый сетевой пакет. Перехватываемые пакеты сопоставляются с набором правил, представленных в виде таблиц с регулярной структурой (ip_tables). Правила описывают условия соответствия и указывают дальнейшие действия над пакетом, попадающим под заданные условия: фильтрация, трансляция адресов (NAT) и прочие преобразования.
Основные возможности
- Поддержка протоколов IPv4 и IPv6.
- Фильтрация сетевого уровня (без контроля состояния — stateless).
- Контроль состояния (фильтрация сеансового уровня — stateful).
- Все виды трансляции адресов и портов (NAT/NAPT).
- Несколько слоев API для расширений сторонних разработчиков.
Этот брандмауэр может использоваться для контроля трафика как на маршрутизаторах с несколькими сетевыми интерфейсам, так и на персональных рабочих станциях: алгоритм обработки пакетов будет одинаковым в обоих случаях (рис. 1).
Рис. 1. Концепция обработки пакетов файрволом netfilter
Некоторые пояснения к рис. 1:
- Для каждого входящего пакета, захваченного файрволом, определяется адресат и дальнейший маршрут.
- Если адресатом является локальный процесс, то пакет поступает в цепочку INPUT, где он проверяется на предмет соответствия правилам этой цепочки. К пакету применяется первое подходящее правило. Если пакет не соответствует ни одному правилу цепочки, то он отбрасывается.
- Если в системе несколько сетевых интерфейсов и настроена переадресация, а пакет предназначен для другого сетевого интерфейса, то он передается для обработки в цепочку FORWARD. Если переадресация не используется или система не знает как обработать принятый пакет, то он отбрасывается.
- Наконец, локальный процесс может инициировать отправку пакетов. Исходящие пакеты поступают в цепочку OUTPUT.
Правила, цепочки и таблицы - это названия основных «строительных блоков» netfilter/iptables:
- Правило — структура, описывающая критерии соответствия, применяемое действие и счетчика. Если пакет соответствует критерию, к нему применяется указанное действие, и этот факт фиксируется счетчиком.
- Цепочка — упорядоченный набор правил, последовательно применяемых к пакету. На рис. 1 цветом отмечены цепочки INPUT, FORWARD и OUTPUT. Они, а также цепочки PREROUTING и POSTROUTING, являются базовыми и создаются при инициализации таблиц. Помимо базовых, iptables позволяет создавать пользовательские цепочки.
- Таблица — совокупность базовых и пользовательских цепочек, объединенных общим функциональным назначением.
Связь между перечисленными элементами проиллюстрирована на рис. 2.
Рис. 2. Правила, цепочки и таблицы межсетевого экрана Linux.
Таблицы
В текущей версии межсетевого экрана (iptables v1.4.16.3) поддерживаются 4 встроенные таблицы.
Filter
Таблица filter содержит цепочки правил фильтрации пакетов. Пакеты могут пропускаться далее, либо отвергаться (действия ACCEPT и DROP соответственно), в зависимости от их содержимого. Эта таблица используется по умолчанию и представляет 3 цепочки:
- INPUT – правила фильтрации входящих пакетов.
- OUTPUT – фильтр исходящего трафика, сгенерированного локально.
- FORWARD – фильтрация маршрутизуемого транзитного трафика.
NAT
Таблица NAT используется для преобразования сетевых адресов (Network Address Translation). Через эту таблицу проходит только первый пакет из потока. Преобразования адресов автоматически применяется ко всем последующим пакетам.
- PREROUTING – Модификация пакета перед маршрутизацией, выполняемая сразу после того, как он попадает в систему. Обычно используется для DNAT (destination NAT, преобразование адреса получателя).
- POSTROUTING – Правила, применяемые после маршрутизации. Модификация пакетов выполняется перед выходом их из системы и, как правило, используется для изменения (сокрытия) источника, т.н. source NAT (SNAT).
- OUTPUT – Правила трансляции адресов у пакетов, сгенерированных локальными процессами.
Mangle
Raw
Использование iptables
Основным средством настройки брандмауэра Linux является консольная утилита iptables. Эта программа позволяет управлять набором правил пакетного фильтра и трансляцией адресов протокола IPv4. Для протокола IPv6 используется утилита ip6tables. Далее будут кратко рассмотрена настройка файрвола на примере iptables (подробности — в man iptables
и на сайте проекта netfilter.org).
Для получения краткой справки по использованию утилиты можно вызвать ее с параметром --help:
aag@aag:~> /usr/sbin/iptables --help iptables v1.4.16.3 Usage: iptables -[ACD] chain rule-specification [options] iptables -I chain [rulenum] rule-specification [options] iptables -R chain rulenum rule-specification [options] ...
SEE ALSO: iptables-apply(8), iptables-save(8), iptables-restore(8), iptables-extensions(8), ip6tables(8), ip6tables-save(8), ip6tables-restore(8), libipq(3).
SuSEfirewall2
Зоны, базовая настройка, тонкая настройка через файл конфигурации и т.п.
See: search, Первые шаги: iptables в Opensuse , Suse/OpenSuSE — iptables + opensuse, Firewall в Linux за 5 минут, wiki — ru.opensuse.org, wikibooks — Настройка межсетевого экрана в Linux, /usr/share/doc/packages/SuSEfirewall2/,
запомнить LOR-FAQ-Admin и еще МНОГО ВКУСНОГО ПО LINUX и еще ОпенНет
Контрольные вопросы
- Что такое межсетевой экран?
- Каковы типовые действия фильтра над пакетами?
- Какие цепочки правил имеются по умолчанию?
- Основной синтаксис утилиты iptables
CC-BY-CA Анатольев А.Г., 20.12.2013