Введение
В данной статье мы расскажем, как функционирует межсетевой экран iptables, разберем его основные понятия и определения. Изучим базовые принципы фильтрации сетевого трафика, что поможет в дальнейшем легко применять данный инструмент на практике.
Итак, приступим.
Ни для кого не секрет, что использование средств межсетевой защиты в современных операционных системах уже не просто рекомендация, а жизненная необходимость. Хакерские атаки совершенствуются и количество скомпрометированных серверов возрастает. Поэтому позаботиться заранее о безопасности своего сервера очень важно. Если вы используете операционную систему на основе Linux, то первым на помощь приходит базовый инструмент iptables.
Что такое iptables
iptables – это стандартная утилита, управляющая встроенным в ядро брандмауэром netfilter. Более современным инструментом является утилита nftables (включена в ядро Linux с версии 3.13 и призвана заменить iptables, о ней будет отдельная статья). Тем не менее базовая настройка безопасности на многих боевых серверах по-прежнему производится при помощи iptables. Основной принцип его работы (как и остальных файрволов) заключается в применении определенных действий к пакету, проходящему через сетевой интерфейс, в соответствии с определенными правилами.
Как работает iptables
Общая схема работы такова: пакет приходит на сетевой интерфейс и передается на цепочки, где фильтруется, согласно заданным правилам. Если пакет не отбрасывается в ходе проверки, он передается на исходящий интерфейс (причем в ходе прохождения через iptables он может модифицироваться) или доставляется локальному процессу.
Основные сущности iptables
Рассмотрим основные сущности iptables:
Правило (rules)
Правило (rules) это символьная строка, состоящая из критерия, действия и счетчика.
Пример:
iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.15.10-192.168.15.50 -j ACCEPT
Это правило разрешает подключение к порту 80 (Apache), если адрес находится в диапазоне от 192.168.15.10 – 192.168.15.50. Как читать правила более подробно мы разбираем в следующей статье.
Критерий
Критерием называется то, что мы хотим проверить в пакете. Несколько критериев соединяются логическим “И”. В приведенном выше примере критерий это “INPUT -p tcp –destination-port 80 -m iprange –src-range 192.168.15.10-192.168.15.50”
Действие (target)
Действие определяет, что будет сделано с пакетом, если он попал под критерий.
Перечислим наиболее распространенные действия:
- ACCEPT – разрешить пакет
- DROP – отбросить пакет
- QUEUE – передать пакет за пределы iptables (допустим другому процессу или приложению)
- RETURN – вернуться на одно правило назад, остановив обработку текущего правила
- REJECT – отбросить пакет, но с сообщением причины отбрасывания
- LOG – логировать соответствие пакета критериям правила (полезно включать при отладке)
В примере выше действие ACCEPT разрешает прохождение пакета.
Счетчик
Счетчиком называется компонент, который показывает сколько пакетов в байтах попало под критерий правила. Посмотреть счетчик можно при помощи специального ключа, об этом будет практическая статья.
Цепочка
Цепочка это набор правил в определенной последовательности. Пакет последовательно проверяется в цепочке до первого соответствия критерию, после “срабатывания” остальные правила в цепочке не проверяются. Цепочки бывают стандартными и пользовательскими.
Стандартные цепочки:
- PREROUTING — для предварительной обработки входящего трафика
- INPUT — для входящего трафика, приходящего непосредственно на сетевой интерфейс сервера
- FORWARD — цепочка на маршрутизируемый трафик
- OUTPUT — для исходящего трафика
- POSTROUTING— для окончательной фильтрации исходящего трафика
Для всех стандартных цепочек в отличии от пользовательских есть возможность применения default policy (действия по умолчанию) к пакету, если он не попал ни под одно правило цепочки.
Пользовательские цепочки создаются самим пользователем. Рекомендуем называть эти цепочки именами в нижнем регистре, чтобы избежать путаницы в дальнейшем.
Таблица
Таблицей является множество цепочек, объединенных по одному функционалу. В iptables имеется 5 стандартных таблиц: raw, mangle, nat, filter, security.
Состояние
Также в iptables пакет, проходящий через цепочки, имеет определенное состояние (conntrack). Перечислим их:
- NEW — пакет, открывающий новый сеанс. Пример — первый пакет (с флагом SYN) при установке TCP-соединения.
- ESTABLISHED — пакет в существующем сеансе.
- RELATED — пакет, открывающий новый сеанс, который связан с уже открытым сеансом. (пример – обмен пакетами FTP в пассивном режиме).
- INVALID — остальные пакеты.
Вывод
В данной статье мы рассмотрели основные понятия и сущности межсетевого экрана iptables. Разобрав их, можно смело приступать к практической работе с данным инструментом. В следующей статье мы расскажем как произвести базовую настройку iptables в операционной системе Ubuntu и напишем свои первые правила под базовые задачи.