Удалить iptables Debian 9

Обновлено: 01.07.2024

Прикладная программа iptables пользовательского пространства позволяет настраивать таблицы, предоставляемые брандмауэром ядра Linux, а также цепочки и правила, которые он хранит. Модуль ядра, используемый в настоящее время для iptables, применяется только к трафику IPv4, для настройки правил брандмауэра для соединений IPv6 вместо этого используйте ip6tables, которые реагируют на те же структуры команд, что и iptables.

Список текущих правил

Серверы Debian по умолчанию не применяют никаких ограничений, но для справки в будущем проверьте текущие правила iptable, используйте следующую команду.

При этом будет распечатан список из трех цепочек: ввод, пересылка и выход, как в примере с пустой таблицей правил ниже.< /p>

Имена цепочек указывают, к какому трафику будут применяться правила в каждом списке, вход — для всех подключений, входящих на ваш облачный сервер, выход — любой исходящий трафик и вперед для любого прохода. Каждая цепочка также имеет свою настройку policy, которая определяет, как обрабатывается трафик, если он не соответствует каким-либо конкретным правилам. По умолчанию установлено значение принять.

Добавление правил

Брандмауэры обычно можно настроить одним из двух способов: либо установить правило по умолчанию, чтобы принять, а затем заблокировать любой нежелательный трафик с помощью определенных правил, либо использовать правила для определения разрешенного трафика и блокировки всего остального. Последний часто является рекомендуемым подходом, поскольку он позволяет упреждающе блокировать трафик, вместо того, чтобы реактивно отклонять подключения, которые не должны пытаться получить доступ к вашему облачному серверу.

Чтобы начать использовать iptables, сначала необходимо добавить правила для разрешенного входящего трафика для необходимых вам служб. Iptables может отслеживать состояние соединения, используйте приведенную ниже команду, чтобы разрешить установленные соединения.

Вы можете убедиться, что правило было добавлено, с помощью того же sudo iptables -L, что и раньше.

Далее разрешите трафик на определенный порт, чтобы активировать SSH-соединения со следующим.

После добавления всех разрешенных правил, которые вам нужны, измените политику ввода на удаление.

Предупреждение. Если изменить правило по умолчанию на сброс, будет разрешено только специально принятое соединение. Перед изменением правила по умолчанию убедитесь, что вы включили как минимум SSH, как показано выше.

Эти же правила политики можно определить и для других цепочек, введя имя цепочки и выбрав либо DROP, либо ACCEPT.

Сохранение и восстановление правил

Теперь, если вы перезапустите свой облачный сервер, все эти конфигурации iptables будут стерты. Чтобы этого не произошло, сохраните правила в файл.

Затем вы можете просто восстановить сохраненные правила, прочитав сохраненный файл.

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

После установки первоначальная настройка попросит сохранить текущие правила для IPv4 и IPv6, просто выберите Да и нажмите Enter для обоих.

Если вы вносите дальнейшие изменения в свои правила iptables, не забудьте сохранить их снова, используя ту же команду, что и выше. iptables-persistent ищет файлы rules.v4 и rules.v6 в папке /etc/iptables.

Это всего лишь несколько простых команд, которые вы можете использовать с iptables, который способен на гораздо большее. Читайте дальше, чтобы узнать о некоторых других параметрах, доступных для более расширенного управления правилами iptable.

Расширенная настройка правила

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

Число в начале каждой строки правила указывает позицию в цепочке. Чтобы вставить новое правило над определенным существующим правилом, просто используйте порядковый номер этого существующего правила. Например, чтобы вставить новое правило в начало цепочки, используйте следующую команду с номером индекса 1.

Если вы хотите удалить существующее правило из определенной цепочки, используйте команду удаления с параметром -D. Самый простой способ выбрать правило для удаления — использовать порядковые номера, описанные выше. Например, чтобы удалить второе правило в цепочке ввода, используйте эту команду.

Также можно сбросить все правила определенной цепочки или даже всех iptables, используя параметр -F. Это полезно, если вы подозреваете, что iptables мешает вашему сетевому трафику, или вы просто хотите снова начать настройку с чистой таблицы.

Предупреждение. Прежде чем очищать любую цепочку, убедитесь, что для правила по умолчанию задано значение ПРИНЯТЬ.

После этого вы можете очистить другие правила. Не забудьте сохранить правила в файл перед очисткой таблицы на случай, если позже вы захотите восстановить конфигурацию.

Если iptable очищен, ваш сервер может быть уязвим для атак. Убедитесь, что ваша система защищена альтернативным методом, даже временно отключив iptables.

