Содержание

Правила iptables

Материал основан на следующих статьях:

https://losst.pro/prosmotr-pravil-iptables
https://losst.pro/kak-udalit-pravilo-iptables

Общая информация

iptables - инструмент администрирования фильтра пакетов IPv4 и NAT.

iptables используется для установки, настройки и просмотра таблиц правил фильтрации IP-пакетов в ядре Linux.

Каждая таблица содержит несколько предопределённых цепочек и может содержать цепочки, определённые пользователем.

Каждая цепочка - это список правил, которые могут воздействовать на множество пакетов.

Каждое правило определяет, какие действие произвести с пакетами, на которые оно действует. Эти действия называются целью, целью может быть и переход на другую (определённую пользователем) цепочку в этой же таблице.

Как посмотреть правила iptables

Для возможности выполнения команды iptables необходимо, чтобы пользователю были предоставлены привилегии суперпользователя с помощью команды sudo.

Существуют две версии утилиты для настройки брандмауэра Linux: iptables и ip6tables. iptables используется для протокола IPv4, а ip6tables для протокола IPv6.

Для протокола IPv4:

$ sudo iptables -L

Для протокола IPv6:

$ sudo ip6tables -L

С помощью дополнительных параметров команды sudo iptables -L можно добавлять дополнительные столбцы в выводимой таблице правил iptables. Рассмотрим название столбцов в стандартном выводе sudo iptables -L:

Список правил из цепочки

Команда чтобы вывести на экран конкретную цепочку правил выглядит следующим образом:

sudo iptables [-L имя цепочки]

Например просмотр правил iptables из цепочки OUTPUT:

$ sudo iptables -L OUTPUT

Список правил из таблицы

Команда вывода содержимого конкретно указанной таблицы выглядит следующим образом:

sudo iptables [-t имя таблицы] [-L имя цепочки]

Например:

$ sudo iptables -t nat -L OUTPUT

Вот список всех таблиц правил iptables:

  • filter – таблица по умолчанию. Используется для фильтрации пакетов. Содержится в цепочках INPUT, FORWARD, OUTPUT.
  • raw – используется редко. Пакет проверяется на соответствие условиям данной таблицы до передачи системе определения состояний (conntrack), например, для того, чтобы не обрабатываться с помощью данной системы (действие NOTRACK). Система определения состояний позволяет фильтровать пакеты на уровне взаимодействия сеансов приложений. То есть фильтрует пакеты по сеансу связи – новый сеанс связи (NEW), уже установленный сеанс связи (ESTABLISHED), дополнительный сеанс связи к уже существующему (RELATED). Данная система позволяет реализовать высокоуровневый межсетевой экран, который вместо работы с пакетами работает с сеансами связи в рамках приложений. Содержится в цепочках PREROUTING и OUTPUT.
  • mangle – содержит правила модификации обрабатываемых IP-пакетов. Например, изменение полей заголовков IP-пакетов, содержащих служебную информацию. Используется редко. Содержится в цепочках PREROUTING, INPUT, FORWARD, OUTPUT.
  • nat – предназначена для подмены адреса отправителя или получателя. Данная таблица применяется только к первому пакету из потока протокола передачи данных по сети, к остальным пакетам потока пакетов выбранное действие применяется далее автоматически. Таблицу используют, например, для трансляции адресов отправителя и получателя, для маскировки адресов отправителя или получателя. Это делается в основном в двух случаях. Первый – когда необходимо организовать доступ к сети Интернет нескольким компьютерам, расположенным за данным компьютером. Второй – когда необходимо спрятать (замаскировать) в целях безопасности отправителя или получателя информации, передаваемой по сети Интернет. Содержится в цепочках PREROUTING, OUTPUT, POSTROUTING.

Номера правил в iptables

Следующая команда позволяет нам вывести номера правил iptables, которые потом можно использовать для управления ими на экран:

sudo iptables [-t таблица] [-L имя_цепочки] --line-numbers -n

Например:

$ sudo iptables -t filter -L --line-numbers -n

Просмотр правил со статистикой пакетов

Чтобы посмотреть таблицу правил со счетчиком переданного (полученного) количества байтов (bytes) и пакетов (pkts) используется следующая команда:

sudo iptables [-t таблица] [-L имя цепочки] -n -v

Например:

$ sudo iptables -t filter -L -n -v

Как удалить правило iptables

Основная работа c межсетевым экраном Netfilter с помощью утилиты iptables состоит в удалении неверных или неиспользуемых правил и добавлении в цепочки новых правил. Их выполнение осуществляется последовательно.

Как удалить правило по номеру

Чтобы удалить правило по номеру iptables будет использоваться такая команда:

sudo iptables [-t таблица] -D  цепочка номер_правила

Например:

$ sudo iptables -t filter -D INPUT 2

Данная команда удалит из таблицы filter цепочки INPUT правила с номерами 2. Нумерация правил начинается с 1.

Как удалить правило по действию

Удалить правило iptables по выполняемому над пакетами действию можно с помощью следующей команды:

sudo iptables [-t таблица] -D  цепочка спецификации_правила

В спецификациях правила необходимо указать IP адрес отправителя или другие параметры правила, однозначно его определяющие (порт, IP адрес назначения, протокол и др.) и выполняемое действие, например, -j ACCEPT.

Например:

$ sudo iptables -t filter -D INPUT -s 192.168.3.0/24 -j ACCEPT

Данная команда удалит из таблицы filter цепочки INPUT правило с заданным отправителем 192.168.3.0/24 и действием над пакетами DROP.

Как удалить все правила из таблицы

Следует заметить, что существует возможность удалить правила текущей таблицы из всех цепочек правил с помощью опции -F (–flush). По умолчанию текущей таблицей является таблица filter. Поэтому, чтобы удалить все правила таблицы по умолчанию надо использовать команду:

$ sudo iptables -F

Ещё можно указать таблицу из которой вы хотите выполнить удаление правила iptables:

sudo iptables -t таблица -F

Например:

$ sudo iptables -t nat -F

Данная команда удалит все правила из всех цепочек таблицы nat.

Как удалить все правила в цепочке

Для того, чтобы удаление правил iptables из конкретной цепочки в заданной таблице выполняется такой командой:

sudo iptables -t таблица -F цепочка_правил

Например:

$ sudo iptables -t nat -F PREROUTING

Данная команда удалит все правила из таблицы nat в цепочке PREROUTING.