Nodaļa 3 · 3.4
Ugunsmūris ar ufw (vai nftables)
WebOké tīklā visa ienākošā datplūsma uz Jūsu VPS ir atvērta. To, kas ienāk, Jūs nosakāt paši ar ugunsmūri savā serverī. Ar to Jūs atļaujat tikai to, kas ir nepieciešams, piemēram, SSH un Jūsu tīmekļa vietni.
Ņemiet vērā: Atveriet SSH, pirms ieslēdzat ugunsmūri. Ja to neizdarīsiet, Jūs bloķēsiet piekļuvi pats sev. Ja tas tomēr notiek, izslēdziet ugunsmūri, izmantojot konsoli (skatiet Nav piekļuves: Jūs vairs nevarat pieslēgties savam serverim).
ufw Debian un Ubuntu sistēmā
ufw ir vienkāršs slānis virs Linux ugunsmūra. Ubuntu tas jau ir instalēts, Debian sistēmā to instalējiet šādi:
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)
Viss, ko neatļaujat, tiek noraidīts. Noteikumi automātiski attiecas arī uz IPv6. Ports 80 un 443 ir nepieciešami tikai tīmekļa vietnei (5. nodaļa). Ja izmantojat Caddy ar HTTP/3, atveriet arī sudo ufw allow 443/udp.
Noderīgas ufw komandas
| Komanda | Ko tā dara? |
|---|---|
sudo ufw status numbered | Noteikumi ar numuriem |
sudo ufw delete 3 | Dzēst 3. noteikumu |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Atvērt portu tikai vienai IP adresei |
sudo ufw limit OpenSSH | Uz laiku noraidīt adresi, kas 30 sekunžu laikā sāk 6 vai vairāk savienojumus |
sudo ufw disable | Izslēgt ugunsmūri (piemēram, izmantojot konsoli, ja piekļuve ir bloķēta) |
Bez ufw: nftables
Debian sistēmā nftables ir ugunsmūris, kas darbojas fonā. Ja nevēlaties izmantot ufw, noteikumus rakstiet paši failā /etc/nftables.conf. Neliels pamata piemērs vienlaikus IPv4 un IPv6:
#!/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
Ar nft -c vispirms pārbaudiet failu. Izmantojiet ufw vai nftables, nevis abus vienlaikus.
AlmaLinux un Rocky Linux sistēmā jau ir instalēts firewalld: sudo firewall-cmd --permanent --add-service=http --add-service=https un sudo firewall-cmd --reload. SSH tur pēc noklusējuma ir atvērts.
Padoms: Vai izmantojat Docker? Porti, ko publicējat ar Docker, apiet ufw. Tāpēc izlasiet Docker un ugunsmūris: kā droši publicēt portus.
