UFW instellen op een VPS: de juiste stappen
Beveilig uw VPS met UFW door een default-deny beleid toe te passen. Leer hoe u SSH toegang behoudt en alleen noodzakelijke poorten opent om uw server veilig te beheren.
Wat UFW is en waarom u het wilt gebruiken
UFW staat voor Uncomplicated Firewall, en de naam is accuraat. Het is een gebruiksvriendelijke interface voor de firewall die al in de Linux-kernel aanwezig is. In plaats van ruwe regels te schrijven, voert u korte commando's uit zoals ufw allow 22/tcp. Op een nieuwe VPS is elke luisterende service standaard bereikbaar vanaf het internet. Een firewall draait dit om: u weigert al het verkeer en staat vervolgens alleen de weinige poorten toe die u daadwerkelijk gebruikt. Deze enkele wijziging verkleint uw blootstelling aanzienlijk met slechts vier commando's.
Voordat u wijzigingen aanbrengt, moet u weten welke services er luisteren, aangezien de firewall bepaalt wat hiermee gebeurt. Controleren wat er luistert met ss -tlnp is de juiste eerste stap.
De enige regel die voorkomt dat u uzelf buitensluit
Dit is de fout waarvoor mensen terugschrikken bij het gebruik van firewalls. U schakelt UFW in met een standaard 'deny'-beleid, maar u heeft SSH niet toegestaan. Zodra de firewall actief wordt, wordt uw eigen verbinding verbroken en kunt u niet meer inloggen. Voorkom dit door altijd SSH toe te staan voordat u UFW inschakelt. Dat is de hele truc, en de onderstaande stappen volgen de veilige volgorde.
Mocht het u toch overkomen, dan zit u niet vast: de webconsole van uw provider, via VNC of een seriële verbinding, verloopt niet via SSH. U kunt daar inloggen en ufw disable uitvoeren of de ontbrekende regel toevoegen.
Stap 1: De standaardbeleidsregels instellen
Begin door UFW de opdracht te geven om al het inkomende verkeer te weigeren en al het uitgaande verkeer toe te staan:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming is het belangrijkste onderdeel. Dit betekent dat elke poort zonder expliciete toelatingsregel gesloten is voor de buitenwereld, zelfs als een service op die poort luistert. allow outgoing zorgt ervoor dat uw server normaal verbinding kan maken met het internet voor updates en dergelijke. Deze twee commando's wijzigen alleen het beleid; er wordt niets afgedwongen totdat u UFW inschakelt in stap 3.
Stap 2: Sta alleen de benodigde poorten toe
Open SSH voordat u de firewall inschakelt, zodat u uw verbinding behoudt:
sudo ufw allow 22/tcpUFW kan ook rate-limiting voor SSH toepassen: sudo ufw limit 22/tcp staat de poort toe, maar blokkeert elk adres dat zes of meer verbindingen in dertig seconden probeert op te zetten. Dit remt brute-force-scripts af zonder extra software.
Als u een webserver draait, sta dan ook HTTP en HTTPS toe:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpSta alleen verkeer toe voor services die u openbaar aanbiedt. Een database zoals Postgres op poort 5432 zou vrijwel nooit een allow-regel moeten krijgen. Bind deze in plaats daarvan aan 127.0.0.1, zodat deze alleen op de machine zelf bereikbaar is. Elke poort die u opent is een deur die u vanaf nu moet beveiligen; houd de lijst daarom kort.
U kunt hier ook de volledige reeks ufw-commando's voor uw server samenstellen en deze vervolgens in de juiste volgorde uitvoeren:
Stap 3: Inschakelen en bevestigen dat het actief is
sudo ufw enableEr wordt gewaarschuwd dat het commando bestaande SSH-verbindingen kan verbreken. Omdat u 22/tcp in stap 2 heeft toegestaan, blijft uw sessie behouden. Bevestig het resultaat:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN AnywhereControleer hier twee zaken. Status: active betekent dat de firewall actief is. Elke regel verschijnt tweemaal: eenmaal in platte tekst en eenmaal met (v6). Dit geeft aan dat UFW zowel IPv6 als IPv4 afdekt. Als de (v6)-regels ontbreken, is uw IPv6-zijde niet beheerd. Dit is een valkuil die wordt behandeld in het IPv6 firewall artikel.
Regels achteraf beheren
Gebruik de volgende opdracht om regels met nummers weer te geven, zodat u er een kunt verwijderen:
sudo ufw status numbered
sudo ufw delete 3Gebruik de volgende opdracht om een poort alleen toe te staan vanaf één specifiek adres. Dit is een effectieve methode om een beheerservice alleen voor uw eigen IP-adres open te stellen:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpDie aanpak werkt niet meer zodra uw eigen adres verandert of meerdere machines toegang nodig hebben. De gebruikelijke oplossing is om de poort helemaal niet meer publiek open te stellen en de service via een privé-netwerk te bereiken. Daarvoor dient het privénetwerk van de server aan uw tailnet te adverteren.
Een firewall is slechts één beveiligingslaag. Deze bepaalt wat een poort kan bereiken, maar vertraagt niet iemand die een openstaande poort, zoals SSH, aanvalt. Voeg hiervoor Fail2ban voor SSH toe om herhaaldelijke overtreders te blokkeren. 'Defence in depth' betekent dat elke laag de zwaktes van de andere lagen opvangt.
Een firewall is pas zinvol als u begrijpt wat poorten zijn en hoe services luisteren. Het configureren van een firewall is een essentiële stap in de eerste 10 minuten op een nieuwe VPS.
FAQ
Zal het inschakelen van UFW mijn SSH-sessie verbreken?
Niet als u SSH eerst toestaat. Voer sudo ufw allow 22/tcp uit vóór sudo ufw enable; uw verbinding blijft actief omdat de firewall poort 22 nu toestaat. Het gevaar is het inschakelen van een firewall met een standaard weigeringsbeleid zonder een SSH-toestemmingsregel, waardoor u wordt afgesloten. Mocht dit gebeuren, log dan in via de VNC- of seriële console van uw provider en voer ufw disable uit.
Welke poorten moet ik openen op een VPS?
Alleen de poorten die u aanbiedt aan het publiek. SSH (22/tcp) zodat u de server kunt beheren, en HTTP en HTTPS (80/tcp, 443/tcp) als u een website draait. Laat al het overige geblokkeerd. Interne services zoals databases moeten binden aan 127.0.0.1 en krijgen helemaal geen firewallregel, zodat ze nooit bereikbaar zijn vanaf het netwerk.
Ondersteunt UFW IPv6?
Op moderne Ubuntu-systemen wel: IPV6=yes is ingesteld in /etc/default/ufw, dus elke regel is van toepassing op beide stacks en ufw status toont de IPv6-regels met een (v6)-achtervoegsel. De manieren waarop dit alsnog mis kan gaan, worden behandeld in de IPv6-firewallvalstrik.
Hoe verwijder ik een UFW-regel?
Voer sudo ufw status numbered uit om de regels met indexnummers weer te geven, en vervolgens sudo ufw delete N waarbij N het nummer is van de regel die u wilt verwijderen. U kunt ook verwijderen op specificatie, bijvoorbeeld sudo ufw delete allow 80/tcp.
Hoe sta ik een poort alleen toe vanaf één IP-adres?
Gebruik een from-regel in plaats van een standaard allow. Om alleen uw kantooradres toegang te geven tot PostgreSQL, voert u sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp uit. Bij een standaard weigeringsbeleid is de poort voor iedereen gesloten totdat een regel deze opent, dus deze from-regel is de enige toegangsweg: het hele internet blijft geblokkeerd en alleen het adres dat u opgeeft krijgt toegang. Voeg niet ook een standaard allow 5432/tcp toe, want dan opent u de poort voor iedereen. Dit is de veiligste manier om een database of beheerpaneel bloot te stellen. Controleer dit met sudo ufw status verbose, die het bronadres naast de poort toont.