Вики / Сеть
Файрвол (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 # низкий уровень
См. также
- ip (адреса и маршруты) — Сеть
- ss (сокеты и порты) — Сеть
- sshd (SSH-сервер) — Службы и systemd