В этом руководстве будет рассказано, как настроить и использовать правила 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.
- Далее идет аргумент -I, используемый для вставки. Аргумент вставки добавляет правило в начало цепочки iptables и, таким образом, получает более высокий приоритет. Чтобы добавить правило по определенному номеру в цепочке, используйте аргумент -I, за которым следует номер, по которому правило должно быть назначено.
- Аргумент -s помогает указать источник. Следовательно, мы используем аргумент -s, за которым следует IP-адрес.
- Параметр -j с iptables указывает переход к определенной цели. Эта опция устанавливает действие, которое Iptables будет выполнять, когда найдется соответствующий пакет. По умолчанию Iptables предлагает четыре основных цели, в том числе: ACCEPT, DROP, LOG и REJECT.
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 -L3. Таблицы 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.
Вот подробный анализ команды:
- Первый аргумент (-A) добавляет новое правило в конец цепочки таблиц.
- Аргумент INPUT добавляет указанное правило в таблицу.
- Аргумент DROP устанавливает действие, которое будет выполнено, как ACCEPT и DROP, соответственно. Это означает, что как только пакет соответствует, он отбрасывается.
- -p определяет протокол, такой как TCP, и разрешает передачу трафика по другим протоколам.
- -порт назначения устанавливает правило для приема или отбрасывания всего трафика, предназначенного для порта 1001.
- -я
сообщает iptables применить правило к трафику, поступающему через интерфейс 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 REJECT3. Разрешить подключения по 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 для создания правил брандмауэра, которые помогают защитить вашу систему.