Kako nastavim požarni zid na svojem VPS?

VPS Branje: 2 min

VPS je od prve minute na internetu in na vseh odprtih vratih nenehno doživlja samodejne poskuse. Požarni zid je eden prvih in najpomembnejših varnostnih korakov: določa, na katerih vratih in od kod strežnik spusti promet.

Osnovno načelo

Dovoli le tisto, kar dejansko uporabljaš (na primer vrata 22 za SSH, 80 in 443 za spletni strežnik), vse druge dohodne povezave prepovej. Podatkovne baze (MySQL 3306, PostgreSQL 5432) in notranjih storitev (na primer Redis) nikoli ne odpri proti internetu; če potrebuješ dostop na daljavo, ga dovoli le s svojega naslova IP.

Pomembno: pred vklopom požarnega zidu vedno dovoli SSH, sicer se lahko zakleneš iz strežnika.

firewalld (AlmaLinux, Rocky Linux)

V sistemih na osnovi RHEL je firewalld privzeti požarni zid:

sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Vrata le z enega naslova IP, na primer MySQL iz tvoje pisarne:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload

ufw (Ubuntu, Debian)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Le z enega naslova IP: sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp. V Debianu ga najprej namesti: sudo apt install ufw.

IPv6

Naši KVM VPS dobijo tudi naslov IPv6, zato morajo pravila veljati tudi za promet IPv6. firewalld in ufw (s privzeto nastavitvijo IPV6=yes) pravila uporabita za oba protokola; če neposredno uporabljaš iptables, je za IPv6 posebej potreben ip6tables. O tem govori članek o nastavitvi naslova IPv6 na VPS.

Docker in požarni zid

Docker objavljena vrata vsebnikov (-p 8080:80) odpre z lastnimi pravili iptables, ki obidejo pravila ufw. Če želiš vrata vsebnika doseči le lokalno, jih veži na lokalni naslov: -p 127.0.0.1:8080:80, promet pa spusti ven prek spletnega strežnika (reverse proxy).

Dodatna zaščita

  • Zaščita pred napadi brute force: fail2ban samodejno blokira naslove IP, ki ponavljajo neuspešne prijave; njegovo namestitev prikazuje članek o nastavitvi fail2ban.
  • SSH: prijava s ključem in prepoved prijave z geslom; glej članek Varna nastavitev strežnika SSH.
  • Menjava vrat: premik SSH na druga vrata zmanjša šum v dnevniku, sam po sebi pa ne ščiti. V AlmaLinux je treba nova vrata dovoliti tudi v SELinuxu (semanage port -a -t ssh_port_t -p tcp 2222).

Če si se zaklenil iz strežnika, odpri zahtevek na portalu za stranke in pomagali ti bomo nazaj.

Nazaj: VPS – članki (12)