nftables на VPS: современный firewall вместо iptables — иллюстрация к статье Storm Cloud Blog, категория DevOps
nftables на VPS: современный firewall вместо iptables — иллюстрация к статье Storm Cloud Blog, категория DevOps
DevOps·3 мин··

nftables на VPS: современный firewall вместо iptables

Настройка nftables на Linux VPS: базовые правила, SSH, HTTP/HTTPS, rate limit. Замена UFW и iptables в 2026.

Краткий ответ: nftables — наследник iptables в ядре Linux. Один синтаксис, таблицы inet, встроенный set для блокировок. На свежем Ubuntu 24.04 и Debian 12 — default.

UFW — обёртка над iptables/nftables. Понимание nftables даёт контроль: rate limit SSH, geo-блок (опционально), интеграция с Fail2ban и CrowdSec.


UFW vs nftables

UFW nftables
Простота Высокая Средняя
Rate limit Сложно natively
Sets / блок-листы Ограничено Да
Debian 12 default nft backend Да

Для новичка — UFW из гайда по защите. Для production — nftables ruleset в git.


Базовый ruleset

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
  set blocked_ips {
    type ipv4_addr
    flags timeout
    timeout 1h
  }

  chain input {
    type filter hook input priority filter; policy drop;

    iif "lo" accept
    ct state established,related accept
    ip protocol icmp accept
    ip6 nexthdr icmpv6 accept

    tcp dport 22 ct state new limit rate over 6/minute add @blocked_ips { ip saddr } drop
    tcp dport { 22, 80, 443 } accept
  }

  chain forward {
    type filter hook forward priority filter; policy drop;
  }

  chain output {
    type filter hook output priority filter; policy accept;
  }
}
sudo nft -f /etc/nftables.conf
sudo systemctl enable nftables

Важно: перед policy drop держите вторую SSH-сессию открытой.


Разрешить Docker

Docker манипулирует iptables/nftables. При Docker Compose добавьте:

chain input {
  # ... existing rules ...
  iifname "docker0" accept
}

Или используйте docker run --network host только где нужно. Traefik слушает 80/443 на хосте.


Fail2ban + nftables

# /etc/fail2ban/jail.local
[sshd]
banaction = nftables-multiport

CrowdSec bouncer тоже поддерживает nftables — см. CrowdSec.


Логирование dropped

chain input {
  counter drop
}
journalctl -k | grep nft

Централизация — journalctl и Loki.


IPv6

table inet filter {
  chain input {
    tcp dport { 22, 80, 443 } accept
  }
}

inet покрывает IPv4 и IPv6 одной таблицей — проще чем отдельные ip/ip6 tables в iptables.


Чеклист безопасности VPS

  1. nftables: drop by default, только 22/80/443
  2. SSH: ключи, PermitRootLogin no
  3. Fail2ban
  4. Автообновления security
  5. VPN admin вместо открытого SSH (опционально)

Итог

nftables — стандарт firewall на Linux VPS в 2026. Один конфиг в git, rate limit SSH, интеграция с Fail2ban — база перед деплоем приложений.

VPS — StormNet Cloud. Полный чеклист — защита VPS. Мониторинг атак — CrowdSec.

Частые вопросы

nftables или UFW на VPS?

UFW проще для старта. nftables — больше контроля: rate limit, sets, единый inet для IPv4/IPv6.

Заменяет ли nftables Fail2ban?

Нет. nftables фильтрует трафик, Fail2ban банит IP по логам атак. Используйте оба слоя.