Заметки сисадмина » Iptables: Вывод и удаление правил брандмауэра

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

Iptables: Вывод и удаление правил брандмауэра

2024-12-16 · Posted in Linux / Unix / MAC

Приложение IPTables – брандмауэр, необходимый для безопасной работы с сетевыми ресурсами на платформе Linux. Рассмотрим узкую задачу: как просматривать списки правил, удалять ненужные, сбрасывать цепочки, очищать счетчик количества пакетов и их объема. Не рекомендуем трогать коннект по SSH, использующий порт 22, если вы не уверены на 100% в своих действиях, чтобы случайно не заблокировать удаленный доступ к тестовому хосту.

Просмотрим правила

В iptables доступен просмотр правил, установленных по умолчанию или предыдущим администратором. Выполним команду:

Результат будет отображен примерно так:

Просмотрим перечень правил цепочки

Функцию применяют, когда хотят убрать из вывода определенную цепочку – INPUT, OUTPUT, TCP и пр. Их указывают следом за опцией -S. Пример:

Результат применения команды система выведет на экран:

Есть похожий вариант индикации текущих правил.

Выведем перечень в виде таблицы

Такой способ удобен, если необходимо сопоставить разные правила. Построение таблицы заложено в утилиту, функция будет активирована при помощи опции -L. Введем команду iptables:

В таком случае также есть возможность ограничить вывод указанной цепочкой:

Вывод на экран примерно такой:

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

  • target – указывает, какие действия выполнять, если пакет отвечает настроенным правилам. Например, сервер их принимает, отклоняет, отправляет в другую цепь для сравнения;
  • prot – отражает используемый тип протокола (UDP, TCP или ALL).
  • opt – показывает опции IP-адреса, если они применяются при передаче данных.
  • source – позволяет посмотреть IP или подсеть источника трафика (anywhere означает, что система принимает данные отовсюду).
  • destination – подсеть или IP хоста, которому предназначен трафик (или, как и в предыдущем пункте, указано anywhere).

Заострим внимание, что у правой колонки нет заголовка. В ней указаны опции правил вроде номера порта исходного сервера или хоста назначения, состояния подключения текущего пакета.

Выведем счетчик пакетов и их общего размера

Пользователю доступен вывод перечня пакетов и их общего объема в байтах, соответствующего указанному правилу. Такая информация нужна, если требуется анализ приблизительного трафика по каждому из разрешенных правил. Функция доступна с момента установки iptables благодаря опциям -L и -v:

Вывод на экран будет выглядеть примерно так:

Если сравнить этот варианта вывода с предыдущим, легко заметить появление двух новых столбцов – pkts и bytes. Теперь перейдем к другим функциям, доступным для iptables в Ubuntu.

Сбросим счетчик пакетов и их объема

Очистка (обнуление) счетчика пакетов и объема предусмотрена опцией -Z. Она применяется при перезагрузке сервера автоматически. Но иногда пользователю нужно выяснить, поступает ли новый трафик. Пример команды:

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

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

Следующим шагом расскажем о двух вариантах удаления правил с помощью iptables.

Применим для удаления спецификацию

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

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

Применим для удаления номер

Второй вариант чуть сложнее, т.к. требует сначала выяснить номер строки, соответствующей тому правилу, которое планируется удалить. Применим опцию –line-number, она выводит список с цифровыми значениями для всех строк:

Результат будет выведен на экран примерно таким образом:

Эта команда внесет в таблицу номера строк в колонку num. Теперь мы можем выяснить точное значение для удаляемого правила. И ввести команду -D с указанием нужного номера. Например, требуется удалить задачу, указанную в строке 3, отклоняющую любые недействительные пакеты:

Помимо удаления, утилита поддерживает сброс цепочек правил.

Сбросим одну и несколько цепочек правил

Приложение позволяет сбрасывать действующие правила несколькими способами. При проверке этой функции важно случайно не заблокировать удаленный доступ к серверу с IPTables, который организован по протоколу SSH. Такое может произойти, если ввести команду с политикой «по умолчанию» drop или deny.

Сбросим одиночную цепочку

Сброс указанной цепочки с удалением правил внутри нее осуществляется при помощи опции -F или ее аналога –flush, после которых нужно добавить требуемое имя. Например, мы хотим убрать все правила внутри цепи OUTPUT.

Сбросим все цепочки

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

Итогом ввода этой команды будет разрешение любого трафика независимо от ранее установленных ограничений (входящего, исходящего, проходящего). Фактически это равнозначно отключению брандмауэра на сервере. Если такую команду ввести на рабочей машине, его придется настраивать с нуля, чтобы ограничить доступ посторонних, в том числе злоумышленников. Поэтому перед ее выполнением рекомендуется создать бэкап текущих настроек в файл с помощью iptables-save:

После настройки будет можно восстановить из файла с помощью iptables-restore:

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

После ввода сбросим таблицы nat и mangle, все цепочки – при помощи опции -F, а также удалим те, что не используются по умолчанию (для этого нужна опция -X).

После ввода перечисленных команд брандмауэр научится получать любой трафик из сети. При запросе списка действующих правил пользователь увидит «пустой экран». В нем останутся только цепочки, применяемые по умолчанию – это INPUT, FORWARD и OUTPUT.

Leave a Reply