Основная работа c межсетевым экраном Netfilter с помощью утилиты iptables состоит в удалении неверных или неиспользуемых правил и добавлении в цепочки новых правил. Их выполнение осуществляется последовательно.
В этой статье мы рассмотрим как удалить правило iptables с помощью различных команд, например, по его номеру или по действию, которое оно делает. Если вы не знакомы с командами просмотра правил Netfilter рекомендуем вам прочитать статью как просмотреть правила iptables.
Как удалить правило iptables
В рамках статьи нам придётся рассмотреть три варианта команды удаления:
sudo iptables [-t таблица] -D цепочка спецификации_правила
sudo iptables [-t таблица] -D цепочка номер_правила
sudo iptables [-t таблица] -F [цепочка]
Команды для протокола IPv6 будет абсолютно аналогичны:
sudo ip6tables [-t таблица] -D цепочка спецификации_правила
sudo ip6tables [-t таблица] -D цепочка номер_правила
sudo ip6tables [-t таблица] -F [цепочка]
Рассмотрим более подробно все варианты команд и их практическое применение. В данной статье для настройки firewall Netfilter используется операционная система Debian 10.2.
1. Как удалить правило по номеру
Чтобы удалить правило по номеру iptables будет использоваться такая команда:
sudo iptables [-t таблица] -D цепочка номер_правила
Например:
sudo iptables -t filter -D INPUT 2
Данная команда удалит из таблицы filter цепочки INPUT правила с номерами 2. Нумерация правил начинается с 1.
2. Как удалить правило по действию
Удалить правило 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.
3. Как удалить все правила из таблицы
Следует заметить, что существует возможность удалить правила текущей таблицы из всех цепочек правил с помощью опции -F (—flush). По умолчанию текущей таблицей является таблица filter. Поэтому, чтобы удалить все правила таблицы по умолчанию надо использовать команду:
sudo iptables -F
Ещё можно указать таблицу из которой вы хотите выполнить удаление правила iptables:
sudo iptables -t таблица -F
Например:
sudo iptables -t nat -F
Данная команда удалит все правила из всех цепочек таблицы nat.
4. Как удалить все правила в цепочке
Для того, чтобы удаление правил iptables из конкретной цепочки в заданной таблице выполняется такой командой:
sudo iptables -t таблица -F цепочка_правил
Например:
sudo iptables -t nat -F PREROUTING
Данная команда удалит все правила из таблицы nat в цепочке PREROUTING.
Выводы
В данной статье мы рассмотрели различные варианты удаления команд или целых блоков команд из цепочек и таблиц межсетевого экрана Netfilter с помощью утилиты iptables. Мы научились удалять все команды из текущей таблицы, из конкретной цепочки правил в указанной таблице, из указанной таблицы, научились удалять команды под указанными номерами и удалять команды с указанным действием над пакетами данных.