IPTables — утилита, с помощью которой происходит управление межсетевым экраном в Linux. Это мощный и удобный инструмент для защиты сети и нежелательных соединений. Весь процесс заключён в правилах iptables, которые можно редактировать и просматривать. Более подробная информация представлена в статье.
История создания
До IPTables в системе Linux использовался файрвол IPFW, позаимствованный из BSD. Затем, с версии ядра 2.4 Linux, она стала поставляться с межсетевым экраном Netfilter и утилитой IPTables для управления им. В методике её работы были сохранены все аспекты и немного расширены функционально.
Строение и устройство IPTables
Поступая в межсетевой экран, пакет проходит несколько проверок. Это может быть контрольная сумма или любой другой анализ на уровне ядра. Затем наступает черёд пройти через цепочку PREROUTING. Далее проверяется таблица маршрутизации, в соответствии с которой происходит переадресация на следующую цепочку. Если адрес у пакета отсутствует, как, например, в TCP, то происходит направление в цепочку FORWARD. В тех случаях, когда имеется конкретный адрес, следует цепочка INPUT, а затем уже тем демонам или сервисам, для которых он предназначен. Ответ от них также должен пройти несколько цепочек, например OUTPUT. Последним звеном в этом процессе является цепочка POSTROUTING.
Теперь немного о цепочках. Каждая из них содержит в себе несколько таблиц. Их имена могут повторяться, но это никак не влияет на работу, так как они не взаимосвязаны между собой.
Таблицы в свою очередь содержат несколько правил. По сути, правило — это некое условие, которому должен соответствовать проверяемый пакет. В зависимости от исхода, над пакетом выполняется определённое действие.
Таким образом, проходя все этапы сети, пакет последовательно посещает все цепочки и в каждой проверяется на соответствие условию определённого правила. Если таблица не сформирована пользователем, то выполняется действие по умолчанию, в основном, это ACCEPT, позволяющий продолжить движение дальше или же DROP, останавливающий пакет.
Предустановленные цепочки бывают следующих категорий:
- PREROUTING. Первоначальная обработка всех приходящих пакетов.
- INPUT. Сюда попадают те пакеты, которые направлены непосредственно в локальный компьютер.
- FORWARD. Применяется для «транзитных пакетов», которые следуют таблице маршрутизации.
- OUTPUT. Используется для исходящих пакетов.
- POSTROUTING. Последний этап в прохождении исходящим пакетом всех цепочек.
Помимо встроенных цепочек, пользователи могут создавать или же удалять свои собственные.
Просмотр правил IPTables и управление ими
Как уже было сказано ранее, все цепочки содержат определённые условия для пакетов. Для просмотра правил IPTables и управления ими и используется утилита IPTables. Каждое отдельное правило представляет собой строку с набором условий для пакетов, а также действия над ними, в зависимости от исхода.
Формат команды выглядит таким образом: iptables [-t название обрабатываемой таблицы] вызываемая команда [критерии] [выполняемое действие].
Все, что заключено в квадратные скобки? может быть опущено. Если это параметр с указанием таблицы, то будет использоваться filter. Для применения какого-то определённого имени нужно добавить ключ -t. Вызываемая команда позволяет вызвать необходимое действие, например, добавить правило IPTables или удалить его. В «критериях» указываются параметры, по которым будет происходить отбор. И в «действии» применяется действие, которое нужно выполнить, если условие соблюдено.
Команды для создания и просмотра правил IPTables
Далее приведены несколько команд утилиты:
- Append (-A). При использовании команды указывается цепочка и таблица, в которые нужно добавить необходимое правило. Ценность команды в том, что делает она это в конце всего списка.
- Delete (-D). Как можно понять из названия, производит удаление правила. В качестве параметров можно указать как полное наименование, так и присвоенные им номера.
- Rename-chain (-E). Меняет название цепочки. В команде указывается старое, затем новое имя.
- Flush (-F). Очистка абсолютно всех правил определённой таблицы.
- Insert (-I). Данная команда вставляет в указанное номером место, нужное правило.
- List (- L). Просмотр правил Iptables. Если не указана таблица, то будет использована filter по умолчанию.
- Policy (-P). Используется политика по умолчанию для указанной цепочки.
- Replace (-R). Меняет правило под указанным номером, на необходимое.
- Delete-chain (-X). Эта команда производит удаление всех созданных цепочек. Останутся только предустановленные.
- Zero (-Z). Сбросит счётчики переданных данных в указанной цепочке.
Немного о параметрах отбора пакетов
Их можно условно разделить на три разновидности:
- Общие критерии. Их можно указывать для любых правил. Они не требуют подключения особых расширений и модулей, а также не зависят от того, какой протокол будет задействован.
- Не общие критерии. Они становятся доступны при использовании общих критериев.
- Явные. Для того, чтобы воспользоваться данным типом, нужно подключать специальные плагины для netfilter. К тому же в команде необходимо применить ключ -m.
Стоит немного рассказать о часто встречающихся параметрах, применяемых при анализе пакетов:
- Protocol (-p). Указывает на протокол.
- Source (-s). Данный параметр определяет IP адрес источника, с которого пришёл пакет. Его можно указать несколькими способами. Конкретный хост, адрес или же целую подсеть.
- Destination (-d). Адрес назначения пакета. Также, как и предыдущий, может быть описан несколькими способами.
- In-interface (-i). Указывает входящий интерфейс пакета. В основном используется для NAT или на системах с несколькими интерфейсами.
- Out-interface (-o). Исходящий интерфейс.
Несколько примеров
Для того, чтобы выполнить просмотр правил IPTables nat? нужно воспользоваться командой - «iptables -L -t nat». Узнать общий статус файрвола - «iptables -L -n -v». К тому же данная команда позволяет посмотреть правила IPTables, имеющиеся во всей системе. Вставить правило в определённое место таблицы, например, между первой и второй строкой - «iptables -I INPUT 2 -s 202.54.1.2 -j DROP». Затем просмотреть, добавилось ли оно - «iptables -L INPUT -n --line-numbers».
Чтобы заблокировать определённый адрес, например, 12.12.12.12 - «iptables -A INPUT -s 12.12.12.12 -j DROP».
Справка по iptables - «man iptables». Если нужна информация по конкретной команде - «iptables -j DROP -h».
В заключение
Использовать команды IPTables нужно с осторожностью, так как неправильная настройка (по незнанию) может привести к сбоям в сети или полном выходе её из строя. Поэтому стоит подробно изучить мануалы и инструкции перед конфигурацией. В умелых же руках IPTables можно превратить в надёжного защитника сетевых соединений. Системные администраторы активно используют утилиту для создания подключений, изолированных от несанкционированного доступа.