linux-labs

Вики / Сеть

Файрвол (nftables / ufw)

Концепция Ubuntu 24.04 · nftables · ufw СетьБезопасностьФайрвол

Фильтрация трафика — простой ufw и низкоуровневый nftables.

В Ubuntu фильтрацией пакетов занимается nftables (ядро). Поверх него — удобная обёртка ufw (Uncomplicated Firewall) для типовых правил.

  • Начинающим/типовым серверам — ufw.
  • Сложные политики (NAT, наборы, форвардинг) — nftables напрямую.

⚠️ Настраивая файрвол удалённо, сначала разреши SSH (22/tcp), иначе закроешь себе доступ. Держи второй сеанс открытым.

sudo ufw status verbose           # текущие правила
sudo ufw allow 22/tcp             # разрешить SSH (СНАЧАЛА!)
sudo ufw allow 80,443/tcp         # веб
sudo ufw allow from 192.168.1.0/24 to any port 5432  # postgres только из подсети
sudo ufw deny 23/tcp
sudo ufw delete allow 80/tcp
sudo ufw enable                   # включить (применит политику по умолчанию)
sudo ufw default deny incoming    # запретить входящее по умолчанию
sudo nft list ruleset             # весь активный набор правил

Минимальный набор (/etc/nftables.conf):

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    ct state established,related accept
    iif lo accept
    tcp dport { 22, 80, 443 } accept
  }
}
sudo nft -f /etc/nftables.conf    # загрузить
sudo systemctl enable --now nftables

Закрыл себе SSH

Зайди через консоль гипервизора/serial; ufw disable или поправь набор и перезагрузи правила.

Правило не действует

  • Порядок важен: в nftables до policy drop нужен accept для нужного трафика.
  • ufw и ручной nft могут конфликтовать — используй что-то одно.
  • Проверь, что трафик вообще доходит: ss -tlnp (служба слушает?) до выводов о файрволе.

Снаружи не доступен порт, хотя служба слушает

sudo ufw status / nft list ruleset — разрешён ли порт; не забудь про внешний NAT/маршрутизатор.

sudo ufw allow 22/tcp             # СНАЧАЛА SSH
sudo ufw status verbose           # правила
sudo ufw default deny incoming
sudo nft list ruleset             # низкий уровень

См. также