ufw
ufw
Uncomplicated Firewall. Nadstavba nad nftables, která z běžných úkonů dělá jednořádkové příkazy. Pro jednoduchý server je to správná volba — pod podmínkou, že víš, kde přestává platit.
Základ
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable
ufw status verbose
To je celý firewall pro typický webový server. Proto se ufw používá.
Užitečné varianty
ufw allow from 192.168.1.0/24 # celá síť kamkoliv
ufw allow from 192.168.1.0/24 to any port 22 # síť na konkrétní port
ufw allow from 10.10.0.0/24 to any port 8006 # Proxmox jen z VPN
ufw limit 22/tcp # omezení opakovaných pokusů
ufw deny from 203.0.113.5 # blokace adresy
ufw allow in on wg0 # celé rozhraní (VPN)
ufw limit je šikovná drobnost — povolí šest spojení za třicet vteřin z jedné adresy a další zahodí. Na SSH vystavené do internetu to výrazně zředí log.
Mazání
ufw status numbered
ufw delete 3
ufw delete allow 8080/tcp # podle pravidla, ne podle čísla
Po smazání podle čísla se ostatní přečíslují. Když mažeš víc pravidel, jdi odspodu nahoru, nebo je maž podle znění.
Aplikační profily
ufw app list
ufw allow "Nginx Full"
ufw app info "Nginx Full"
Profily jsou v /etc/ufw/applications.d/. Pohodlné, ale skryjí ti, které porty se skutečně otevřely — u ufw app info si to ověř.
Logování
ufw logging on
ufw logging medium
tail -f /var/log/ufw.log
Úrovně jsou low, medium, high, full. medium je rozumný kompromis. full zaplní disk.
IPv6
Zkontroluj /etc/default/ufw:
IPV6=yes
Ve výchozím stavu to zapnuté je, ale u starších instalací a u některých obrazů pro VPS ne. Pak máš IPv4 zajištěnou a IPv6 dokořán.
Ověř to takhle:
ufw status verbose | grep v6
Kde ufw přestává platit
Tohle je důvod, proč tahle stránka existuje. Ufw je pohodlné rozhraní k jedné části netfilteru — ne k celému.
ufw status neukazuje cizí pravidla. Docker, Proxmox, libvirt a další si zapisují vlastní řetězce, o kterých ufw neví a neřekne ti o nich. Jediný způsob, jak vidět pravdu:
nft list ruleset
iptables -L -n -v
Když se ti výstup ufw status a nft list ruleset výrazně liší, věř tomu druhému.
Docker ufw úplně obchází. ufw deny 8080 a docker run -p 8080:80 znamená, že port je veřejně dostupný, ať si ufw říká cokoliv. Je to nejzávažnější věc na téhle stránce a má vlastní stránku: Docker a firewall.
Forwarding se nastavuje jinde. Když chceš, aby stroj směroval provoz (router, VPN brána), samotný ufw allow nestačí. Musíš v /etc/default/ufw nastavit:
DEFAULT_FORWARD_POLICY="ACCEPT"
a povolit forwarding v /etc/ufw/sysctl.conf.
Složitější logiku ufw neumí. Značkování, přesměrování portů, podmíněná pravidla, dynamické množiny. V tu chvíli jdi na nftables a ufw vypni — ne obojí naráz.
Kdy ufw a kdy ne
Ano: jednotlivý server s několika službami, VPS, stroj bez kontejnerů, situace, kdy chceš rychle a bez chyb.
Ne: router nebo VPN brána, hostitel s Dockerem (nebo ano, ale s vědomím omezení a s pravidly v DOCKER-USER), cokoliv, co potřebuje NAT.
Ověření zvenku
Ufw ti řekne, co si myslí. Skutečnost ti řekne sken zvenku:
nmap -Pn -p- adresa.serveru
Pusť to z jiného stroje nebo z mobilu na datech. Viz nástroje.