Kapitola 3 · 3.4
Firewall s ufw (alebo nftables)
V sieti WebOké je všetka prichádzajúca prevádzka na váš VPS otvorená. O tom, čo sa k nemu dostane, rozhodujete sami pomocou firewallu na svojom serveri. Ním povolíte len to, čo je potrebné, napríklad SSH a vašu webovú stránku.
Upozornenie: Pred zapnutím firewallu otvorte SSH. Inak sa sami zablokujete. Ak sa to predsa stane, firewall vypnite cez konzolu (pozrite Bez prístupu: na server sa už nedostanete).
ufw na Debian a Ubuntu
ufw je jednoduchá vrstva nad firewallom systému Linux. Na Ubuntu je už nainštalovaný, na Debian si ho nainštalujete:
anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw allow OpenSSH
anna@web1:~$ sudo ufw allow 80,443/tcp
anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
anna@web1:~$ sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (v6) ALLOW IN Anywhere (v6)
Všetko, čo nepovolíte, sa odmietne. Pravidlá automaticky platia aj pre IPv6. Porty 80 a 443 potrebujete len pre webovú stránku (kapitola 5). Ak používate Caddy s HTTP/3, otvorte aj sudo ufw allow 443/udp.
Užitočné príkazy ufw
| Príkaz | Čo robí? |
|---|---|
sudo ufw status numbered | Zobrazí pravidlá s číslami |
sudo ufw delete 3 | Odstráni pravidlo 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Otvorí port len pre jednu IP adresu |
sudo ufw limit OpenSSH | Dočasne odmietne adresu, ktorá do 30 sekúnd nadviaže 6 alebo viac spojení |
sudo ufw disable | Vypne firewall (napríklad cez konzolu, ak ste sa zablokovali) |
Bez ufw: nftables
Na Debian je nftables firewall, ktorý beží pod kapotou. Ak nechcete ufw, pravidlá napíšete sami do /etc/nftables.conf. Malý základ pre IPv4 a IPv6 spolu:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 80, 443 } accept
}
}
anna@web1:~$ sudo nft -c -f /etc/nftables.conf
anna@web1:~$ sudo systemctl enable --now nftables
Príkazom nft -c najprv skontrolujete súbor. Používajte ufw alebo nftables, nie oboje naraz.
Na AlmaLinux a Rocky Linux je už nainštalovaný firewalld: sudo firewall-cmd --permanent --add-service=http --add-service=https a sudo firewall-cmd --reload. SSH je tam predvolene otvorené.
Tip: Používate Docker? Porty, ktoré zverejníte pomocou Docker, obchádzajú ufw. Preto si prečítajte Docker a firewall: bezpečné publikovanie portov.
