UFW (Uncomplicated Firewall) je jednoduché rozhraní pro manage iptables/nftables v Linuxu. Nastavení UFW na linuxovém serveru: nainstalujte jej, nastavte výchozí zásady (zakázat příchozí, povolit odchozí), povolit SSH, otevřít požadované servisní porty (např. HTTP/HTTPS), povolit UFW a ověřit pravidla. Tím se váš server chrání pomocí minimálních, čitelných příkazů.
Pokud chcete bezpečně a rychle nastavit UFW na linuxovém serveru, tento podrobný návod pokrývá vše od instalace přes pokročilá pravidla, řešení problémů, aspekty Dockeru až po osvědčené postupy. Je napsán z hlediska hostingu a zabezpečení a pomáhá začátečníkům získat ochranu na produkční úrovni pomocí několika příkazů – aniž by se museli zamknout.
Co je UFW a proč ho používat?
UFW (Uncomplicated Firewall) je uživatelsky přívětivý nástroj příkazového řádku, který manages pravidly firewallu Linuxu. V závislosti na vaší distribuci konfiguruje iptables nebo nftables. Je standardně součástí Ubuntu a je k dispozici pro většinu systémů založených na Debianu/RHEL. UFW snižuje složitost pomocí lidsky čitelných příkazů, jako je „allow 22/tcp“, což je ideální pro vývojáře a správce systémů.
Hlavní výhody:
- Syntaxe pro začátečníky srozumitelná pro bezpečné výchozí hodnoty
- Rychlé pravidlo managepro společné služby (SSH, HTTP, HTTPS)
- Profily pro aplikace (OtevřenéSSH, Apache, Nginx, Postfix)
- IPv4 a IPv6 podpora
- Trvalé i po restartu
- Funguje dobře na VPS, dedikovaném serveru a mrak servery
Záměr vyhledávání: Bezpečné, rychlé a spolehlivé nastavení UFW
Většina čtenářů chce bezpečnou cestu k kopírování a vkládání povolit UFW bez ztráty SSH přístup, plus odpovědi na běžné otázky: jak povolit služby, otevřít porty, blokovat IP adresy, protokolovat a testovat pravidla, používat IPv6, pracovat s Dockerem a zotavovat se z chyb. Tato příručka vám to poskytne s osvědčenými postupy a podrobným návodem pro produkční použití.
Předpoklady a bezpečnostní kontrolní seznam
- Přístup root nebo sudo na vašem Linuxovém serveru
- váš SSH Číslo portu (výchozí 22; vlastní, pokud jste to změnili)
- Servisní porty, které plánujete povolit (např. 80, 443, 5432)
- Přístup ke konzoli/sériovému portu nebo metoda obnovy od vašeho poskytovatele v případě zablokování
- Pro cloudové servery (AWS, GCP, Azure, DigitalOcean): sladění bezpečnostních skupin/firewallů VPC s UFW
Instalace UFW na populární linuxové distribuce
V Ubuntu a Debianu je UFW často nainstalován ve výchozím nastavení. Pokud ne, nainstalujte ho:
sudo apt update
sudo apt install ufwNa Fedoře:
sudo dnf install ufw
# Fedora defaults to firewalld. If you choose UFW, stop/disable firewalld first:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
sudo systemctl enable ufw
sudo systemctl start ufwV systémech RHEL, AlmaLinux, Rocky Linux (v případě potřeby povolte EPEL):
sudo dnf install epel-release -y
sudo dnf install ufw -y
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
sudo systemctl enable ufw
sudo systemctl start ufwDůležité: Nespouštějte firewalld a UFW současně. Vyberte jeden firewall. manager, aby se předešlo konfliktům.
Rychlý start: Bezpečné nastavení za 5 minut
Pro konfiguraci UFW bez ztráty přístupu postupujte podle této bezpečné sekvence.
# 1) Check if IPv6 should be managed too (recommended on dual-stack servers)
sudo nano /etc/default/ufw
# Ensure: IPV6=yes
# Save and exit if you changed it:
# Then reload defaults after enabling later
# 2) Allow SSH FIRST (replace 22 if using a custom port)
sudo ufw allow 22/tcp comment 'SSH'
# 3) Set sensible defaults
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 4) Allow web traffic if this is a web server
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
# 5) Enable UFW (type 'y' to proceed)
sudo ufw enable
# 6) Verify
sudo ufw status verbosePokud jste změnili /etc/default/ufw pro IPv6, aplikovat a znovu načíst:
sudo ufw reload
sudo ufw status numberedZákladní příkazy UFW (Taháček)
- Povolit/Zakázat:
sudo ufw enable,sudo ufw disable - Stav:
sudo ufw status,sudo ufw status verbose,sudo ufw status numbered - Povolit/Zakázat:
sudo ufw allow 22/tcp,sudo ufw deny 25/tcp - Smazat podle čísla:
sudo ufw status numberedpaksudo ufw delete <num> - Limit sazby (SSH):
sudo ufw limit 22/tcp - Povolit rozsah:
sudo ufw allow 10000:20000/tcp - Povolit podle IP/podsítě:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp,sudo ufw allow from 10.0.0.0/24 to any port 5432 - Specifické pro rozhraní:
sudo ufw allow in on eth0 to any port 22 - Protokolování:
sudo ufw logging on(úrovně: vypnuto, nízké, střední, vysoké, plné) - Resetovat:
sudo ufw reset(odstraňuje pravidla; používejte opatrně)
Konfigurace běžných služeb
SSH (Vzdálený přístup)
Vždy dovolte svému SSH port před povolením UFW. Pokud jste se přestěhovali SSH na vlastní port (např. 2222), upravte podle toho:
# Default
sudo ufw allow 22/tcp comment 'SSH'
# Custom
sudo ufw allow 2222/tcp comment 'SSH (custom port)'
# Add rate limiting to slow brute-force attempts
sudo ufw limit 22/tcpWebové servery (Nginx/Apache)
V Ubuntu může UFW používat profily aplikací:
# Show available app profiles
sudo ufw app list
# Common profiles:
sudo ufw allow 'Nginx Full' # 80,443
sudo ufw allow 'Apache Full' # 80,443Generická pravidla založená na portech fungují všude:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpDatabáze (PostgreSQL, MySQL/MariaDB)
Povolte pouze databázové porty z důvěryhodných hostitelů nebo privátních sítí.
# PostgreSQL (5432) from app server only
sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp
# MySQL/MariaDB (3306) from specific subnet
sudo ufw allow from 10.0.1.0/24 to any port 3306 proto tcpPošta, FTPa další služby
# SMTP
sudo ufw allow 25/tcp
# SMTPS/Submission
sudo ufw allow 465/tcp
sudo ufw allow 587/tcp
# IMAP(S) and POP3(S)
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
# FTP (and passive range example)
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcpPro FTP pasivním režimu, nakonfigurujte si také FTP serveru používat stejný pasivní rozsah portů.
Pokročilá pravidla a scénáře UFW
Výchozí zásady
# Recommended defaults
sudo ufw default deny incoming
sudo ufw default allow outgoing
# For hardened egress control (optional)
sudo ufw default deny outgoing
# Then allow specific outbound destinations/ports as neededPovolit podle zdroje, portu, protokolu
# Single IP
sudo ufw allow from 203.0.113.5 to any port 22 proto tcp
# CIDR subnet
sudo ufw allow from 10.10.0.0/16 to any port 9200 proto tcp
# UDP example (DNS)
sudo ufw allow 53/udpPravidla specifická pro rozhraní
Užitečné, pokud má váš server veřejná a soukromá rozhraní:
# Only allow SSH on public interface eth0
sudo ufw allow in on eth0 to any port 22 proto tcp
# Allow database only on private interface eth1
sudo ufw allow in on eth1 to any port 5432 proto tcpRozsahy portů a skupiny služeb
# TCP range
sudo ufw allow 2000:2100/tcp
# UDP range
sudo ufw allow 60000:61000/udpOmezení rychlosti a zmírnění hrubou silou
Omezení rychlosti omezuje opakované pokusy o připojení ze stejné IP adresy:
sudo ufw limit 22/tcp
sudo ufw limit 80/tcp
sudo ufw limit 443/tcpPro hlubší ochranu spárujte UFW s Fail2ban a dynamicky zablokujte zneužívající IP adresy na základě vzorců protokolů.
IPv6 Podpora
umožnit IPv6 v souboru /etc/default/ufw (IPV6=yes) a znovu načtěte soubor. UFW poté manage pravidla ip6tables/nftables, která odpovídají vašim IPv4 zásady, které zajistí, že váš server nebude vystaven IPv6 neúmyslně.
NAT, přesměrování a přesměrování portů
UFW zvládne NAT a forwarding úpravou before.rules a výchozí politiky forwardingu. Příklad: přesměrování portu 80 na 8080 na stejném serveru.
# 1) Enable forwarding in /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
# 2) Edit /etc/ufw/before.rules (IPv4) and add before the *filter section:
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
# 3) Reload
sudo ufw reloadBuďte opatrní: Změny NAT ovlivňují tok provozu. Pečlivě otestujte a zdokumentujte své úpravy.
UFW a Docker: Co potřebujete vědět
Docker manipuluje s iptables přímo, což může obejít výchozí zásady UFW. Ve výchozím nastavení jsou publikované porty kontejnerů na hostiteli otevřené, i když UFW zakazuje příchozí data. Možnosti:
- Vázat kontejnery na specifická rozhraní (např. 127.0.0.1) a reverzní proxy přes Nginx které ovládá UFW.
- Používejte uživatelem definované mostové sítě Dockeru a vyhněte se
--publishs výjimkou kontrolovaného proxy serveru. - Pokud víte, co děláte, zlepšete chování Dockeru v iptables (docker flags).
Praktický přístup: zpřístupnění služeb prostřednictvím Nginx na 80/443 zabezpečte tyto porty pomocí UFW a uchovávejte kontejnery v interních sítích.
Testování, ověřování a protokolování
Po povolení UFW ověřte otevřené porty a pravidla:
# On the server
sudo ufw status verbose
ss -tulpn
# From a remote host
nmap -Pn <server_ip>
nc -zv <server_ip> 22
curl -I http://<server_ip>Povolit protokolování pro zachycení přerušeného/povoleného provozu:
sudo ufw logging medium
# Logs usually at /var/log/ufw.log (or via syslog/journal)
sudo tail -f /var/log/ufw.logOdstraňování problémů a obnova
Vyhýbání se výlukám
- Vždy povolit SSH (správný port) před povolením UFW.
- Otevři na vteřinu SSH relaci před použitím změn, abyste se mohli vrátit zpět, pokud první relace přestane fungovat.
- Mějte připravený přístup ke konzoli/sériovému rozhraní z vašeho hostingového panelu.
Společné opravy
# If you lost access (via console):
sudo ufw disable
# Re-allow SSH and re-enable:
sudo ufw allow 22/tcp
sudo ufw enable
# Reset all rules (careful: wipes configuration)
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
# Delete a bad rule by number
sudo ufw status numbered
sudo ufw delete <number>Pokud jsou služby blokovány nadřazeným firewallem (skupiny zabezpečení AWS, firewally poskytovatelů cloudu), upravte tato pravidla tak, aby odpovídala UFW. Obě vrstvy musí provoz povolit.
Tipy a osvědčené postupy pro kalení
- Nejmenší oprávnění: Povolit pouze požadované porty/IP adresy; zakázat vše ostatní.
- Pro administrační služby a databáze preferujte pravidla s omezením na IP adresu nebo podsíť.
- umožnit IPv6 managea zajistit paritu mezi IPv4 a IPv6 pravidla.
- Použít omezení rychlosti zapnuto SSH a vysoce rizikové porty; pro dynamické zákazy přidejte Fail2ban.
- Segmentové sítě: pro backendové služby používejte privátní podsítě.
- Při diagnostice dočasně zaznamenávejte „střední“ nebo „vysokou“ hodnotu; pro normální provoz se vraťte na „nízkou“.
- Zdokumentujte každé pravidlo s komentářem, aby týmy pochopily záměr.
- Pravidla provádějte čtvrtletně a odstraňujte zastaralé povolenky.
Automatizace UFW (Cloud-Init a Ansible)
Fragment kódu Cloud-Init
#cloud-config
packages:
- ufw
runcmd:
- sed -i 's/IPV6=no/IPV6=yes/' /etc/default/ufw
- ufw default deny incoming
- ufw default allow outgoing
- ufw allow 22/tcp comment 'SSH'
- ufw allow 80/tcp comment 'HTTP'
- ufw allow 443/tcp comment 'HTTPS'
- yes | ufw enable
- ufw status verbosePříklad úlohy Ansible
- name: Install UFW
apt:
name: ufw
state: present
become: yes
- name: Configure UFW defaults
ufw:
state: enabled
policy: deny
direction: incoming
become: yes
- name: Allow outgoing by default
command: ufw default allow outgoing
become: yes
- name: Allow SSH, HTTP, HTTPS
ufw:
rule: allow
port: "{{ item }}"
proto: tcp
loop:
- "22"
- "80"
- "443"
become: yesUFW vs. firewalld vs. iptables/nftables
- UFW: Jednoduchý, srozumitelný pro člověka, skvělý pro většinu systémů s jedním hostitelem a prostředí Ubuntu/Debian.
- firewalld: Výchozí na systémech založených na RHEL/Fedora; dynamické zóny a služby; vhodné pro komplexní prostředí s více rozhraními.
- iptables/nftables: Nízkoúrovňový, nejflexibilnější; strmější křivka učení; ideální pro pokročilé scénáře a vlastní automatizaci.
Vyberte si nástroj, který váš tým zvládne manage Důslednost a správná politika jsou důležitější než konkrétní rámec.
Příklad z reálného světa: Produkční webová aplikace
- Webový virtuální počítač: povolit 22/tcp pouze z kancelářských IP adres; povolit 80/443 do celého světa; směrovat provoz aplikace do kontejnerů přes Nginx; popřít všechno ostatní.
- Virtuální počítač s databází: povolení 5432 pouze z privátní podsítě webového virtuálního počítače; žádný přístup k veřejné databázi.
- Cache VM: povolení 6379 pouze z privátní podsítě webového VM; žádný veřejný přístup.
- Monitorování: povolit 9100 a 9090 pouze z monitorovací podsítě.
Toto opatření se řídí principem co nejmenších privilegií a izoluje kritické služby, přičemž veřejný prostor je minimální.
Mírné doporučení: Bezpečný hosting s YouStable
Jako poskytovatele hostingu, YouStable nabízí VPS s SSD disky a dedikované servery, kde můžete nasadit obrazy připravené pro UFW, využít ochranu před DDoS útoky a získat rady ohledně posílení firewallu. Pokud migrujete nebo škálujete, náš tým vám může pomoci nastavit zásady UFW v souladu s vašimi potřebami a dodržováním předpisů.
Často kladené otázky: Nastavení UFW na Linuxovém serveru
Je UFW ve výchozím nastavení v Ubuntu povolen?
Ne. UFW je ve výchozím nastavení nainstalován na mnoha obrazech Ubuntu, ale ne vždy je povolen. Ověřte si to u sudo ufw statusPokud se zobrazuje „neaktivní“, nakonfigurujte pravidla a spusťte je. sudo ufw enable.
Jak mohu dovolit SSH bezpečně před povolením UFW?
Běh sudo ufw allow 22/tcp (nebo vaše vlastní SSH port) a poté nastavte výchozí hodnoty (deny incoming, allow outgoing), pak sudo ufw enableNechte si vteřinu SSH Relace otevřená pro testování a v případě potřeby se vrátit k původnímu stavu.
Jak otevřu port pomocí UFW?
Použijte sudo ufw allow <port>/<proto>Například otevřete HTTP a HTTPS pomocí sudo ufw allow 80/tcp a sudo ufw allow 443/tcpMůžete také povolit rozsahy: sudo ufw allow 10000:20000/tcp.
Jak zablokuji konkrétní IP adresu pomocí UFW?
Použijte pravidlo zamítnutí, volitelně pro konkrétní port: sudo ufw deny from 203.0.113.10 or sudo ufw deny from 203.0.113.10 to any port 22 proto tcpKontrola priority: specifičtější pravidla (podle IP adresy a portu) se shodují s pravidly obecnými.
Funguje UFW s IPv6?
Ano. Nastaveno IPV6=yes in /etc/default/ufwa poté znovu načtěte. UFW to udělá manage oba IPv4 a IPv6 pravidla a udržování konzistence zásad napříč zásobníky.
Jak resetuju nebo odstraním všechna pravidla UFW?
Běh sudo ufw reset Chcete-li odstranit všechna pravidla a obnovit výchozí nastavení. Poté znovu použijte zásady: výchozí nastavení, povolit SSH, požadované porty a sudo ufw enablePři spouštění resetu na vzdálených serverech buďte opatrní.
Je UFW lepší než firewalld?
Řeší stejný problém různými přístupy. UFW je jednodušší a běžnější v Ubuntu/Debianu. firewalld je výchozí v RHEL/Fedora a nabízí zóny a dynamické... manageVyberte si tu, která odpovídá vašim distribučním a týmovým dovednostem; nespouštějte obojí současně.
Final Word
Nastavení UFW na linuxovém serveru je jedním z nejrychlejších způsobů, jak snížit plochu pro útok. Používejte defaultní zakázání, povolte pouze nezbytné služby, povolte... IPv6, promyšleně protokolujte a důkladně testujte. Díky výše uvedeným krokům pro rychlý start a pokročilým příkladům můžete během několika minut přejít ze základní ochrany na zesílenou, produkční firewallovou politiku.