Главный редактор и технический писатель в UpCloud с 2015 года. Энтузиаст облачных вычислений, пишущий о серверных технологиях и программном обеспечении.

Iptables – это брандмауэр, играющий важную роль в сетевой безопасности большинства систем Linux. В то время как во многих учебниках по iptables вы узнаете, как создавать правила брандмауэра для защиты вашего сервера, этот урок посвящен другому аспекту управления брандмауэром: составлению списка и удалению правил.

В этом руководстве мы рассмотрим, как выполнять следующие задачи iptables:

  • Список правил
  • Очистить счетчики пакетов и байтов
  • Удалить правила
  • Очистить цепочки (удалить все правила в цепочке)
  • Очистить все цепочки и таблицы, удалить все цепочки и принять весь трафик.

Примечание. При работе с брандмауэрами будьте осторожны, чтобы не заблокировать доступ к собственному серверу, заблокировав трафик SSH (порт :22 по умолчанию). Если вы потеряете доступ из-за настроек брандмауэра, вам может потребоваться подключиться к нему через внешнюю консоль, чтобы исправить свой доступ.

Предпосылки

В этом руководстве предполагается, что вы используете сервер Linux с установленной командой iptables и что у вашего пользователя есть привилегии sudo.

Если вам нужна помощь в начальной настройке, обратитесь к нашему руководству по начальной настройке сервера с Ubuntu 20.04. Он также доступен для Debian и CentOS.

Правила листинга по спецификации

Давайте посмотрим, как составить список правил. Существует два разных способа просмотра активных правил iptables: в виде таблицы или в виде списка спецификаций правил. Оба метода предоставляют примерно одинаковую информацию в разных форматах.

Чтобы вывести список всех активных правил iptables по спецификации, запустите команду iptables с параметром -S:

Как видите, выходные данные выглядят точно так же, как команды, которые использовались для их создания, без предыдущей команды iptables. Это также будет похоже на файлы конфигурации правил iptables, если вы когда-либо использовали iptables-persistent или iptables save .

Список конкретной цепочки

Если вы хотите ограничить вывод определенной цепочкой ( INPUT , OUTPUT , TCP и т. д.), вы можете указать имя цепочки сразу после параметра -S. Например, чтобы отобразить все спецификации правил в цепочке TCP, выполните следующую команду:

Теперь давайте рассмотрим альтернативный способ просмотра активных правил iptables: в виде таблицы правил.

Вывод правил в виде таблиц

Список правил iptables в виде таблицы может быть полезен для сравнения различных правил друг с другом. Чтобы вывести все активные правила iptables в таблицу, запустите команду iptables с параметром -L:

Это выведет все текущие правила, отсортированные по цепочке.

Если вы хотите ограничить вывод определенной цепочкой ( INPUT , OUTPUT , TCP и т. д.), вы можете указать имя цепочки сразу после параметра -L.

Давайте рассмотрим пример цепочки INPUT:

В первой строке вывода указывается имя цепочки (в данном случае INPUT), за которой следует политика по умолчанию (DROP). Следующая строка состоит из заголовков каждого столбца в таблице, за которыми следуют правила цепочки. Давайте рассмотрим, что означает каждый заголовок:

  • target : если пакет соответствует правилу, цель указывает, что с ним следует делать. Например, пакет можно принять, отбросить, зарегистрировать или отправить в другую цепочку для сравнения с другими правилами.
  • prot: протокол, например tcp, udp, icmp или все.
  • opt : используется редко, в этом столбце указаны параметры IP.
  • source : исходный IP-адрес или подсеть трафика или любое другое место.
  • destination : IP-адрес назначения, подсеть трафика или любое другое место.

Последний столбец, который не помечен, указывает параметры правила. Это любая часть правила, не указанная в предыдущих столбцах. Это может быть что угодно: от исходного и целевого портов до состояния соединения пакета.

Отображение количества пакетов и совокупного размера

При выводе списка правил iptables также можно отобразить количество пакетов и совокупный размер пакетов в байтах, соответствующих каждому конкретному правилу. Это часто полезно при попытке получить общее представление о том, какие правила соответствуют пакетам. Для этого используйте вместе параметры -L и -v.

Например, давайте снова посмотрим на цепочку INPUT с параметром -v:

Обратите внимание, что теперь в списке есть два дополнительных столбца: pkts и bytes .

Теперь, когда вы знаете, как составить список активных правил брандмауэра различными способами, давайте посмотрим, как можно сбросить счетчики пакетов и байтов.

Сброс счетчика пакетов и общего размера

