Цель этого руководства – показать, как удалить правила iptables в системе Linux.
Можно удалять правила iptables по одному или очистить все правила в любой цепочке iptables за один раз.
Вскоре вы увидите, как это сделать.
Брандмауэр iptables в системах Linux – это очень полезная функция, которая позволяет системным администраторам контролировать с высокой точностью, какой сетевой трафик разрешен или запрещен в системе.
В конце концов, приходит время удалить правила, которые больше не соответствуют желаемой конфигурации.
Учебное пособие по брандмауэру Linux: таблицы, цепочки, основы IPTables на пальцах
В этом руководстве вы увидите несколько различных методов командной строки для удаления правил iptables в Linux.
Как удалить правила iptables в системах Linux – примеры команд
Некоторые приложения iptables, такие как firewalld для систем на базе Red Hat и ufw для систем на базе Ubuntu, имеют свои собственные команды, используемые для удаления правил брандмауэра. При использовании внешнего интерфейса iptables убедитесь, что удаление и настройка правил производится через это приложение, а не напрямую через iptables.
Прежде чем приступить к работе, убедитесь, что в вашей системе уже настроены некоторые правила.
В частности, в этом руководстве предполагается, что вы настроили правила с помощью iptables, а не с помощью внешнего приложения брандмауэра, такого как firewalld или ufw.
Чтобы увидеть правила в вашей системе, вы можете использовать следующую команду iptables.
Чтобы легче удалить конкретное правило, рекомендуется также использовать опцию –line-numbers .
$ sudo iptables -L
Пример вывода настроенных нами правил iptables (обратите внимание на номер строки в начале каждого правила):
Chain INPUT (policy ACCEPT) num target prot opt source destination Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 DROP all -- anywhere 10.0.0.0/8 2 DOCKER all -- anywhere anywhere 3 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED 4 ACCEPT all -- anywhere anywhere 5 ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain DOCKER (1 references) num target prot opt source destination 1 ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:https 2 ACCEPT tcp -- anywhere 172.17.0.4 tcp dpt:http 3 ACCEPT tcp -- anywhere 172.17.0.5 tcp dpt:4000 4 ACCEPT tcp -- anywhere 172.17.0.7 tcp dpt:mysql 5 ACCEPT tcp -- anywhere 172.17.0.7 tcp dpt:http 6 ACCEPT tcp -- anywhere 172.17.0.6 tcp dpt:3142
Прежде чем приступить к выполнению приведенных ниже команд, настоятельно рекомендуется создать резервную копию настроенных правил iptables.
Вы можете узнать, как это сделать, следуя нашему другому руководству о том, как сделать правила iptables постоянными после перезагрузки.
Способ 1
Теперь, когда у нас есть все номера строк, мы можем удалить любое из перечисленных в iptables правил.
В качестве примера мы удалим правило DROP all — anywhere 10.0.0.0/8 из цепочки FORWARD, которое под номером 1.
Для удаления этого правила мы вводим следующую команду iptables с опцией -D (delete):
$ sudo iptables -D FORWARD 1
Невозможно удалить несколько отдельных правил одновременно, если только вы не настроите для этого скрипт Bash. Однако номера правил будут меняться каждый раз, когда вы удаляете правило, и настроить скрипт для учета постоянно меняющихся номеров правил будет непросто. Несмотря на неудобство, рекомендуется просто потратить время на удаление каждого нежелательного правила по отдельности.
Способ 2
$ sudo iptables -F FORWARD
Способ 3
Использование опции -F, без указания конкретной цепочки, очистит правила для всех цепочек iptables.
Будьте осторожны при выполнении этой команды, так как потенциально вы можете удалить тонну правил.
$ sudo iptables -F
Способ 4
Вы также можете удалить саму цепочку с помощью опции -X.
Однако это сработает только в том случае, если вы предварительно очистили все ссылающиеся правила командой iptables -F [chain].
Например, для удаления цепочки DOCKER и всех ссылающихся на нее правил в нашей системе:
Чтобы очистить все пустые цепочки, вы можете использовать опцию -X без дополнительных аргументов.
$ sudo iptables -X
Способ 5
Чтобы удалить все настроенные правила в таблицах nat или mangle, необходимо указать эти таблицы отдельно с помощью опции -t (tables).
$ sudo iptables -t nat -F $ sudo iptables -t mangle -F
Способ 6
Чтобы сбросить всю конфигурацию iptables к значениям по умолчанию, вы можете использовать все следующие команды вместе.
Это сбросит ваши политики цепочек по умолчанию, очистит все правила из каждой таблицы, а затем удалит все пустые цепочки из каждой таблицы.
$ sudo iptables -P INPUT ACCEPT $ sudo iptables -P FORWARD ACCEPT $ sudo iptables -P OUTPUT ACCEPT $ sudo iptables -F $ sudo iptables -X $ sudo iptables -t nat -F $ sudo iptables -t nat -X $ sudo iptables -t mangle -F $ sudo iptables -t mangle -X
Способ 7
Последний способ – вручную отредактировать файл iptables-save, который находится в /etc/iptables/rules.v4 на системах DEB и /etc/sysconfig/iptables на системах на базе RPM.
После редактирования файлов, вы можете использовать команду iptables-restore для применения новых правил, которые вы настроили в выходных файлах.
Обратите внимание, что этот метод будет работать, только если у вас есть доступ к команде iptables-save в вашей системе.
Заключение
В этом уроке мы рассмотрели, как удалять правила iptables в командной строке Linux.
iptables – это сложный, но мощный брандмауэр, встроенный в ядро Linux, и он имеет большую кривую обучения, даже когда речь идет о самых простых задачах, таких как удаление правила.
Как показано здесь, есть несколько вариантов, которые мы можем использовать – нам нужно очистить все правила для определенной таблицы, цепочки или просто удалить правило по отдельности.
см. также:
- 🖧 Подборка основных популярных правил iptables
- 🖧 Общие правила брандмауэра iptables для сетевых администраторов
- 🖧 Как навсегда сохранить правила брандмауэра iptables на Linux
- 🛡️ Как перенести правила iptables CentOS / RHEL 6 в CentOS / RHEL 7 firewalld
- Как настроить IPtables для открытия портов в CentOS / RHEL