Servery a DevOps

Firewall UFW na Ubuntu: pravidla, porty a časté chyby

Praktický návod k UFW: výchozí politiky, povolení SSH a webu, omezení podle IP, mazání pravidel, logování a pozor na Docker, který UFW obchází.

12. 10. 2026 · 4 min čtení

UFW (Uncomplicated Firewall) je na Ubuntu nejjednodušší způsob, jak řídit, které porty jsou dostupné z internetu. Pod kapotou generuje pravidla pro netfilter (na Ubuntu 24.04 přes iptables-nft), ale vy pracujete s čitelnými příkazy. Ukážeme si bezpečný postup i nejčastější pasti.

Instalace a výchozí politika

Na Ubuntu je UFW obvykle předinstalovaný. Pokud ne:

sudo apt install ufw

Rozumný výchozí stav je: příchozí provoz zakázat, odchozí povolit.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Nejdřív SSH, pak zapnout

Nejčastější chyba: zapnete firewall a odříznete se od serveru. Proto vždy nejdřív povolte SSH:

sudo ufw allow OpenSSH
# nebo pokud SSH běží na jiném portu:
sudo ufw allow 2222/tcp

Teprve potom:

sudo ufw enable
sudo ufw status verbose

Povolení webových a dalších služeb

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Nebo použijte aplikační profily, které přidávají balíčky do /etc/ufw/applications.d/:

sudo ufw app list
sudo ufw allow 'Nginx Full'   # porty 80 a 443

Pro HTTP/3 (QUIC) je potřeba povolit i UDP: sudo ufw allow 443/udp.

Rozsah portů (třeba pro herní server):

sudo ufw allow 27015:27030/udp

U rozsahu musíte vždy uvést protokol.

Pravidla jen pro konkrétní IP

Databázi nebo administraci nikdy neotevírejte celému světu. Povolte jen svou IP nebo interní síť:

sudo ufw allow from 198.51.100.25 to any port 22 proto tcp
sudo ufw allow from 10.0.0.0/24 to any port 5432 proto tcp

Blokace konkrétní adresy:

sudo ufw insert 1 deny from 192.0.2.66

Proč insert 1? UFW vyhodnocuje pravidla shora dolů a použije první shodu. Pokud by deny bylo až za obecným allow 80/tcp, nikdy by se neuplatnilo.

Ochrana proti hrubé síle: limit

sudo ufw limit OpenSSH

Pravidlo limit zablokuje IP, která se během 30 sekund pokusí o 6 a více spojení. Je to jednoduchá ochrana; propracovanější řešení nabízí fail2ban.

Výpis a mazání pravidel

sudo ufw status numbered

Výstup vypadá zhruba takto:

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

Smazání podle čísla:

sudo ufw delete 2

Nebo podle původního zápisu: sudo ufw delete allow 80/tcp. Pozor: po smazání se čísla posunou, takže při mazání více pravidel postupujte od nejvyššího čísla.

Logování

sudo ufw logging low

Zablokované pakety pak najdete v /var/log/ufw.log (případně přes journalctl -k | grep UFW). Úroveň medium a vyšší generuje hodně záznamů – na malém VPS hlídejte místo na disku.

Pozor na Docker

Docker zapisuje vlastní pravidla do netfilteru, která se vyhodnocují před pravidly UFW. Pokud spustíte kontejner s -p 5432:5432, port bude dostupný z internetu, i když ho UFW „blokuje“.

Řešení:

  • publikujte porty jen na localhost: -p 127.0.0.1:5432:5432 (v docker-compose.yml jako "127.0.0.1:5432:5432"),
  • před kontejnery dejte reverzní proxy (nginx) a ven otevřete jen 80/443,
  • pro filtrování provozu ke kontejnerům použijte řetězec DOCKER-USER.

Ověření zvenku je nejspolehlivější – z jiného stroje spusťte nmap -p 5432 203.0.113.10.

IPv6

Pokud má server IPv6 adresu, ujistěte se, že v /etc/default/ufw je IPV6=yes (výchozí). Jinak by pravidla platila jen pro IPv4 a služby by byly přes IPv6 otevřené.

Rychlý tahák

Úkol Příkaz
Stav sudo ufw status verbose
Povolit port sudo ufw allow 443/tcp
Povolit z IP sudo ufw allow from 1.2.3.4 to any port 22
Smazat pravidlo sudo ufw delete <číslo>
Dočasně vypnout sudo ufw disable
Reset všeho sudo ufw reset

Firewall je první vrstva. Doplňte ho vypnutými hesly u SSH a pravidelnými aktualizacemi.