nftables - это современная система фильтрации пакетов для Linux, которая заменяет iptables. Он предлагает унифицированный и более эффективный способ управления правилами межсетевого экрана в различных протоколах, таких как IPv4, IPv6 и ARP. nftables обеспечивает улучшенную производительность и упрощенную конфигурацию. В отличие от iptables, которые используют отдельные таблицы для IPv4, IPv6, ARP и необработанных пакетов, nftables объединяет их под единым интерфейсом.
В этой статье объясняется, как установить и настроить nftables на Ubuntu 24.04. Вы будете устанавливать основные правила брандмауэра, управлять сетевым трафиком и внедрять общие политики безопасности.
Предпосылки
- Сервер с Ubuntu 24.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo
Конвенции
|
|
Обновите систему
Свежая установка Ubuntu 24.04 требует обновления пакетов до последних доступных версий.
|
|
Установите nftables
Выполните следующие действия для установки nftables в зависимости от дистрибутива Linux.
|
|
Командный синтаксис nft
|
|
- -n: Показать номера правил на выходе.
- -N: Печать более подробного вывода для правил.
- -s: Показать статистику для правил.
- -c: Показать название цепи для каждого правила.
- -a: Распечатать правило с его адресной семьей и протоколом.
- -e: Расширить детали правил.
- -S: Распечатать свод правил (конфигурация).
- -u: Включить режим обновления для динамических изменений.
- -p: Распечатать текущий свод правил в формате притчи.
- -y: Показать подробные типы объектов.
- -j: Выход в формате JSON.
- -t: Показать выход в формате таблицы.
- -T: Показать токенизированный выход.
- -I: Используйте указанный каталог для конфигурационных файлов.
- -f: имя файла: Правила загрузки из файла.
- -i: Интерактивный режим для прямого изменения правил.
- cmd …: Управляйте аргументами, чтобы манипулировать правилами nftables.
Управление системой nftables
Сервис nftables управляет вашими правилами брандмауэра и обеспечивает устойчивость при перезагрузке системы. Следуйте этим шагам, чтобы включить и запустить сервис nftables в вашей системе.
- Включите сервис nftables, чтобы начать с загрузки.
|
|
- Запустите сервис nftables.
|
|
- Проверьте статус сервиса.
|
|
Ваш результат должен быть похож на тот, который ниже:
|
|
Таблицы, цепи и политика в nftables
В nftables правила организованы в таблицы, которые содержат цепочки, определяющие, как обрабатывается трафик. Каждая цепь связана с крюком (INPUT, OUTPUT, FORWARD), который определяет, когда она оценивается. Цепи также имеют политики, которые определяют действие по умолчанию, когда нет явного правила, соответствующего пакету.
nftables поддерживает несколько семейств адресов для обработки различных сетевых протоколов:
- inet: Унифицированная обработка для IPv4 и IPv6.
- ip: Фильтрация только по IPv4.
- ip6: Фильтрация только по IPv6.
- arp: Фильтрация пакетов ARP.
- bridge: Ethernet фильтрация пакетов.
- netdev: Фильтрация пакетов на уровне сетевого устройства.
Chain Hooks
Каждая цепочка в nftables связана с определенным типом трафика:
- input: Пакеты управления, предназначенные для локальной машины.
- output: Управляет пакетами, покидающими машину.
- forward: Обрабатывает пакеты, маршрутизируемые через машину.
Политика
Политика относится к действию по умолчанию, предпринятому цепочкой, когда явное правило не соответствует пакету. Политика по умолчанию для цепочки определяет, принимается ли трафик, отбрасывается или отклоняется, когда он не соответствует каким-либо конкретным правилам.
- policy accept: Позволяет весь трафик по умолчанию (полезно для тестирования или начальных конфигураций).
- policy drop: Отбрасывает непревзойденные пакеты (наиболее безопасные, обычно используемые в производственных средах).
- policy reject: Отправляет уведомление об отказе источнику (информативное, но выявляет наличие сервера, что может быть не идеально для безопасности).
Предупреждение: Использование принятой политики по умолчанию не рекомендуется для производственных сред, поскольку она позволяет весь трафик, если он явно не заблокирован.
Управление Default nftables конфигурация
Выполните шаги ниже, чтобы изучить конфигурации по умолчанию на вашем сервере.
- Посмотрите список существующих правил nftables.
|
|
Ваш результат должен быть похож на тот, который ниже:
|
|
Посмотреть файл конфигурации nftables по умолчанию.
|
|
Ваш результат должен быть похож на тот, который ниже:
|
|
Конфигурация Basic nftables Правила Firewall
Выполните следующие действия для настройки и управления правилами nftables для управления сетевым трафиком.
Создание начальной таблицы и цепей
- Создайте новую таблицу брандмауэра для трафика IPv4 и IPv6.
|
|
Приведенная выше команда создает новую таблицу под названием my_table
, которая может обрабатывать как пакеты IPv4, так и IPv6. Пожалуйста, замените my_table
своим предпочтительным названием таблицы. Семейство inet
позволяет управлять обоими протоколами с помощью одного набора правил.
Примечание: В этой статье используется название
my_table
. Пожалуйста, заменитеmy_table
своим предпочтительным названием таблицы.
- Добавьте цепочку ввода с политикой принятия по умолчанию.
|
|
Вышеприведенная команда создает цепочку фильтрации, которая применяется к входящему трафику. Вариант type filter
определяет его как цепочку фильтрации, в то время как hook input
гарантирует, что он обрабатывает входящие пакеты. Установка priority 0
определяет порядок выполнения, причем сначала запускаются более низкие значения.
- Создайте прямую цепочку с политикой принятия по умолчанию.
|
|
Вышеприведенная команда создает цепочку фильтрации, которая применяется к пересылаемому трафику. Вариант type filter
определяет его как цепочку фильтрации, в то время как hook forward
гарантирует, что он обрабатывает пересылаемые пакеты. Установка priority 0
определяет порядок выполнения, причем сначала запускаются более низкие значения.
- Разрешить установленные соединения для поддержания существующих коммуникаций.
|
|
Это правило использует отслеживание соединений для управления трафиком. Опция ct state
позволяет отслеживать соединение, в то время как established
позволяет пакеты из существующих. соединений.
Добавить, перечислить и удалить правила
Выполните следующие действия, чтобы добавить, перечислить и удалить правила nftables
для управления доступом к сети.
- Добавить правило для блокировки входящего трафика с определенного IP-адреса:
|
|
Вышеприведенная команда добавляет в таблицу my_table
правило, блокирующее входящий трафик с IP-адреса 192.0.2.10
. Правило применяется к input
цепи в семействе inet
.
- Просмотр всех активных правил
nftables
для проверки конфигурации.
|
|
Вышеприведенная команда перечисляет все действующие правила nftables
для проверки ваших конфигураций.
- Перечислите правила с номерами.
|
|
Вышеприведенная команда перечисляет правила в цепочке input
таблицы my_table
, поэтому вы можете ссылаться на конкретное правило удаления.
Ваш результат должен быть похож на тот, который ниже:
|
|
- Определите номер с output и удалите соответствующее правило.
|
|
Вышеприведенная команда удаляет правило с номером 0
из цепочки input
таблицы my_table
.
Внедрение основных правил безопасности
- Предоставьте SSH доступ к вашему серверу.
|
|
Вышеприведенная команда добавляет правило, которое соответствует пакетам протокола TCP
и целям порта 22
назначения (порт SSH по умолчанию). Он принимает пакеты, позволяющие подключаться к SSH.
- Блокируйте конкретный IP-адрес, который показывает подозрительную активность.
|
|
Вышеупомянутая команда добавляет правило, которое соответствует пакетам с указанного IP-адреса источника, отбрасывает их без уведомления отправителя и предотвращает любой доступ с этого IP-адреса.
- Разрешить HTTP-трафик на порту 80.
|
|
Вышеприведенная команда добавляет правило, которое соответствует пакетам протокола TCP
, нацеленным на порт 80
(порт HTTP по умолчанию). Он принимает соответствующие пакеты, позволяя веб-трафику достигать сервера.
- Разрешить HTTPS-трафик на порту 443.
|
|
Вышеприведенная команда добавляет правило, которое соответствует пакетам протокола TCP
, нацеленным на порт 443
(по умолчанию для HTTPS). Это гарантирует, что зашифрованный веб-трафик разрешен при блокировании других типов трафика на этом порту.
- Опустить весь входящий трафик.
|
|
Вышеупомянутая команда добавляет правило, которое по умолчанию отбрасывает весь входящий трафик, позволяя только предварительно настроенные правила (SSH, HTTP, HTTPS). Он блокирует нежелательный доступ.
Включить NAT и Port Forwarding
- Включите функциональность NAT в ядре Linux, редактируя файл
/etc/sysctl.conf
с помощью любого текстового редактора, такого какnano
.
|
|
- Не комментируйте следующую строку.
|
|
Сохраните и закройте файл.
- Применяйте изменения.
|
|
- Создайте новую таблицу NAT для обработки перевода сетевых адресов (NAT) для вашего сервера.
|
|
Вышеприведенная команда создает новую таблицу nat
, где можно определить правила NAT для перевода адресов в исходящем трафике.
- Создайте цепочку маршрутизации в таблице NAT для обработки пакетов после маршрутизации.
|
|
- Добавьте маскирующее правило для вашей внутренней сети, чтобы обеспечить совместное использование интернет-соединения.
|
|
Это правило говорит nftables выполнять NAT (маскирование) для исходящего трафика из сети 192.0.2.0/24
. Часть oif enp1s0
указывает, что правило применяется к трафику, покидающему интерфейс enp1s0
, который обычно является сетевым интерфейсом, подключенным к Интернету.
Сохранить правила постоянно при перезагрузке
В этом разделе вы будете постоянно сохранять правила nftables при перезагрузке системы, сохраняя их в файле конфигурации.
- Сохраните текущую конфигурацию брандмауэра в
/etc/nftables.conf
файл.
|
|
Вышеприведенная команда сохраняет текущие правила nftables для /etc/nftables.conf
файл, гарантируя, что они могут быть восстановлены после перезагрузки.
- Применяйте сохраненные правила из конфигурации
/etc/nftables.conf
файл.
|
|
Перезагружает правила брандмауэра из сохраненного файла конфигурации (/etc/nftables.conf
).
- Перезапустите сервис nftables.
|
|
Это перезагружает правила брандмауэра и гарантирует, что они сохраняются после перезагрузки.
Расширенная конфигурация правил
- Ограничение скорости реализации для соединений SSH.
|
|
Вышеупомянутая команда добавляет правило, которое нацелено на трафик SSH (порт 22), ограничивает соединения до 3 в минуту и принимает соединения в пределах предела, чтобы помочь предотвратить атаки грубой силы.
- Настройка переадресации портов для веб-трафика.
Создайте цепочку маршрутизации в таблице нат (если ее нет).
|
|
Добавьте правило пересылки портов.
|
|
Вышеприведенная команда добавляет правило, которое захватывает входящий HTTP-трафик (порт 80
), перенаправляет его на внутренний сервер (192.0.2.10
) и позволяет размещать внутренние веб-сервисы.
- Включите регистрацию для пакетов.
|
|
Вышеупомянутая команда добавляет правило, которое регистрирует пакеты перед их сбросом, добавляет пользовательский префикс для простой фильтрации, помогает устранить проблемы с подключением и хранит журналы в системном журнале.
- Смешайте все правила.
|
|
Предупреждение: Будьте осторожны при смывании правил, так как это удалит все существующие правила nftables, эффективно сбросив конфигурацию брандмауэра
Завершение
Вы установили и настроили nftables на свой сервер Ubuntu 24.04.. Вы создавали таблицы, настраивали цепочки с различными политиками и управляли правилами брандмауэра. Структура nftables модернизирует фильтрацию пакетов, обеспечивая унифицированное управление трафиком IPv4 и IPv6, обновление правил атомарности и повышение производительности за счет оптимизированной обработки пакетов. Благодаря встроенным функциям, таким как отслеживание соединений и расширенные возможности регистрации, nftables упрощает сложную задачу управления безопасностью сети. Посетите официальные вики nftables для получения дополнительной информации и расширенных конфигураций.
Если вам понравился этот пост об установке nftables на Ubuntu 24.04, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.