Поиск по сайту:

Как работает межсетевой экран Iptables


Введение

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

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

В этом руководстве вы узнаете, как работает Iptables. Для более глубокого подхода вы можете прочитать Глубокое погружение в архитектуру Iptables и Netfilter.

Как работает Iptables

Во-первых, давайте рассмотрим некоторую терминологию и обсудим, как работает iptables.

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

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

Когда определенный шаблон совпадает, происходящее действие называется целью. Целью может быть окончательное решение политики для пакета, например ACCEPT или DROP. Он также может переместить пакет в другую цепочку для обработки или зарегистрировать встречу. Есть много вариантов.

Эти правила организованы в группы, называемые цепочками. Цепочка — это набор правил, по которым последовательно проверяется пакет. Когда пакет соответствует одному из правил, он выполняет соответствующее действие и пропускает остальные правила в цепочке.

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

  • INPUT: эта цепочка обрабатывает все пакеты, адресованные вашему серверу.
  • ВЫВОД. Эта цепочка содержит правила для трафика, созданные вашим сервером.
  • ВПЕРЕД: Эта цепочка используется для обработки трафика, предназначенного для других серверов, которые не созданы на вашем сервере. Эта цепочка позволяет настроить ваш сервер для маршрутизации запросов на другие машины.

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

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

IPv4 против IPv6

Брандмауэр netfilter, включенный в ядро Linux, полностью разделяет трафик IPv4 и IPv6. Инструменты Iptables, используемые для управления таблицами, содержащими наборы правил брандмауэра, также различаются. Если на вашем сервере включен IPv6, вам придется настроить обе таблицы для адресации трафика на вашем сервере.

Примечание. Nftables, преемник Iptables, более тесно интегрирует обработку IPv4 и IPv6. Команду iptables-translate можно использовать для переноса правил Iptables в Nftables.

Обычная команда iptables используется для управления таблицей, содержащей правила, управляющие трафиком IPv4. Для трафика IPv6 используется сопутствующая команда под названием ip6tables. Любые правила, которые вы устанавливаете с помощью iptables, будут влиять только на пакеты, использующие адресацию IPv4, но синтаксис между этими командами тот же. Команда iptables создаст правила, применимые к трафику IPv4, а команда ip6tables создаст правила, применимые к трафику IPv6. Не забудьте использовать IPv6-адреса вашего сервера для создания правил ip6tables.

О чем следует помнить

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

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

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

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

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

Заключение

На этом этапе вы готовы реализовать свой собственный брандмауэр. Для этого вам следует прочитать Облачные брандмауэры DigitalOcean.