Просмотр правил фаервола linux

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

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

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.

Платформа

Разбираться в настройках брандмауэра лучше на удаленной машине, например, арендованной у провайдера Timeweb Cloud . В Timeweb Cloud вы можете выбрать один из готовых образов Linux-дистрибутивов, в которые уже предустановлено основное ПО. Поэтому дополнительно не понадобится устанавливать Linux и iptables , однако будет нужно создать пользователя с привилегиями sudo или изменить права имеющегося. Желательно работать с актуальной версией операционной системы, в этом материале будем использовать Ubuntu. Схема настройки на CentOS и Debian будет аналогичной.

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

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

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

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ICMP
-N TCP
-N UDP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

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

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

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

-N TCP
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT

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

Читайте также:  Apt get autoremove linux

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

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

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

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

Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
UDP udp -- anywhere anywhere ctstate NEW
TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
ICMP icmp -- anywhere anywhere ctstate NEW
REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
REJECT tcp -- anywhere anywhere reject-with tcp-reset
REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable

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

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

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

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

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

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

Chain INPUT (policy DROP 0 packets, 0 bytes) 
pkts bytes target prot opt in out source destination
284K 42M ACCEPT all -- any any anywhere anywhere ctstate RELATED, ESTABLISHED
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 DROP all -- any any anywhere anywhere ctstate INVALID
396 63275 UDP udp -- any any anywhere anywhere ctstate NEW
17067 1005K TCP tcp -- any any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
2410 154K ICMP icmp -- any any anywhere anywhere ctstate NEW
396 63275 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable
2916 179K REJECT all -- any any anywhere anywhere reject-with icmp-proto-unreachable
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

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

Читайте также:  Linux zip не сжимать

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

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

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

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

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

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

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

sudo iptables -D OUTPUT -m conntrack --ctstate INVALID -j DROP

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

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

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

sudo iptables -L --line-numbers

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

Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
2 ACCEPT all -- anywhere anywhere
3 DROP all -- anywhere anywhere ctstate INVALID
4 UDP udp -- anywhere anywhere ctstate NEW
5 TCP tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6 ICMP icmp -- anywhere anywhere ctstate NEW
7 REJECT udp -- anywhere anywhere reject-with icmp-port-unreachable
8 REJECT tcp -- anywhere anywhere reject-with tcp-reset
9 REJECT all -- anywhere anywhere reject-with icmp-proto-unreachable
10 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED

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

Читайте также:  Ошибка grub при установке astra linux

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

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

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

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

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

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

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

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

iptables-save > iptables_backup.txt

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

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

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

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

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables –X

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

Выводы

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

Источник

Оцените статью
Adblock
detector