Правила iptables
Материал основан на следующих статьях:
https://losst.pro/prosmotr-pravil-iptableshttps://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:
- target – выполняемое действие с пакетом при соответствии его данному правилу
- prot – протокол передачи данных, при котором применяется данное правило
- opt – дополнительные опции для правила
- source – IP адрес, подсеть, домен узла источника пакета, попадающего под выполнение данного правила
- destination – IP адрес, подсеть, домен узла назначения пакета, попадающего под выполнение данного правила
Список правил из цепочки
Команда чтобы вывести на экран конкретную цепочку правил выглядит следующим образом:
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.