
Сетевые брандмауэры являются важным дополнением к безопасности компьютерной сети, выступая в качестве первой линии защиты от несанкционированного доступа и угроз безопасности.
Они выступают в качестве барьера между доверенной внутренней сетью и недоверенными внешними сетями.
Брандмауэры работают, постоянно отслеживая и контролируя входящий и исходящий сетевой трафик на основе заранее установленных правил безопасности.
На Linux iptables – это надежный пользовательский сетевой брандмауэр, который позволяет пользователям определять правила, регулирующие сетевой трафик.
Хорошее знание установленных правил ведет к эффективному управлению.
Тем более, что иногда мы можем столкнуться с проблемами сетевого взаимодействия, и одним из главных подозреваемых часто являются правила сетевого брандмауэра.
В этом руководстве мы изучим iptables и узнаем, как просмотреть все правила iptables в Linux.
Эти знания позволят нам понять защитные механизмы нашей сетевой инфраструктуры.
Что такое iptables
iptables – это фундаментальный компонент сети Linux, который предоставляет пользователю контроль над правилами фильтрации IP-пакетов в брандмауэре ядра Linux.
По сути, эти правила фильтрации пакетов применяются ко всем входящим, исходящим и перенаправленным пакетам, проходящим через сеть Linux-системы.
Обычно iptables поставляется предустановленным в системах Linux. Для работы с этой утилитой нам нужны права пользователя root.
Давайте попробуем вывести версию iptables, чтобы проверить статус установки:
Если команда iptables -version ничего не выводит, это означает, что iptables не установлен в нашей текущей системе.
В этом случае мы можем установить iptables вручную:
Для систем Debian и Ubuntu sudo apt-get install iptables Для CentOS и других систем на базе RPM sudo yum install iptables
В iptables есть три важных понятия, которые понадобятся нам в следующих разделах: таблицы, цепочки и правила.
Правила iptables содержат критерии, которые при сопоставлении с конкретным IP-пакетом вызывают определенные действия со стороны брандмауэра. iptables обходит все правила в цепочке последовательно в соответствии с происхождением пакета.
Просмотр всех правил iptables (таблица по умолчанию)/ Мы можем использовать несколько опций для вывода всех правил, доступных в iptables.
Если таблица не указана, iptables выведет правила для таблицы по умолчанию, которая является таблицей фильтров.
Во-первых, чтобы вывести список всех активных правил, мы можем использовать:
iptables -S [chain_name] iptables --list-rules [chain_name]
Здесь оба параметра -S и -list-rules обозначают одну и ту же функциональность.
Они выводят все правила, доступные для выбранной цепочки.
Примечательно, что аргумент chain_name является необязательным.
Если мы не указываем конкретную цепочку, утилита выводит правила для всех цепочек сразу.
Вот пример вывода результатов работы утилиты iptables с опцией -S:
iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT
В этом случае выводятся правила по умолчанию, которые настроены на прием всех пакетов в цепочках INPUT, FORWARD и OUTPUT.
Мы можем использовать аналогичный набор команд для выполнения той же задачи – перечисления всех правил в таблице по умолчанию:
iptables -L [chain_name] iptables --list [chain_name]
В этих командах опции -L и -list взаимозаменяемы.
Их задача – вывести все правила в опционально выбранной цепочке.
Основное отличие этих опций от -S или -list-rules заключается в формате вывода.
Запустим команду iptables, не указывая никакой цепочки:
iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Из результатов видно, что политика по умолчанию – принимать все пакеты для трех цепочек: INPUT, FORWARD и OUTPUT.
Мы можем заметить, что формат вывода немного отличается, но правила по сути одинаковы.
Вывод правил различных таблиц
Иногда вышеупомянутых опций недостаточно, чтобы вывести все правила из всех таблиц. Как уже говорилось, существует пять отдельных таблиц, которые контролирует iptables. Поэтому, чтобы увидеть полный список всех правил в брандмауэре, нам нужно последовательно вызвать iptables в каждой из этих таблиц.
Мы можем использовать опцию -t, чтобы указать конкретную таблицу:
iptables -L -v -t table_name
Здесь мы используем ту же опцию -L, что и в предыдущем разделе, которая перечисляет все правила во всех цепочках.
Опция -v или -verbose позволяет iptables отображать дополнительную информацию, такую как имена интерфейсов, параметры правил и т. д.
Опция -verbose особенно полезна, так как позволяет указать в выводе различные важные критерии, которые обычно не выводятся.
Так, чтобы вывести правила всех пяти таблиц, мы выполним команду:
iptables -L -v -t filter iptables -L -v -t nat iptables -L -v -t mangle iptables -L -v -t raw iptables -L -v -t security
Рассмотрим один конкретный пример вывода всех правил по умолчанию в таблице security:
iptables -L -v -t security Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Аналогичным образом мы можем перечислить правила, содержащиеся в остальных четырех таблицах.
Просмотр правил различных цепочек
Наконец, мы можем вывести список всех правил для определенных цепочек любой таблицы.
Это может быть полезно, если мы хотим просмотреть правила в соответствии с цепочками, поскольку правила в цепочке выполняются последовательно.
Наблюдение за правилами в одной цепочке дает дополнительное представление о том, как обрабатывается сетевой пакет.
Чтобы просмотреть цепочку в одной конкретной таблице, мы можем выполнить команду:
iptables -L chain_name -v -t table_name
Здесь мы указываем аргументы chain_name и table_name, что дает нам больше контроля над тем, какие правила просматривать.
Кроме того, имя_цепочки должно быть указано сразу после опции -L.
Опять же, мы можем заменить опцию -L на опцию -S, чтобы отформатировать вывод по-другому.
Рассмотрим пример вывода списка всех правил INPUT таблицы nat:
iptables -L INPUT -v -t nat Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Это правило по умолчанию, которое принимает любой пакет для трансляции сетевых адресов (NAT).
Таким образом, мы можем задавать и контролировать цепочки и таблицы для просмотра правил брандмауэра.
Заключение
В этой статье мы узнали, как получить полный список правил из известного сетевого брандмауэра Linux, iptables.
Понимание и изучение этих правил важно для правильной фильтрации сетевых пакетов и устранения проблем с подключением.
Мы начали с краткого обзора iptables, включая его установку, основные правила, цепочки и таблицы.
Затем мы рассмотрели несколько опций, которые помогают распечатать список правил для таблицы по умолчанию.
Наконец, мы узнали, как сфокусироваться на определенной таблице и изучить все ее правила брандмауэра.