ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

iptables против nftables: в чем разница?

iptables против nftables: в чем разница?

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

 

Почему nftables вместо iptables?

Nftables разработан в Netfilter, одной и той же организации, которая в настоящее время поддерживает IPTables. Он был создан для решения проблем с настройкой iptables, а именно масштабируемости и производительности.

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

Другое оправдание для новой утилиты состоит в том, что инфраструктура iptables стала немного запутанной с iptables, ip6tables, arptables и ebtables, которые предоставляют разные, но схожие функции.

Например, просто неэффективно создавать правила IPv4 в iptables и правила IPv6 в ip6tables и поддерживать их синхронизацию. Nftables стремится заменить все это и быть централизованным решением.

Хотя nftables был включен в ядро ​​Linux с 2014 года, в последнее время она набирает обороты, так как становится все более распространенным. В мире Linux изменения происходят медленно, и устаревшим утилитам часто требуется несколько лет или больше, чтобы постепенно отказаться от их обновленных аналогов.

Nftables становится рекомендуемым брандмауэром, и администраторы Linux должны обновить свои инструменты. Сейчас самое время изучить nftables и обновить существующую конфигурацию iptables.

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

 

Цепочки и правила в nftables

В iptables есть три цепочки по умолчанию: ввод, вывод и пересылка. Эти три «цепочки» (и другие цепочки, если они у вас настроены) содержат «правила», и iptables работает путем сопоставления сетевого трафика со списком правил в цепочке. Если исследуемый трафик не соответствует ни одному правилу, в трафике будет использоваться политика цепочки по умолчанию (т. е. ACCEPT, DROP).

Nftables работает аналогично этому, с «цепями» и «правилами». Однако он не начинается с каких-либо базовых цепей, что делает настройку немного более гибкой.

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

 

Установка nftables в Linux

Nftables доступен во всех основных дистрибутивах Linux, и вы можете легко установить его, используя менеджер пакетов ваших дистрибутивов.

В дистрибутиве на основе Ubuntu или Debian вы можете использовать эту команду:

sudo apt install nftables

 

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

sudo systemctl enable nftables.service

 

Синтаксическая разница между iptables и nftables

Nftables имеет другой и гораздо более простой синтаксис, чем iptables. Давайте будем честными, синтаксис iptables всегда был неясен и требовал дополнительных усилий для изучения. К счастью для тех, кто мигрирует с iptables, nftables по-прежнему принимает старый синтаксис.

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

Установите iptables-translate в дистрибутиве на основе Ubuntu и Debian с помощью этой команды:

sudo apt install iptables-nftables-compat

 

После установки вы можете передать синтаксис iptables команде iptables-translate, и она вернет эквивалентную команду nftables.

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

 

Блокировать входящих соединений

Эта команда заблокирует входящие соединения с IP-адреса 192.168.2.1:

linux@andreyex:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

 

Разрешить входящие соединения SSH

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

linux@andreyex:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

 

Разрешить входящие соединения SSH из определенного диапазона IP

Если вы хотите разрешить входящие SSH-соединения с 192.168.1.0/24:

linux@andreyex:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

 

Разрешить подключения MySQL к сетевому интерфейсу eth0

Вот синтаксис для iptables и nftables:

linux@andreyex:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

 

Разрешить входящий трафик HTTP и HTTPS

Чтобы разрешить трафик определенного типа f, вот синтаксис для обеих команд:

linux@andreyex:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

 

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

 

Регистрация с помощью nftables

Опция «counter», присутствующая в приведенных выше примерах команды nft, указывает nftables подсчитывать количество раз, когда к правилу обращаются, как это делают iptables по умолчанию.

В nftables они являются необязательными и должны быть указаны.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

 

Nftables имеет встроенные опции для экспорта вашей конфигурации. В настоящее время он поддерживает XML и JSON.

nft export xml

 

Вывод

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

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

Если у вас есть вопросы или предложения, пожалуйста, дайте нам знать в комментариях.

Exit mobile version