Если вы хотите очистить или обнулить счетчики пакетов и байтов для ваших правил, используйте параметр -Z. Они также сбрасываются, если происходит перезагрузка. Это полезно, если вы хотите узнать, получает ли ваш сервер новый трафик, соответствующий вашим существующим правилам.

Чтобы сбросить счетчики для всех цепочек и правил, используйте параметр -Z отдельно:

Чтобы сбросить счетчики для всех правил в определенной цепочке, используйте параметр -Z и укажите цепочку. Например, чтобы очистить счетчики цепочки INPUT, выполните следующую команду:

Если вы хотите очистить счетчики для определенного правила, укажите имя цепочки и номер правила. Например, чтобы обнулить счетчики для первого правила в цепочке INPUT, выполните следующее:

Теперь, когда вы знаете, как сбросить счетчики пакетов и байтов iptables, давайте рассмотрим два метода, которые можно использовать для их удаления.

Удаление правил по спецификации

Один из способов удаления правил iptables — это спецификация правила. Для этого вы можете запустить команду iptables с параметром -D, за которым следует спецификация правила. Если вы хотите удалить правила с помощью этого метода, вы можете использовать вывод списка правил, iptables -S , для некоторой справки.

Например, если вы хотите удалить правило, которое отбрасывает недействительные входящие пакеты ( -A INPUT -m conntrack --ctstate INVALID -j DROP ), вы можете выполнить следующую команду:

Обратите внимание, что параметр -A, который используется для указания положения правила во время создания, здесь следует исключить.

Удаление правил по цепочке и номеру

Другой способ удалить правила iptables — по их цепочке и номеру строки. Чтобы определить номер строки правила, перечислите правила в формате таблицы и добавьте параметр --line-numbers:

При этом к каждой строке правила добавляется номер строки, обозначенный заголовком num.

Как только вы узнаете, какое правило нужно удалить, запишите цепочку и номер строки правила. Затем выполните команду iptables -D, указав цепочку и номер правила.

Например, если мы хотим удалить входное правило, которое отбрасывает недопустимые пакеты, мы увидим, что это правило 3 цепочки INPUT. Итак, мы должны запустить эту команду:

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

Сброс цепочек

Iptables предлагает способ удалить все правила в цепочке или сбросить цепочку. В этом разделе рассматриваются различные способы сделать это.

Предупреждение. Будьте осторожны, чтобы не заблокировать доступ к своему серверу через SSH, сбросив цепочку с политикой по умолчанию drop or deny . Если вы это сделаете, вам может потребоваться подключиться к нему через консоль, чтобы исправить ваш доступ.

Сброс одной цепочки

Чтобы очистить определенную цепочку, что удалит все правила в цепочке, вы можете использовать параметр -F или эквивалент --flush и имя цепочки для очистки.

Например, чтобы удалить все правила в цепочке INPUT, выполните следующую команду:

Сброс всех цепочек

Чтобы сбросить все цепочки, что приведет к удалению всех правил брандмауэра, вы можете использовать опцию -F или эквивалентную --flush отдельно:

Сброс всех правил, удаление всех цепочек и принятие всех

В этом разделе показано, как сбросить все правила, таблицы и цепочки брандмауэра и разрешить весь сетевой трафик.

Предупреждение. Это фактически отключит ваш брандмауэр. Вам следует следовать этому разделу только в том случае, если вы хотите заново настроить брандмауэр.

Сначала установите политики по умолчанию для каждой из встроенных цепочек на ACCEPT . Основная причина сделать это — убедиться, что вы не будете заблокированы на своем сервере через SSH:

Затем очистить таблицы nat и mangle, очистить все цепочки ( -F ) и удалить все цепочки не по умолчанию ( -X ):

Теперь ваш брандмауэр разрешает весь сетевой трафик. Если вы сейчас перечислите свои правила, вы увидите, что их нет, и остаются только три цепочки по умолчанию ( INPUT , FORWARD и OUTPUT ).

Заключение

Изучив это руководство, вы узнали, как составлять список и удалять правила брандмауэра iptables.

Помните, что любые изменения iptables с помощью команды iptables являются эфемерными, и их необходимо сохранить, чтобы они сохранялись при перезагрузке сервера. Это описано в разделе «Сохранение правил» учебника «Общие правила и команды брандмауэра».

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Есть ли вероятность того, что какое-то непроницаемое правило останется в силе после запуска этого?

Идея состоит в том, чтобы иметь полностью чистую конфигурацию iptables, которую можно легко заменить новым набором правил (не говоря уже о маршрутах/параметрах ifconfig).


10 ответов 10

