Rozdział 3 · 3.4
Zapora sieciowa z ufw (lub nftables)
W sieci WebOké cały ruch przychodzący do Państwa VPS jest otwarty. O tym, co może dotrzeć do serwera, decydują Państwo sami za pomocą zapory sieciowej na serwerze. Dzięki niej przepuszczają Państwo tylko to, co jest potrzebne, na przykład SSH i stronę internetową.
Uwaga: Prosimy otworzyć SSH, zanim włączą Państwo zaporę. W przeciwnym razie odetną Państwo sobie dostęp do serwera. Jeśli tak się jednak stanie, można wyłączyć zaporę przez konsolę (zob. Brak dostępu: nie mogą Państwo zalogować się na serwer).
ufw na Debian i Ubuntu
ufw to prosta nakładka na zaporę systemu Linux. W Ubuntu jest już zainstalowany, w Debian należy go zainstalować:
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)
Wszystko, na co Państwo nie zezwolą, zostanie odrzucone. Reguły obowiązują automatycznie także dla IPv6. Porty 80 i 443 są potrzebne tylko dla strony internetowej (rozdział 5). Jeśli korzystają Państwo z Caddy z HTTP/3, prosimy otworzyć również sudo ufw allow 443/udp.
Przydatne polecenia ufw
| Polecenie | Co robi? |
|---|---|
sudo ufw status numbered | Wyświetla reguły z numerami |
sudo ufw delete 3 | Usuwa regułę 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Otwiera port tylko dla jednego adresu IP |
sudo ufw limit OpenSSH | Tymczasowo odrzuca adres, który w ciągu 30 sekund nawiąże 6 lub więcej połączeń |
sudo ufw disable | Wyłącza zaporę (na przykład przez konsolę, gdy utracą Państwo dostęp) |
Bez ufw: nftables
W Debian zaporą działającą „pod maską” jest nftables. Jeśli nie chcą Państwo używać ufw, można samodzielnie zapisać reguły w /etc/nftables.conf. Prosta konfiguracja bazowa dla IPv4 i IPv6 jednocześnie:
#!/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
Za pomocą nft -c mogą Państwo najpierw sprawdzić plik. Prosimy używać ufw albo nftables, nie obu jednocześnie.
W AlmaLinux i Rocky Linux firewalld jest już zainstalowany: sudo firewall-cmd --permanent --add-service=http --add-service=https i sudo firewall-cmd --reload. SSH jest tam domyślnie otwarte.
Wskazówka: Czy korzystają Państwo z Docker? Porty publikowane przez Docker omijają ufw. Dlatego prosimy przeczytać Docker i zapora sieciowa: bezpieczne publikowanie portów.
