Jump to content

Nftables

Фаервол nftables

Введение

Статья описывает пример настройки фильтрафии сетевого трафика через nftables.

Установка пакетов

sudo dnf install nftables

Настройка фильтрации

Настройка выполняется путем правки конфигурационного файла /etc/sysconfig/nftables.conf.

Ниже приведен простой пример, в котором разрешены все исходящие соединения, а входящие разрешены только по TCP на порты 4510 (SSH перенесен со стандартного порта 22 на нестандартный — 4510), 80 и 443.

#!/usr/sbin/nft -f

flush ruleset

table ip filter {
  chain input {
    type filter hook input priority 0; policy drop;

    # Разрешаем loopback (локальные соединения)
    iif "lo" accept

    # Разрешаем установленные и связанные соединения
    ct state established,related accept

    # Разрешаем ICMP (пинг и др. служебные сообщения)
    meta l4proto icmp accept

    # Разрешаем IPv6 ICMP (если используется IPv6)
    meta l4proto ipv6-icmp accept

    # Разрешаем HTTP (порт 80)
    tcp dport 80 accept

    # Разрешаем HTTPS (порт 443)
    tcp dport 443 accept

    # ssh
    tcp dport 4510 accept

    # Всё остальное — отбрасываем (policy drop уже задан)
  }

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

  chain output {
    type filter hook output priority 0; policy accept;
  }
}

После первичной настройки перезапустите службу nftables:

sudo systemctl restart nftables

Если не выдано ошибки, то значит правила фаервола были прогружены. В таком случае добавьте службу в автозапуск:

sudo systemctl enable nftables

После правки правил в дальнейшем выполняйте:

sudo systemctl reload nftables