Schetchiksg.ru

Счетчик СГ
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Iptables просмотр счетчика правил

Вывод и удаление правил IPTables

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

Это руководство охватывает следующие вопросы:

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

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

Требования

Для начала нужно настроить сервер и создать не-root пользователя с расширенными правами. Подробнее об этом можно прочитать в руководствах:

Вывод правил IPTables

Существует два способа просмотра активных правил фаервола IPTables:

  1. В виде таблицы;
  2. В виде списка спецификаций правил.

Оба метода предоставляют примерно одинаковую информацию в разных форматах.

Вывод правил по спецификации

Чтобы вывести список правил по спецификации, запустите:

sudo iptables -S
Example: Rule Specification Listing
-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

Как видите, вывод содержит команды, которые использовались для создания правил (без команды iptables). Также эта команда выводит содержимое конфигурационных файлов, если вы когда-либо использовали такие команды:

iptables-persistent
iptables save

Вывод цепочки правил

Чтобы ограничить вывод до определённой цепочки (INPUT, OUTPUT, TCP и т.п.), нужно просто указать имя цепочки после опции –S. К примеру, чтобы получить все правила цепи TCP, нужно запустить:

sudo iptables -S TCP
Example: TCP Chain Rule Specification Listing
-N TCP
-A TCP -p tcp -m tcp —dport 22 -j ACCEPT

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

Такой формат вывода правил iptables позволяет сравнивать разные правила.

Чтобы вывести все активные правила в виде таблицы, запустите iptables с опцией –L:

sudo iptables -L

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

Чтобы ограничить вывод до определённой цепочки, просто укажите имя нужной цепи после опции –L. Например:

sudo iptables -L INPUT
Example: Input Chain Rule Table Listing
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: задаёт протокол (например, TCP, UDP, ICMP и т.д.).
  • opt: показывает параметры IP (редко используется).
  • source: исходный IP-адрес или подсеть трафика (или anywhere).
  • destination: целевой IP-адрес или подсеть трафика (или anywhere).

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

Вывод количества пакетов и байтов

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

К примеру, запросите цепочку INPUT:

sudo iptables -L INPUT -v
Example: Verbose Listing
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.

Сброс счетчиков пакетов и байтов

Чтобы очистить счетчики пакетов и байтов, используйте опцию –Z. Эти счетчики сбрасываются после перезагрузки системы. Это позволяет узнать, получает ли сервер какой-либо трафик, совпадающий с правилами брандмауэра.

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

sudo iptables -Z

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

Читайте так же:
Хвс водоотведение по счетчику

sudo iptables -Z INPUT

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

sudo iptables -Z INPUT 1

Удаление правил iptables

Удалять правила брандмауэра iptables тоже можно двумя способами.

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

Первый способов удаления правил Iptables – использование спецификации правила. Для этого нужно запустить команду iptables с опцией –D, после которой указывается спецификация правила. Чтобы удалить правила таким способом, можно обратиться за помощью к выводу уже знакомой команды:

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

sudo iptables -D INPUT -m conntrack —ctstate INVALID -j DROP

Примечание: При этом нужно исключить опцию –А, которая задаёт положение правила во время создания.

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

Кроме того, правило можно удалить, зная имя цепочки и номер строки, к которой оно находится. Чтобы узнать номер строки правила, используйте опцию –line-numbers:

