Egy VPS az első perctől az interneten van, és folyamatosan érik automatizált próbálkozások minden nyitott porton. A tűzfal az egyik első és legfontosabb biztonsági lépés: azt szabályozza, hogy mely portokon és honnan érkező forgalmat enged be a szerver.
Az alapelv
Csak azt engedélyezze, amit ténylegesen használ (például a 22-es portot az SSH-hoz, a 80-ast és a 443-ast a webszerverhez), minden más bejövő kapcsolatot tiltson. Az adatbázist (MySQL 3306, PostgreSQL 5432) és a belső szolgáltatásokat (például a Redist) soha ne nyissa meg az internet felé; ha távoli elérés kell, csak a saját IP-címéről engedélyezze.
Fontos: a tűzfal bekapcsolása előtt mindig engedélyezze az SSH-t, különben kizárhatja magát a szerverből.
firewalld (AlmaLinux, Rocky Linux)
A RHEL-alapú rendszereken a firewalld az alapértelmezett tűzfal:
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
Egy port csak egy IP-címről, például a MySQL a saját irodájából:
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
Csak egy IP-címről: sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp. Debianon előbb telepítse: sudo apt install ufw.
IPv6
KVM VPS-eink IPv6 címet is kapnak, ezért a szabályoknak az IPv6 forgalomra is érvényesnek kell lenniük. A firewalld és az ufw (alapértelmezett IPV6=yes beállítással) mindkét protokollra alkalmazza a szabályokat; ha közvetlenül iptables-t használ, az IPv6-hoz az ip6tables külön kell. Erről az IPv6 cím VPS-en való beállításáról szóló cikk szól.
Docker és a tűzfal
A Docker a konténerek közzétett portjait (-p 8080:80) saját iptables-szabályokkal nyitja meg, és ezek az ufw szabályait megkerülik. Ha egy konténer portját csak helyben szeretné elérni, kösse a helyi címre: -p 127.0.0.1:8080:80, és a forgalmat egy webszerveren (reverse proxy) keresztül engedje ki.
További védelem
- Brute force elleni védelem: a fail2ban a sikertelen belépéseket ismétlő IP-címeket automatikusan letiltja; telepítését a fail2ban beállításáról szóló cikk mutatja be.
- SSH: kulcsos belépés és a jelszavas belépés tiltása; lásd az SSH szerver biztonságos beállítása cikket.
- Portváltás: az SSH áthelyezése egy másik portra a naplózajt csökkenti, de önmagában nem véd. AlmaLinuxon a SELinuxnak is engedélyezni kell az új portot (
semanage port -a -t ssh_port_t -p tcp 2222).
Ha kizárta magát a szerverből, nyisson hibajegyet az Ügyfélportálon, és segítünk visszajutni.