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

Руководство для начинающих по командам IPTables (межсетевой экран Linux)


Если вы какое-то время пользуетесь компьютерами, вам должно быть знакомо слово «Брандмауэр». Мы знаем, что на первый взгляд все кажется сложным, но в этом уроке мы собираемся объяснить основу IPTable и использование основных команд, чтобы даже если вы изучаете сетевые технологии или хотите глубоко погрузитесь в сети, вы можете получить пользу от этого руководства.

Что такое IPTables?

Принцип работы Брандмауэра довольно прост. Это создает барьер между надежными и ненадежными сетями, поэтому ваша система может быть защищена от вредоносных пакетов.

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

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

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

Понимание концепции IPTables

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

Итак, начнем с Таблиц.

Таблицы в IPTables

В IPTables существует 5 типов таблиц, к каждому из которых применяются разные правила. Итак, начнем с самой распространенной таблицы «Filer».

  1. Таблица фильтров – это основная таблица по умолчанию при использовании IPTables. Это означает, что всякий раз, когда вы не будете упоминать какую-либо конкретную таблицу при применении правил, они будут применяться к таблице фильтров. Как следует из названия, роль таблицы фильтров заключается в том, чтобы решить, следует ли разрешить пакетам достичь места назначения или отклонить их запрос.
  2. NAT (трансляция сетевых адресов). Как следует из названия, эта таблица позволяет пользователям определять преобразование сетевых адресов. Роль этой таблицы — определить, следует ли изменять и как изменять источник и место назначения адреса пакета.
  3. Таблица преобразования – эта таблица позволяет нам изменять IP-заголовки пакетов. Например, вы можете настроить TTL, чтобы удлинить или сократить сетевые переходы, которые может выдержать пакет. Аналогично, другие заголовки IP также могут быть изменены в соответствии с вашими предпочтениями.
  4. Таблица RAW. Основное назначение этой таблицы — отслеживание соединений, поскольку она обеспечивает механизм маркировки пакетов для просмотра пакетов как части текущего сеанса.
  5. Таблица безопасности. Используя таблицу безопасности, пользователи могут применять внутренние метки контекста безопасности SELinux к сетевым пакетам.

В большинстве случаев последние два типа (RAW и Безопасность) таблицы не требуют особого внимания, и только первые три параметра считаются основными таблицами. .

Теперь поговорим о Цепочках.

Цепочки в IPTables

Они ведут себя в тех точках маршрута сети, где мы можем применять правила. В IPTables мы 5 типов цепочек и обсудим каждую из них. Имейте в виду, что не каждый тип цепочки доступен для каждого типа таблицы.

  1. Предварительная маршрутизация. Эта цепочка применяется к любому входящему пакету после его поступления в сетевой стек, и эта цепочка обрабатывается еще до того, как будет принято какое-либо решение о маршрутизации относительно конечного пункта назначения пакета.
  2. Входная цепочка – это точка, в которой пакет попадает в сетевой стек.
  3. Цепочка пересылки – это точка, в которой пакет был перенаправлен через вашу систему.
  4. Цепочка вывода. Цепочка вывода применяется к пакету, когда он исходит из вашей системы и выходит.
  5. Пост-маршрутизация – это полная противоположность цепочке предварительной маршрутизации, которая применяется к пересылаемым или исходящим пакетам после принятия решения о маршрутизации.

Теперь осталось обсудить только правила, и это самое простое из трех, которые мы здесь обсуждали. Итак, завершаем то, что осталось по теоретической части.

Правила в IPTables

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

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

Каждое правило состоит из двух компонентов: соответствующий компонент и целевой компонент.

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

Это была часть объяснения, а теперь мы рассмотрим основные команды, связанные с IPTables в Linux.

Установка межсетевого экрана IPTables в Linux

В современных дистрибутивах Linux, таких как Pop!_OS, IPTables предустановлен, но если в вашей системе отсутствует пакет IPTables, вы можете легко установить его, следуя инструкциям:

Чтобы установить IPTables в дистрибутивах Linux на основе RHEL, таких как Rocky Linux, AlmaLinux и CentOS Stream, используйте следующую команду dnf.

sudo dnf install iptables-services

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

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Чтобы установить IPTables в дистрибутивах Linux на базе Debian, используйте следующую команду apt.

sudo apt install iptables

После установки IPTables вы можете включить брандмауэр с помощью следующих команд:

sudo systemctl enable iptables
sudo systemctl start iptables

Чтобы отслеживать состояние службы IPTable, вы можете использовать данную команду:

