#!/usr/sbin/nft -f
flush ruleset
table inet whitelist {
chain output {
type filter hook output priority 0; policy drop;
# Локальный интерфейс
oifname "lo" accept
# Уже установленные соединения (после flush conntrack — только squid)
ct state established,related accept
# DNS
udp dport 53 accept
tcp dport 53 accept
# SSH (для администрирования)
tcp dport 22 accept
# ICMP (диагностика)
ip protocol icmp accept
ip6 nexthdr icmpv6 accept
# root и _apt — для обновлений системы
meta skuid 0 tcp dport { 80, 443 } accept
meta skuid "_apt" tcp dport { 80, 443 } accept
# Squid — единственный, кому разрешён выход в 80/443
meta skuid "proxy" tcp dport { 80, 443 } accept
# NTP (на всякий случай)
udp dport 123 accept
}
}