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

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

Мануал

Цель этого руководства – показать, как удалить правила 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

Вы также можете удалить все правила для всей цепочки сразу.
Например, мы можем удалить все 5 правил в нашей цепочке FORWARD, просто выполнив приведенную ниже команду с опцией -F (flush):
$ 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, и он имеет большую кривую обучения, даже когда речь идет о самых простых задачах, таких как удаление правила.

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

см. также:

 

Добавить комментарий