sudo iptables -L —line-numbers
[secondary_output Example Output: Rules with 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
.

Это добавит номер строки для каждого правила.

Зная имя цепи и номер строки, в которой находится искомое правило, используйте команду iptables –D, указав после опции эти данные. К примеру, чтобы удалить правило цепочки INPUT, которое сбрасывает недействительные пакеты, нужно использовать:

sudo iptables -D INPUT 3

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

Брандмауэр Iptables предоставляет возможность удалить все правила цепочки – сбросить цепочку правил. Данный раздел рассматривает несколько способов сделать это.

Примечание: Будьте внимательны, не заблокируйте себя на собственном сервере, случайно сбросив цепочку правил с политикой drop или deny. Если же вы всё-таки заблокировали себя, используйте консоль, чтобы остановить доступ.

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

Чтобы сбросить определённую цепочку правил, используйте флаг –F (или его полную версию –flush), указав имя цепочки.

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

sudo iptables -F INPUT

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

Чтобы сбросить все цепочки правил – то есть, удалить все правила фаервола, – используйте опцию –F (или –flush) без дополнительных параметров.

sudo iptables -F

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

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

Примечание: Это полностью отключит фаервол. Следуйте данному разделу только в том случае, если хотите заново настроить правила фаервола.

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

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 непостоянны, их нужно сохранять вручную, чтобы они оставались действительными после перезапуска системы.

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Основы iptables для начинающих. Часть 1. Общие вопросы

Основы iptables для начинающих. Часть 1. Общие вопросы

  • Автор: Уваров А.С.
  • 09.02.2020

Когда говорят о брандмауэре в Linux-системах в первую очередь вспоминают iptables, однако это не совсем верно, брандмауэром в Linux является netfilter, а iptables — одна из утилит для его настройки. Тем не менее именно iptables является стандартом интерфейса брандмауэра в Linux, а также созданных на его основе системах, например, RouterOS от Mikrotik. Поэтому знание iptables является обязательным для Linux-администраторов несмотря на то, что в новых дистрибутивах осуществляется постепенный переход на более новый инструмент управления — nftables, который, тем не менее, сохраняет совместимость со своим предшественником.

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

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

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

  • raw — предназначена для обработки пакетов прежде, чем они будут переданы системе conntrack, которая занимается отслеживанием состояния соединений и принадлежностью пакетов этим соединениям. Содержит встроенные цепочки PREROUTING и OUTPUT.
  • mangle — используется для модификации некоторых заголовков (TTL, TOS) и маркировке пакетов и соединений, содержит цепочки PREROUTING, INPUT, FORWARD, OUTPUT и POSTROUTING.
  • nat — предназначен для преобразования адресов и портов источника и назначения пакетов, встроенные цепочки: PREROUTING, OUTPUT, POSTROUTING.
  • filter — применяется, собственно, для фильтрации пакетов, является таблицей по умолчанию, т.е. если таблица не указана явно, то используется filter, имеет цепочки INPUT, FORWARD и OUTPUT.
  • security — используется для работы совместно с системами принудительного контроля доступа, такими как SELinux. Встроенные цепочки INPUT, FORWARD, OUTPUT.
Читайте так же:
Схема подключения счетчика нева 324 ar e4s

Обратите внимание, что названия таблиц всегда пишутся в нижнем регистре, а цепочек — в ВЕРХНЕМ.

На практике вы обычно будете использовать таблицы filter и nat, в некоторых случаях — mangle, поэтому таблицы raw и security мы далее рассматривать не будем.

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

Внутренних цепочек также пять:

  • PREROUTING — используется для всего входящего трафика до принятия первого решения о маршрутизации
  • INPUT — применяется для входящего трафика текущего узла
  • FORWARD — через нее проходит транзитный трафик узла
  • OUTPUT — применятся для исходящего трафика текущего узла
  • POSTROUTING — используется для всего исходящего трафика после принятия всех решений о маршрутизации

После инициализации все цепочки пустые и не содержат никаких правил. Но каждая цепочка имеет действие по умолчанию (стандартно — ACCEPT), которое будет применено к пакету, если он прошел всю цепочку и не попал под действие ни одного правила.

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

Критериев может быть несколько, они комбинируются по принципу логического И, допускается также условие с отрицанием — И-НЕ, такое выражение будет истинным, если истинными являются все условия. Таким образом правило сработает если пакет удовлетворяет всем перечисленным критериям. В качестве критериев используются различные свойства пакетов и/или соединений, наиболее часто используются интерфейсы, IP-адреса источника и назначения, порты.

Действие выполняет какую-либо одну операцию с пакетом, разные таблицы допускают применение разных наборов действий, например, действие MARK используется в таблице mangle, а MASQUERADE — в таблице nat. Наиболее общими действиями являются ACCEPT, DROP и REJECT. Первое из них пропускает пакет, а два последних блокируют, при этом REJECT сообщает источнику об отказе, а DROP нет, поэтому его чаще всего используют для блокировки внешних пакетов, чтобы не давать потенциальному злоумышленнику лишней информации о работе сети.

Все действия делятся на две категории: терминальные и нетерминальные. Терминальные действия прекращают прохождение пакета по цепочке, к ним относятся все специфичные действия для таблиц filter и nat, нетерминальными являются действия специфичные для таблицы mangle.

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

Рассмотрим схему выше. Пакет попадает в цепочку и происходит срабатывание первого правила, но так как действие LOG является нетерминальным, то пакет продолжает движение по цепочке. Следующим срабатывает правило 3, действие ACCEPT терминальное и поэтому пакет покидает цепочку.

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

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

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

Глядя на нее, можно подумать, что таблицы находятся внутри цепочек, это неверно, но стандартный порядок прохождения таков, что одноименные цепочки таблиц проходятся последовательно, поэтому на схеме их объединяют для лучшего понимания логики процесса.

Итак, входящий пакет прежде всего попадает в цепочку PREROUTING таблицы mangle, затем передается в PREROUTING таблицы nat. Здесь мы можем выполнить маркировку пакетов и преобразование адреса назначения — DNAT. Затем принимается решение о маршрутизации, в зависимости от того предназначен пакет хосту или является транзитным будут задействованы либо цепочки INPUT, либо FORWARD таблиц mangle и filter.

Все основные действия по фильтрации пакетов производятся именно в таблице filter, при этом фильтрация локального и транзитного трафика производится отдельно. При составлении правил фильтрации следует учитывать, что у пакета может быть изменен адрес и порт назначения вследствие прохождения цепочки PREROUTING таблицы nat. Это актуально при пробросе портов на нестандартные номера, скажем, пришедший на адрес внешнего интерфейса и нестандартный порт пакет после выполнения над ним действия DNAT попадет в таблицу filter уже со стандартным портом и адресом внутреннего узла в качестве адреса назначения.

Локальные пакеты после таблицы filter передаются локальным процессам, на этом путь входящего пакета в системе заканчивается. В ответ локальный процесс формирует исходящий пакет и после решения о маршрутизации передает его в цепочки OUTPUT таблиц mangle, nat и filter. И если таблицы mangle и filter понятны, то наличие между ними таблицы nat требует отдельных пояснений.

Читайте так же:
Экспериментальные методы исследования частиц счетчик гейгера

Обычно для преобразования сетевых адресов в таблице nat используются цепочки PREROUTING и POSTROUTING, которые закрывают большинство типовых задач. Но бывают ситуации, когда преобразование сетевых адресов нужно выполнить отдельно для исходящих пакетов по критериям, которым могут удовлетворять и пакеты транзитные. В этом случае можно и нужно использовать цепочку OUTPUT таблицы nat. Хотя это достаточно редкий сценарий и в большинстве типовых случаев цепочки OUTPUT могут совсем не содержать правил.

После принятия всех решений о маршрутизации как локальные, так и транзитные пакеты попадают в цепочки POSTROUTING таблиц mangle и nat, здесь производятся окончательная обработка исходящих пакетов. Наиболее часто используется таблица nat и действия SNAT и MASQUERADE, используемые для изменения адреса источника пакета. Никакой фильтрации пакеты после этого не проходят. Это также важно понимать при построении правил.

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

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

Самое важное, что следует понять из этой схемы, что транзитный трафик никогда не попадает в цепочки INPUT и OUTPUT, а преобразование адреса назначения (DNAT) выполняется перед фильтрацией.

Для локальных пакетов стандартный порядок будет следующим:

Прежде всего следует запомнить, что локальный трафик никогда не попадает в цепочки FORWARD. Также, в отличии от транзитного трафика, локальный представлен двумя видами пакетов: входящими и исходящими. Путь входящего пакета ограничивается цепочками PREROUTING и INPUT, а исходящего OUTPUT и POSTROUTING, т.е. если нам нужно выполнить преобразование адреса назначения (DNAT) для локального пакета, то мы должны сделать это в цепочке OUTPUT, потому что в PREROUTING такой пакет никогда не попадет.

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

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

Дополнительные материалы:

  1. Основы iptables для начинающих. Часть 1. Общие вопросы
  2. Основы iptables для начинающих. Часть 2. Таблица filter
  3. Основы iptables для начинающих. Часть 3. Таблица nat
  4. Основы iptables для начинающих. Часть 4. Таблица nat — типовые сценарии использования

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Русские Блоги

Основы iptables 2. Просмотр правил

В предыдущей статье мы подвели итог, что в iptables для нас есть предопределенные 4 таблицы: необработанная таблица, таблица изменений, таблица nat и таблица фильтров.Разные таблицы имеют разные функции.

Фильтр отвечает за функции фильтрации, например, к каким IP-адресам разрешен доступ, каким IP-адресам запрещен, к каким портам разрешен доступ и какие порты запрещены. Таблица фильтров будет отфильтрована в соответствии с определенными нами правилами. Таблица фильтров должна быть наиболее часто используемой таблицей. Итак, здесь мы возьмем таблицу фильтров в качестве примера, чтобы узнать, как на самом деле работать с iptables.

Как просмотреть правила в таблице фильтров? Используйте следующую команду для просмотра.

В приведенном выше примере мы используем параметр -t, чтобы указать таблицу, с которой нужно работать, и параметр -L для просмотра правил таблицы, соответствующей параметру -t. Параметр -L означает перечисление правил, поэтому значение приведенной выше команды — столбец Из всех правил таблицы фильтров обратите внимание, что правила, показанные на рисунке выше (те, что отмечены зеленым, являются правилами), являются правилами, установленными по умолчанию после того, как Centos6 запускает iptables. В настоящее время мы не заботимся о них. На рисунке выше показаны 3 цепочки ( Части, отмеченные синим цветом, являются цепочками), цепочкой INPUT, цепочкой FORWARD и цепочкой OUTPUT. Каждая цепочка имеет свои собственные правила. В предыдущей статье мы провели аналогию, сравнивая «цепочку» с «уровнем» и разными «уровнями». «Имеют разные возможности, поэтому, как видно из приведенного выше рисунка, цепочка INPUT, цепочка FORWARD и цепочка OUTPUT имеют возможность« фильтровать ». Поэтому, когда мы хотим определить определенное правило« фильтрации », мы будем Определены в таблице фильтров, но в какой «цепочке» определены правила? Это зависит от сценария нашей работы. Например, если нам нужно запретить IP-адресу доступ к нашему хосту, нам нужно определить правила в цепочке INPUT. Потому что, как мы уже упоминали в теоретическом резюме, когда сообщение отправляется на этот компьютер, оно проходит через цепочку PREROUTING и INPUT (если вы не понимаете, пожалуйста, просмотрите предыдущую статью), поэтому, если мы хотим запретить отправку определенных сообщений На этом компьютере мы можем определять правила только в цепочке PREROUTING и INPUT, но цепочка PREROUTING не существует в таблице фильтров. Другими словами, уровень PREROUTING по своей сути не поддерживает фильтрацию, поэтому мы можем использовать только цепочку INPUT Конечно, если это другие сценарии работы, вам может потребоваться определить правила фильтрации в цепочке FORWARD или в цепочке OUTPUT.

Сказав это, давайте продолжим говорить о том, как просматривать правила в таблице.

Мы можем использовать команду iptables -t table name -L, чтобы перечислить все правила в таблице фильтров, пример следующий.
iptables -t raw -L
iptables -t mangle -L
iptables -t nat -L
Фактически, мы можем опустить фильтр -t. Когда параметр -t не используется для указания таблицы, по умолчанию используется таблица фильтров, то есть iptables -L означает перечисление всех правил в таблице фильтров.

Читайте так же:
Однолинейная схема для двух счетчиков

Мы также можем просматривать только правила указанной цепочки в указанной таблице, используя имя цепочки -L, например:

Мы можем использовать опцию -v для просмотра все более и более подробной информации.Примеры следующие.

Как видите, после использования опции -v iptables показывает нам больше информации. Итак, что означают эти поля?
Фактически, эти поля являются атрибутами, соответствующими правилам. Говоря прямо, они представляют собой всевозможную информацию о правилах, поэтому давайте резюмируем значение этих полей.
pkts: Количество пакетов, соответствующих соответствующему правилу.
bytes: Соответствует общему размеру согласованных пакетов.
target: Цель, соответствующая правилу, часто представляет собой «действие», соответствующее правилу, то есть меры, которые необходимо предпринять после успешного сопоставления с правилом.
prot: Указывает протокол, соответствующий правилу, независимо от того, применяется ли это правило только к определенным протоколам.
opt: Указывает параметр, соответствующий правилу.
in: Указывает, в какой интерфейс (сетевая карта) поступает пакет данных, и мы можем указать, на какую сетевую карту будет передаваться пакет, чтобы соответствовать текущим правилам.
out: Указывает, с какого интерфейса (сетевой карты) поступает пакет данных, и мы можем установить, с какой сетевой карты выводится пакет, чтобы соответствовать текущим правилам.
source: Указывает адрес источника, соответствующий правилу, который может быть IP-адресом или сегментом сети.
destination: Указывает целевой адрес, соответствующий правилу. Это может быть IP-адрес или сегмент сети.

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

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

Конечно, мы также можем проверить правила определенной цепочки и предотвратить обратное разрешение IP, что более понятно, например iptables -nvL INPUT

Если вы привыкли просматривать списки с порядковыми номерами, вы определенно расстроитесь при просмотре правил в таблице iptables. Неважно, чтобы вас удовлетворили, используйте —line-numbers для отображения количества правил. Пример следующий.

Опция -line-numbers не имеет соответствующей короткой опции, но когда мы сокращаем ее до -line, iptables в centos также можно распознать.

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

Скобки после цепочки INPUT на приведенном выше рисунке содержат три части: ACCEPT политики, 0 пакетов и 0 байтов.

policyПредставляет политику по умолчанию для текущей цепочки. Политика ACCEPT означает, что действие по умолчанию для цепочки INPUT на приведенном выше рисунке — ACCEPT. Другими словами, все запросы, которые проходят контрольную точку INPUT, принимаются по умолчанию, поэтому, когда мы настраиваем определенные правила цепочки INPUT, нам должны потребоваться Отклоненные запросы настраиваются в правилах. Грубо говоря, это механизм «черного списка». По умолчанию все могут пройти, и только назначенные люди не могут пройти. Когда мы устанавливаем действие по умолчанию для цепочки INPUT на ACCEPT, это означает, что все проходят Если вы можете пройти эту контрольную точку, вы должны указать запрос, который необходимо отклонить, в определенных правилах, что означает, что только назначенные люди не могут пройти контрольную точку. Это механизм черного списка. но , Вы, должно быть, обнаружили, что большинство правил, показанных на рисунке выше, являются запросами на прием (ACCEPT), а не с мнимыми запросами на отклонение (DROP или REJECT), что несовместимо с описанным нами механизмом черного списка. По причине, действие по умолчанию — это принятие, и человек, которого нужно отклонить, должен быть настроен в определенных правилах, но это не так на картинке выше.Ситуация на картинке выше связана с работающим механизмом IPTABLES. В приведенном выше примере эти «механизмы» фактически используются для завершения так называемого механизма «белого списка». Это не тот механизм «черного списка», который мы описали. На данный момент нам не нужно обращать внимание на этот момент. Мы дадим подробные примеры и объясним позже. , Здесь нам нужно только понять, что действие, соответствующее политике, является действием цепочки по умолчанию, или, другими словами, нам нужно только понять, что политика является политикой цепочки по умолчанию.

packetsУказывает количество пакетов, соответствующих политике по умолчанию для текущей цепочки (цепочка INPUT в приведенном выше примере). 0 пакетов означает, что политика по умолчанию соответствует 0 пакетам.
bytesПредставляет общий размер всех пакетов, соответствующих политике по умолчанию текущей цепочки.

Фактически, мы можем называть пакеты и байты «счетчиками». Счетчик на приведенном выше рисунке записывает количество и общий размер пакетов, соответствующих политике по умолчанию. «Счетчик» будет отображаться только при использовании параметра -v.
Когда совпавший пакет достигает определенного числа, счетчик автоматически преобразует размер совпадающего пакета в единицы с более высокой читаемостью, как показано на рисунке ниже.
Если вы хотите просмотреть точное значение счетчика, а не значение счетчика, оптимизированное для удобочитаемости, вы можете использовать параметр -x для отображения точного значения счетчика, как показано ниже.
Каждая цепочка в каждой таблице имеет свой собственный счетчик, и каждое правило в цепочке имеет свой собственный счетчик.Да, это информация поля pkts и поля байтов, соответствующих каждому правилу.

Раздел команд

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

Просмотреть все правила соответствующей таблицы. Параметр -t указывает таблицу, с которой нужно работать. Если опущено «-t имя таблицы», по умолчанию используется таблица фильтров, -L означает вывод списка правил, то есть просмотр правил, -v для отображения дополнительной информации, — n Не меняйте имя адреса, а отображайте IP-адрес напрямую. —line-numbers или —line, отобразить порядковый номер правила. Информация в счетчике -x отображается как точное значение счетчика, а не как читаемое и оптимизированное значение счетчика. Если указанное правило цепочки отображается, добавьте имя цепочки в конце.

Читайте так же:
Как платить субсидию если есть счетчики

iptalbes -t nat -nvL
iptables -t nat -nvL INPUT

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

В данной статье мы рассмотрим как посмотреть правила iptables с помощью команды iptables -L, а также основные её опции и параметры. Данная команда выводит в командную оболочку bash в структурированном виде все цепочки правил firewall Netfilter. Информация предоставляется для изучения уже настроенных возможностей межсетевого экрана и последующей их модификации с помощью других команд. Таблицы правил выводятся в текстовом режиме.

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

Как посмотреть правила iptables

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

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

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

Для протокола IPv4:

sudo iptables -L

Для протокола IPv6:

sudo ip6tables -L

В дальнейшем рассмотрим только вариант для протокола IPv4, вариант для протокола IPv6 использует такой же синтаксис.

Выводимая на экран информация разбита на столбцы и строки. У каждого столбца свое наименование. С помощью дополнительных параметров команды sudo iptables -L можно добавлять дополнительные столбцы в выводимой таблице правил iptables. Рассмотрим название столбцов в стандартном выводе sudo iptables -L:

  • target – выполняемое действие с пакетом при соответствии его данному правилу
  • prot – протокол передачи данных, при котором применяется данное правило
  • opt – дополнительные опции для правила
  • source – IP адрес, подсеть, домен узла источника пакета, попадающего под выполнение данного правила
  • destination – IP адрес, подсеть, домен узла назначения пакета, попадающего под выполнение данного правила

1. Список правил из цепочки

Команда чтобы вывести на экран конкретную цепочку правил выглядит следующим образом:

sudo iptables [ -L имя цепочки ]

Например просмотр правил iptables из цепочки OUTPUT:

sudo iptables -L OUTPUT

2. Список правил из таблицы

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

sudo iptables [ -t имя таблицы ] [ -L имя цепочки ]

sudo iptables -t nat -L OUTPUT

Вот список всех таблиц правил iptables:

  • filter – таблица по умолчанию. Используется для фильтрации пакетов. Содержится в цепочках INPUT, FORWARD, OUTPUT
  • raw – используется редко. Пакет проверяется на соответствие условиям данной таблицы до передачи системе определения состояний (conntrack), например, для того, чтобы не обрабатываться с помощью данной системы (действие NOTRACK). Система определения состояний позволяет фильтровать пакеты на уровне взаимодействия сеансов приложений. То есть фильтрует пакеты по сеансу связи – новый сеанс связи (NEW), уже установленный сеанс связи (ESTABLISHED), дополнительный сеанс связи к уже существующему (RELATED). Данная система позволяет реализовать высокоуровневый межсетевой экран, который вместо работы с пакетами работает с сеансами связи в рамках приложений. Содержится в цепочках PREROUTING и OUTPUT.
  • mangle – содержит правила модификации обрабатываемых IP-пакетов. Например, изменение полей заголовков IP-пакетов, содержащих служебную информацию. Используется редко. Содержится в цепочках PREROUTING, INPUT, FORWARD, OUTPUT,
  • nat – предназначена для подмены адреса отправителя или получателя. Данная таблица применяется только к первому пакету из потока протокола передачи данных по сети, к остальным пакетам потока пакетов выбранное действие применяется далее автоматически. Таблицу используют, например, для трансляции адресов отправителя и получателя, для маскировки адресов отправителя или получателя. Это делается в основном в двух случаях. Первый – когда необходимо организовать доступ к сети Интернет нескольким компьютерам, расположенным за данным компьютером. Второй – когда необходимо спрятать (замаскировать) в целях безопасности отправителя или получателя информации, передаваемой по сети Интернет. Содержится в цепочках PREROUTING, OUTPUT, POSTROUTING.

3. Номера правил в iptables

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

sudo iptables [ -t таблица ] [ -L имя_цепочки ] —line-numbers -n

sudo iptables -t filter -L —line-numbers -n

4. Просмотр правил со статистикой пакетов

Чтобы посмотреть таблицу правил со счетчиком переданного (полученного) количества байтов (bytes) и пакетов (pkts) используется следующая команда:

sudo iptables [ -t таблица ] [ -L имя цепочки ] -n -v

sudo iptables -t filter -L -n -v

Выводы

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

голоса
Рейтинг статьи
Ссылка на основную публикацию