iptables

Ubuntu Iptables Как управлять сетевым трафиком с помощью iptables?

Ubuntu Iptables Как управлять сетевым трафиком с помощью iptables?
«… А служебная программа Unix в пространстве пользователя, которая дает системным администраторам возможность настраивать правила фильтрации IP-пакетов, реализуемые модулем сетевого фильтра ядра.” Iptables действует как брандмауэр, используя правила фильтрации пакетов на основе различных критериев, таких как IP-адрес, порт и протоколы.

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

Iptables предустановлены в Ubuntu и большинстве дистрибутивов на основе Debian. Ubuntu также включает в себя брандмауэр GUFW, графическую альтернативу, которую вы можете использовать для работы с iptables.

ПРИМЕЧАНИЕ: Для использования и настройки iptables вам потребуются права sudo в вашей системе. Вы можете узнать больше о sudo из следующего руководства.

Теперь, когда вы знаете, что такое Iptables, давайте сразу погрузимся в!

Как использовать iptables для управления трафиком IPv4?

Чтобы использовать Iptables для управления сетью IPv4 и трафиком, вам необходимо понимать следующее:

Команда Iptables

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

ПРИМЕЧАНИЕ: Вы можете настроить набор правил, которые управляют определенным подмножеством, известным как цепочки iptables.

Параметры iptables

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

Рассмотрим команду ниже:

sudo iptables -I INPUT -s 192.168.0.24 -j КАПЕЛЬ

Приведенная выше команда сообщает iptables создать правило в цепочке. Правило отбрасывает все пакеты с IP-адреса 192.168.0.24.

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

Iptables предлагает набор параметров, которые можно использовать для настройки различных правил. Различные параметры, которые вы можете использовать для настройки правил iptables, включают:

Параметр правила iptables Описание
-s -источник Укажите источник, который может быть адресом, именем хоста или именем сети.
-p -протокол Задает протокол подключения; например TCP, UDP и т. д.
-d -направление Указывает пункт назначения, который может быть адресом, сетевым именем или именем хоста.
-j-прыжок Устанавливает действие, которое iptables должен выполнить после нахождения пакета.
-o -out-интерфейс Устанавливает интерфейс, через который iptable отправляет пакет.
-i -in-интерфейс Устанавливает интерфейс, используемый для установки сетевых пакетов.
-c-набор-счетчики Позволяет администратору устанавливать счетчики байтов и пакетов для указанного правила.
-g-goto цепь Параметр указывает, что обработка должна продолжаться в заданной пользователем цепочке после возврата.
-f -фрагмент Указывает iptables применять правило только ко второму и последующим фрагментам фрагментированных пакетов.

Параметры Iptables

Команда iptables поддерживает широкий спектр параметров. Вот некоторые из распространенных:

Вариант Описание
-A -приложение Добавляет правило в конец указанной цепочки
-D-удалить Удаляет правило из указанной цепочки
-F-промывка Удаляет все правила по одному
-L-список Показывает все правила в указанной цепочке
-I -вставить Вставляет правило в указанную цепочку (передается как число, если номер не указан; правило добавляется вверху)
-C - проверка Запросы на соответствие правилу; требование в указанном правиле
-v - многословный Отображает более подробную информацию при использовании с параметром -L
-N -новая цепь Добавляет новую определяемую пользователем цепочку
-X-удалить-цепочку Удаляет конкретную определенную пользователем цепочку

Таблицы iptables

Ядро Linux имеет таблицы по умолчанию, в которых хранится набор связанных правил. Эти таблицы по умолчанию имеют набор цепочек по умолчанию, но пользователи могут настраивать правила, добавляя определенные пользователем правила.

ПРИМЕЧАНИЕ: Таблицы по умолчанию будут сильно зависеть от конфигурации вашего ядра и установленных модулей.

Вот таблицы iptables по умолчанию:

1. Таблицы фильтров

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

Цепь Описание
Вход Iptables использует эту цепочку для любых входящих в систему пакетов, я.е., пакеты, идущие в сокеты локальной сети.
Выход Iptables использует выходную цепочку для локально сгенерированных пакетов, i.е., пакеты, выходящие из системы.
Вперед Эта цепочка используется Iptables для пакетов, маршрутизируемых или пересылаемых через систему.

2: Таблицы NAT

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

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

Таблица NAT используется, когда пакет инициирует новое соединение.

