Capitolul 3 · 3.4
Un firewall cu ufw (sau nftables)
În rețeaua WebOké, tot traficul de intrare către VPS-ul dvs. este permis. Ce anume intră decideți chiar dumneavoastră, cu un firewall pe server. Astfel permiteți doar ceea ce este necesar, cum ar fi SSH și site-ul dvs.
Atenție: Deschideți SSH înainte de a activa firewallul. Dacă nu faceți acest lucru, vă blocați singur accesul. Dacă se întâmplă totuși, dezactivați firewallul prin consolă (consultați Blocat pe dinafară: nu mai puteți accesa serverul).
ufw pe Debian și Ubuntu
ufw este un strat simplu peste firewallul din Linux. Pe Ubuntu este deja instalat, iar pe Debian îl instalați astfel:
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)
Tot ce nu permiteți este refuzat. Regulile se aplică automat și pentru IPv6. Porturile 80 și 443 vă sunt necesare doar pentru un site (capitolul 5). Dacă folosiți Caddy cu HTTP/3, deschideți și sudo ufw allow 443/udp.
Comenzi ufw utile
| Comandă | Ce face? |
|---|---|
sudo ufw status numbered | Afișează regulile numerotate |
sudo ufw delete 3 | Șterge regula 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Deschide un port doar pentru o singură adresă IP |
sudo ufw limit OpenSSH | Refuză temporar o adresă care inițiază 6 sau mai multe conexiuni în 30 de secunde |
sudo ufw disable | Dezactivează firewallul (de exemplu prin consolă, dacă v-ați blocat accesul) |
Fără ufw: nftables
Pe Debian, nftables este firewallul care lucrează în fundal. Dacă nu doriți ufw, scrieți singur regulile în /etc/nftables.conf. O bază mică pentru IPv4 și IPv6 împreună:
#!/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
Cu nft -c verificați mai întâi fișierul. Folosiți fie ufw, fie nftables, nu pe amândouă în același timp.
Pe AlmaLinux și Rocky Linux firewalld este deja instalat: sudo firewall-cmd --permanent --add-service=http --add-service=https și sudo firewall-cmd --reload. Acolo, SSH este deschis în mod implicit.
Sfat: Folosiți Docker? Porturile pe care le publicați cu Docker ocolesc ufw. De aceea, citiți Docker și firewall-ul: publicarea în siguranță a porturilor.
