Это старая версия документа!
NFTABLES
nftables заменяет фреймворк iptables
В некоторых дистрибутивах уже установлен, но отключен
Установка пакета nftables
apt install nftables
Запуск nftables при загрузке
systemctl enable nftables.service
По умолчанию, правила находятся в
/etc/nftables.conf
Просмотр текущих правил nftables
nft list ruleset
Сбросить все правила в nftables, и остановить фильтрацию
nft flush ruleset
Предотвратить запуск nftables при загрузке
systemctl mask nftables.service
Удалить пакет nftables и все его следы в системе
apt purge nftables
Синтаксис
Создать базовую таблицу IPv4
nft add table inet filter
Создать цепочку для исходящего трафика IPv4
nft add chain inet filter input { type filter hook input priority 0\; }
Правило, для подсчета входящих пакетов (IPv4)
nft add rule inet filter input counter accept
Показать результат предыдущих команд:
nft list table inet filter
Сбросить правила для цепочки filter input
nft flush chain inet filter input
Удалить цепочки filter input
nft delete chain inet filter input
Удалить таблицу filter
nft delete table inet filter
Семейство не обязательных параметров. По умолчанию используется 'ip'
nft add table ip6 filter nft add chain ip6 filter input nft add rule ip6 filter input counter accept
Директория с примерами конфигураций в Debian
/usr/share/doc/nftables/examples/
Подсчет входящего трафика на порт tcp/22
nft add rule inet filter input tcp dport 22 counter
Подсчет и прием трафика на 80/tcp и 443/tcp для новых и существующих соединений
nft add rule inet filter input tcp dport {80, 443} ct state new,established counter accept
Структура
Список таблиц
- filter — здесь пакеты фильтруются, то есть их можно пропустить или отбросить.
- Содержит цепочки: input, forward, output.
- nat — здесь работает NAT (проброс портов, входящий и исходящий NAT).
- Содержит цепочки: prerouting, output, postrouting.
- mangle — позволяет вносить изменения в заголовки ip-пакетов.
- Содержит все цепочки.
- raw — позволяет выборочно пропускать или отбрасывать пакеты перед тем, как они попадут в механизм отслеживания соединения (ct - connection tracking), что значительно снижает нагрузку на процессор.
- Содержит цепочки: prerouting и output.
Прохождение цепочки
Пакет, попавший в цепочку, начинает проходить правила указанные в ней сверху вниз. Фаервол сравнивает пакет с первым правилом, затем со вторым и так далее. Если фаервол определит правило для этого пакета, то с пакетом будет выполнено действие:
- drop — пакет будет уничтожен;
- accept — пакет сразу же покинет эту цепочку и пойдет дальше, то есть нижние правила уже не будут рассмотрены.
А если фаервол не найдет в данной цепочке подходящего правила для пакета, то фаервол выполнит действие с пакетом, которое указано в политике (policy accept или policy drop).
Для создания правил
- ip saddr <ip-адрес> — исходящий ip адрес;
- ip daddr <ip-адрес> — ip адрес назначения (в цепочки input является адресом сервера к которому идет подключение);
- tcp sport <порт> — исходящий tcp порт;
- tcp dport <порт> — порт tcp назначения (в цепочки input является портом сервера к которому идет подключение);
- udp sport <порт> — исходящий udp порт;
- udp dport <порт> — порт udp назначения;
- iifname <имя интерфейса> — имя входящего интерфейса;
- oifname <имя интерфейса> — имя исходящего интерфейса.