Iptables имеет таблицу по умолчанию для адресации NAT. Эта таблица состоит из трех основных цепочек:

Цепь Описание
ПЕРЕДАЧА Позволяет изменять информацию о пакете до прибытия в цепочку INPUT, используемую для входящих пакетов
ВЫХОД Зарезервировано для пакетов, созданных локально, я.е., до того, как произойдет сетевая маршрутизация
РАЗМЕЩЕНИЕ Позволяет изменять исходящие пакеты - пакеты, покидающие цепочку OUTPUT

На диаграмме ниже показан общий обзор этого процесса.

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

iptables -t нат -n -v -L

3. Таблицы Mangle

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

Таблица содержит следующие цепочки по умолчанию:

Цепь Описание
ПЕРЕДАЧА Зарезервировано для входящих пакетов
РАЗМЕЩЕНИЕ Используется для исходящих пакетов
ВХОД Используется для пакетов, поступающих непосредственно на сервер
ВЫХОД Используется для локальных пакетов
Вперед Зарезервировано для пакетов, маршрутизируемых через систему

4. Необработанные таблицы

Основная цель необработанной таблицы - настроить исключения для пакетов, не предназначенных для обработки системой отслеживания. Необработанная таблица устанавливает отметку NOTRACK на пакетах, предлагая функции conntrack игнорировать пакет.

Conntrack - это сетевая функция ядра Linux, которая позволяет ядру Linux отслеживать все сетевые соединения, позволяя ядру идентифицировать пакеты, составляющие сетевой поток.

Необработанная таблица состоит из двух основных цепочек:

Цепь Описание
ПЕРЕДАЧА Зарезервировано для пакетов, полученных сетевыми интерфейсами
ВЫХОД Зарезервировано для пакетов, инициированных локальными процессами

5: Таблица безопасности

Основное использование этой таблицы - установка внутреннего механизма безопасности Security Enhancement for Linux (SELinux), который маркирует пакеты. Знак безопасности может быть применен к каждому соединению или пакету.

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

Цепь Описание
ВХОД Зарезервировано для входящих пакетов в систему
ВЫХОД Используется для пакетов, созданных локально
ВПЕРЕД Используется для пакетов, маршрутизируемых через систему

Посмотрев на стандартные Iptables, давайте сделаем еще один шаг и обсудим, как работать с правилами iptables.

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

Правила iptables применяются в порядке возрастания. Это означает, что первое правило в конкретном наборе применяется первым, за ним следует второе, затем третье и так далее, до последнего.

Из-за этой функции iptables не позволяет добавлять правила в набор с помощью параметра -A; вы должны использовать -I, за которым следует число или, опустив его, чтобы добавить в начало списка.

Отображение Iptables

Чтобы просмотреть свои iptables, используйте команду iptables -L -v для IPv4 и ip6tables -L -v для IPv6.

Вставка правил

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

sudo iptables -L -v

Например, чтобы вставить правило, разрешающее входящие подключения к порту 9001 через TCP, нам нужно указать номер правила для цепочки INPUT, придерживаясь правил трафика для Интернета.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPT

После просмотра текущих iptables вы должны увидеть новое правило в наборе.

sudo iptables -L -v

Замена правил

Функция замены работает аналогично вставке, однако использует команду iptables -R. Например, чтобы изменить указанное выше правило и настроить порт 9001 на запрет, мы:

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECT

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

Для удаления правила передаем номер правила. Например, чтобы удалить указанное выше правило, мы можем указать как:

sudo iptables -D ВХОД 1

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

Давайте рассмотрим, как настроить iptables:

Как настроить iptables?

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

Блокировка и разрешение трафика по портам

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

sudo iptables -A INPUT -j ACCEPT -p TCP --destination-port 1001 -i wlan0

Приведенные выше команды разрешают трафик на порт 1001 TCP на интерфейсе wlan0.

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

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

Вот подробный анализ команды:

ПРИМЕЧАНИЕ: Iptables не понимает псевдонимы сетевых интерфейсов. Таким образом, в системе с более чем одним виртуальным интерфейсом вам нужно будет указать адрес назначения вручную и явно.

Например:

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24

Внесение IP-адресов в белый и черный список

Вы можете создавать правила брандмауэра с помощью iptables. Одним из примеров является остановка всего трафика и разрешение сетевого трафика только с явных IP-адресов.

