Iptables -F навсегда удаляет все правила iptables?

8

В учебном документе RHEL автор говорит:

... выполните следующую команду, чтобы отключить брандмауэр в текущей системе: iptables -F

Он явно использует слово «отключить», что для меня предполагает, что это будет просто повторно включить. Читая справочную страницу для iptables, я вижу это:

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

Могу ли я получить разъяснения об ожидаемом поведении?

Майк Б
источник
2
Обратите внимание, что iptables -Fсбрасывает все правила в таблице «фильтр», он не сбрасывает другие таблицы (nat, mangle ...) и не восстанавливает политики по умолчанию, поэтому нельзя сказать, что они отключены. брандмауэр .
Стефан Шазелас

Ответы:

13

Эти iptablesправила хранятся в двух местах в системах Red Hat:

  • В памяти внутри работающего ядра, где код брандмауэра проверяет их на сетевой ввод-вывод. Сброс правил с помощью iptables -Fизбавляется только от этого набора правил.

  • В /etc/sysconfig/iptablesкотором они загружаются при загрузке. Вы можете выполнить перезагрузку без перезагрузки с помощью service iptables reloadили ...restart.

Таким образом, ответ - нет, сбрасывание правил iptables -Fне является постоянным.

Когда вы заходите setupи изменяете правила брандмауэра, он сохраняет их в /etc/sysconfig/iptables. Вы не должны редактировать этот файл напрямую, но если вы знаете iptablesформат командной строки, вы можете довольно легко определить формат этого файла.

Уоррен Янг
источник
Фантастический ответ. Я ценю детали и разъяснения. Спасибо, Уоррен.
Майк Б
9

Также, для справки, вот как очистить ВСЕ текущие правила iptables:

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables=/sbin/iptables
$iptables -F
$iptables -X
$iptables -t nat -F
$iptables -t nat -X
$iptables -t mangle -F
$iptables -t mangle -X
$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
Стив Дибб
источник
4
На самом деле таблиц больше, чем это. По крайней мере -t rawи -t security. Вместо жесткого кодирования используйте/proc/net/ip_tables_names
derobert