sudo systemctl status iptables

Изучите основы команды IPTables в Linux

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

Основной синтаксис IPTables следующий:

iptables -t {type of table} -options {chain points} {condition or matching component} {action}

Давайте разберемся в объяснении приведенной выше команды:

Стол

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

Варианты цепочки

Вторая часть предназначена для цепочки. Здесь вы можете выбрать один из различных вариантов точек цепочки, и эти параметры приведены ниже:

  • -A — добавляет новое правило в цепочку в конце цепочки.
  • -C — проверяет правило, удовлетворяет ли оно требованиям цепочки.
  • -D — позволяет пользователям удалять существующее правило из цепочки.
  • -F — это удалит каждое правило, определенное пользователем.
  • -I — позволяет пользователям добавлять новое правило в указанную позицию.
  • -N — создает совершенно новую цепочку.
  • -v — при использовании с опцией списка выводит подробную информацию.
  • -X – Удаляет цепочку.

Соответствующий компонент

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

Protocols -p
Source IP -s
Destination IP -d
IN interface -i
OUT interface -o

Для TCP они следующие:

-sport
-dport
--tcp-flags

Компонент действия

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

Наиболее часто используемое действие — Jump (-j), которое даст нам несколько вариантов, таких как:

  • ACCEPT – используется для приема пакетов и завершения прохождения.
  • DROP – используется для отбрасывания пакетов и завершения прохождения.
  • REJECT – это очень похоже на DROP, но отправляет отклоненные пакеты источнику.
  • RETURN – это остановит перемещение пакета в подцепи и отправит конкретный пакет в вышестоящую цепочку без какого-либо эффекта.

Закончив с синтаксисом, мы покажем вам, как можно использовать IPTables, включая базовую настройку.

Перечисление текущего набора правил IPTables

Если вы хотите проверить, что проходит через ваш Брандмауэр по умолчанию, идеальным способом будет указание текущего набора правил. Чтобы просмотреть примененные правила, используйте данную команду:

sudo iptables -L

Разрешить/запретить сетевой трафик на определенных портах

В этом разделе мы покажем вам, как можно разрешить или запретить сетевой трафик для определенных портов. Мы покажем вам некоторые известные порты, поскольку хотим быть максимально полезными.
Если вы хотите разрешить сетевой трафик HTTPS, нам придется разрешить порт № 443, используя данную команду:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Аналогичным образом вы также можете отключить веб-трафик HTTP с помощью данной команды:

sudo iptables -A INPUT -p tcp --dport 80 -j REJECT

Пояснение используемых опций команды:

  • -p используется для проверки указанного протокола, в нашем случае это TCP.
  • --dport используется для указания порта назначения.
  • -j используется для выполнения действия (принятия или удаления).

Управление трафиком с помощью IP-адреса

Да, вы также можете управлять сетевым трафиком с IP-адреса. Не только один или два, но и контролировать диапазон IP-адресов, и мы покажем вам, как это сделать.

Чтобы разрешить определенный IP-адрес, используйте данную структуру команд:

sudo iptables -A INPUT -s 69.63.176.13 -j ACCEPT

Аналогично, чтобы отбрасывать пакеты с определенного IP-адреса, вам необходимо использовать данную структуру команд:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Если вы хотите, вы также можете управлять диапазоном IP-адресов, используя данную структуру команд:

sudo iptables -A INPUT -m range --src-range 192.168.0.1-192.168.0.255 -j REJECT

Удалить пользовательское правило

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

Чтобы перечислить определенные правила с номерами, используйте данную команду:

sudo iptables -L --line-numbers

Чтобы удалить правила, нам нужно будет следовать данной структуре команд:

sudo iptables -D <INPUT/FORWARD/OUTPUT> <Number>

Предположим, я хочу удалить 10-е правило из INPUT, поэтому буду использовать данную команду:

sudo iptables -D INPUT 10

Чтобы перепроверить, успешно ли мы удалили правило, нам нужно перечислить правила с помощью данной команды:

sudo iptables -L –line-numbers

Как видите, мы успешно удалили 10-е правило.

Сохранение определенных правил IPTables

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

Чтобы сохранить правила в дистрибутивах на основе RHEL:

sudo /sbin/service iptables save

Чтобы сохранить правила в производных Debian:

sudo /sbin/iptables–save

Чтобы узнать больше о правилах IPtable Firewall, ознакомьтесь с нашим подробным руководством по адресу:

  • 25 полезных правил брандмауэра IPtable, которые должен знать каждый администратор Linux

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