Пример:

iptables -A INPUT -m state --state УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ
iptables -A INPUT -i lo -m comment --comment «Разрешить петлевые соединения» -j ACCEPT
iptables -A INPUT -p icmp -m comment --comment «Разрешить Ping работать должным образом» -j

ПРИНИМАТЬ

iptables -A INPUT -s 192.168.0.1/24 -j ПРИНЯТЬ
iptables -A INPUT -s 192.168.0.0 -j ПРИНЯТЬ
iptables -P ПАДЕНИЕ ВВОДА
iptables -P FORWARD DROP

Первая строка устанавливает правило, разрешающее всем исходным IP-адресам в 192.168.0.1/24 подсети. Вы также можете использовать CIDR или отдельные IP-адреса. В следующей команде мы устанавливаем правило, разрешающее весь трафик, подключенный к существующим соединениям. В последних командах мы устанавливаем политику для INPUT и FORWARD, чтобы удалить все.

Использование iptables на IPv6

Команда iptables работает только на IPv4. Чтобы использовать iptables на IPv6, вы должны использовать команду ip6tables. Ip6tables использует таблицы raw, filter, security и mangle. Общий синтаксис ip6tables аналогичен iptables, а также поддерживает соответствующие параметры iptables, такие как добавление, удаление и т. Д.

Для получения дополнительной информации рассмотрите возможность использования страниц руководства ip6tables.

Пример наборов правил iptables для сетевой безопасности

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

1: разрешить интерфейсный трафик обратной петли и отклонить все петли, исходящие от других интерфейсов

iptables -A INPUT -i lo -j ACCEPT (вы также можете использовать ip6tables)
iptables -A ВВОД ! -я ниже 127.0.0.0 -j REJECT (также применимы ip6tables)

2: отклонить все запросы ping

iptables -A INPUT -p icmp -m state --state NEW --icmp-type 8 -j REJECT

3. Разрешить подключения по SSH

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

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

ОСТОРОЖНОСТЬ: Если вы предпочитаете полностью отключить IPv6, обязательно раскомментируйте строку, так как это замедлит процесс обновления:

приоритет :: ffff: 0: 0/96 100 найдено в / etc / gai.conf .

Это потому, что диспетчер пакетов APT разрешает зеркальный домен в IPv6 из-за обновления apt-get.

Как развернуть правила iptables?

Чтобы развернуть iptables в Ubuntu или других системах на базе Debian, начните с создания двух файлов, ip4 и ip6, для их соответствующих IP-адресов.

В любом файле добавьте правила, которые вы хотите применить в соответствующих файлах: правила IPv4 в файл ip4 и правила IPv6 в файл ip6.

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

sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)

Затем вы можете проверить, применяются ли правила, с помощью команды:

sudo iptables -L -v

Краткое руководство по iptables-persistent

Ubuntu и распространенные дистрибутивы на основе Debian поставляются с пакетом iptables-persistent, который позволяет легко применять правила брандмауэра после перезагрузки. Пакет предоставляет файлы, которые вы можете использовать для установки правил для IPv4 или IPv6, и могут применяться автоматически при загрузке.

Вы также можете использовать правила брандмауэра с помощью UFW или GUFW. Прочтите следующий учебник, чтобы узнать, как использовать UFW.

Как установить iptables-persistent?

Убедитесь, что в вашей системе установлен iptables-persistent. Используйте dpkg, чтобы проверить, установлен ли у вас пакет.

Если нет, используйте следующую команду:

sudo apt-get install iptables-persistent

Вам будет дважды предложено сохранить текущие правила IPv4 и IPv6. Нажмите Да, чтобы сохранить оба правила.

Нажмите Да, чтобы сохранить IPv6.

После завершения установки убедитесь, что у вас есть подкаталог iptables, как показано на изображении ниже.

Теперь вы можете использовать правила.v4 и правила.v6 для добавления правил iptables, и они будут автоматически применяться iptables-persistent. Файлы представляют собой простые текстовые файлы, которые вы можете легко редактировать с помощью любого текстового редактора по вашему выбору.

Заключение

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

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

Как изменить указатель мыши и размер курсора, цвет и схему в Windows 10
Указатель мыши и курсор в Windows 10 - очень важные аспекты операционной системы. То же самое можно сказать и о других операционных системах, так что,...
Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...
Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...