Если кратко ответить на ваш вопрос, то нет: не будет никаких "остаточных" правил после сброса каждой таблицы. Однако в интересах тщательности вы можете также установить политику для встроенных цепочек INPUT и FORWARD на ACCEPT :

Очистить правила ip6tables:

<р>. и это должно сделать это. iptables -nvL должен выдать этот (или очень подобный) вывод:

после очистки каждой таблицы не будет никаких «остаточных» правил. OP не очищает каждую таблицу. Как и вы. Вот как это выглядит, если вы хотите быть тщательным. И вы можете добавить iptables -t "$table" -Z . Обратите внимание, что таким образом вы жестко кодируете список таблиц и их цепочек. Поэтому я бы серьезно рассмотрел решение для сохранения и восстановления. Или вы можете просто выгрузить iptables.

Это корректно полностью сбросит вашу систему iptables до самого базового состояния:

Все политики будут сброшены на ACCEPT, а также будут очищены все таблицы, используемые в данный момент. Все цепочки, кроме встроенных цепочек, больше не будут существовать.

Отличный хак! Я бы не зависел от этого, поскольку всегда возможно, что незначительные изменения в формате сохранения/восстановления могут сломать его. Вероятно, лучше придерживаться API, который явно предоставляет инструмент iptables, IMO.

Я передумал: формат данных вряд ли сильно изменится, поскольку он так широко используется. +1.

Это незначительная деталь, но вы можете заменить первую печать $1 на печать $0, чтобы обеспечить согласованность :)

Это можно сделать с помощью 1 или 2 команд:

Если в настоящее время для политик по умолчанию установлено значение DROP, это быстрый способ заблокировать доступ к серверу. Итак, нет, это не процесс с 1 или 2 командами. Вам нужно сначала установить ACCEPT, если это не в настоящее время.

Всякий раз, когда мне нужно отключить брандмауэр, происходит что-то вроде этого:

  • iptables-save > iptables.bak
  • служба iptables остановлена ​​(у меня Fedora)

Создает резервную копию конфигурации в iptables_backup.conf и очищает все правила.

Чтобы восстановить предыдущую конфигурацию:

Вы можете просто выгрузить модули iptables из ядра:

UPD К сожалению, слишком хорошо, чтобы быть правдой. Пока в таблице есть правило или определенная пользователем цепочка, счетчик ссылок соответствующего модуля равен 1, и modprobe -r завершается ошибкой. Вы можете удалить правила и пользовательские цепочки следующим образом:

Кроме того, вы можете захотеть выгрузить модули таким образом (без жестко заданных имен модулей):

С другой стороны, после этого iptables-save выдает хороший пустой вывод :)


Отключить брандмауэр iptables!

Иногда требуется отключить брандмауэр iptables для устранения неполадок с подключением, а затем снова включить его. При этом вы также хотите сохранить все политики брандмауэра. В этой статье мы расскажем вам, как сохранить политики брандмауэра и как отключить/включить брандмауэр iptables. Подробнее о брандмауэре и политиках iptables читайте в нашей статье.

Сохранить политики iptables

Первым шагом при временном отключении брандмауэра iptables является сохранение существующих правил/политик брандмауэра. Команда iptables-save выводит список всех ваших существующих политик, которые вы можете сохранить в файле на вашем сервере.

Поэтому iptables-save — это команда, с помощью которой вы можете сделать резервную копию политики iptables.

Остановить/отключить брандмауэр iptables

Для старых ядер Linux у вас есть возможность остановить службу iptables с помощью команды service iptables stop, но если вы используете новое ядро, вам просто нужно стереть все политики и разрешить весь трафик через брандмауэр. Это так же хорошо, как вы останавливаете брандмауэр.

Для этого используйте приведенный ниже список команд.

  • -F: очистить все цепочки политик
  • -X: удалить цепочки, определенные пользователем.
  • -P ВВОД/ВЫВОД/ПЕРЕДАЧА: принять указанный трафик

После этого проверьте текущие политики брандмауэра. Это должно выглядеть так, как показано ниже, что означает, что все принято (при условии, что ваш брандмауэр отключен/остановлен)

Восстановить политики брандмауэра

После того, как вы закончите устранение неполадок и захотите снова включить iptables со всеми его конфигурациями. Сначала необходимо восстановить политики из резервной копии, которую мы сделали на первом шаге.

Запустить брандмауэр iptables

Затем запустите службу iptables, если вы остановили ее на предыдущем шаге с помощью службы iptables start . Если вы не остановили службу, вам подойдет только восстановление политик. Проверьте, все ли политики вернулись в конфигурации брандмауэра iptables:

Вот оно!Вы успешно отключили и включили брандмауэр без потери правил политики.

Читайте также: