Introductie
Het opzetten van een goed functionerende firewall is cruciaal voor het beveiligen van uw cloudserver. Voorheen werd het opzetten van een firewall gedaan via ingewikkelde of archaïsche hulpprogramma’s. Veel van deze hulpprogramma’s (bijv. iptables
) hebben veel functionaliteit ingebouwd, maar vereisen wel extra inspanning van de gebruiker om ze te leren en te begrijpen.
Een andere optie is UFW, of Uncomplicated Firewall. UFW is een frontend voor iptables
die tot doel heeft een gebruikersvriendelijkere interface te bieden dan andere firewallbeheerhulpprogramma’s. UFW wordt goed ondersteund in de Linux-gemeenschap en is doorgaans standaard geïnstalleerd op veel distributies.
In deze tutorial zult u een firewall opzetten met behulp van UFW om een Ubuntu- of Debian-cloudserver te beveiligen. U leert ook hoe u standaardregels voor UFW instelt om verbindingen voor poorten en IP-adressen toe te staan of te weigeren, regels die u hebt gemaakt te verwijderen, UFW uit te schakelen en in te schakelen, en alles terug te zetten naar de standaardinstellingen indien gewenst.
Vereisten
Om deze tutorial te volgen, heb je een server nodig die draait op Ubuntu of Debian. Je server moet een niet-root gebruiker hebben met sudo-rechten. Om dit in te stellen voor Ubuntu, volg onze gids over Initiële serverconfiguratie met Ubuntu 20.04. Om dit in te stellen voor Debian, volg onze gids over Initiële serverconfiguratie met Debian 11. Beide initiële serverconfiguratiegidsen zullen ervoor zorgen dat je UFW geïnstalleerd hebt op je machine en dat je een veilige omgeving hebt waarin je firewallregels kunt oefenen.
IPv6 gebruiken met UFW
Als je Virtuele Privéserver (VPS) geconfigureerd is voor IPv6, zorg ervoor dat UFW geconfigureerd is om IPv6 te ondersteunen, zodat het zowel je IPv4 als IPv6 firewallregels configureert. Om dit te doen, open het UFW configuratiebestand in je favoriete teksteditor. Hier zullen we nano
gebruiken:
Bevestig dat IPV6
is ingesteld op ja
:
/etc/default/ufw# /etc/default/ufw
#
# Stel in op ja om regels toe te passen om IPv6 te ondersteunen (nee betekent alleen IPv6 op loopback
# geaccepteerd). Je moet de firewall 'uitschakelen' en dan 'inschakelen' voor
# de wijzigingen van kracht worden.
IPV6=yes
…
Nadat je je wijzigingen hebt aangebracht, sla je het bestand op en verlaat je het. Als je nano
gebruikt, druk dan op CTRL + X
, Y
en vervolgens op ENTER
.
Herstart nu je firewall door deze eerst uit te schakelen:
OutputFirewall stopped and disabled on system startup
Vervolgens schakel je hem weer in:
OutputFirewall is active and enabled on system startup
Je UFW-firewall is nu ingesteld om de firewall te configureren voor zowel IPv4 als IPv6 wanneer dit nodig is. Vervolgens pas je standaardregels aan voor verbindingen met je firewall.
Instellen van UFW-Standaarden
Je kunt de efficiëntie van je firewall verbeteren door standaardregels te definiëren voor het toestaan en weigeren van verbindingen. De standaardinstelling van UFW is om alle inkomende verbindingen te weigeren en alle uitgaande verbindingen toe te staan. Dit betekent dat iedereen die probeert contact te maken met je server geen verbinding kan maken, terwijl elke toepassing binnen de server extern verbinding kan maken. Om de standaardregels die door UFW zijn ingesteld bij te werken, adresseer eerst de regel voor inkomende verbindingen:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Daarna de regel voor uitgaande verbindingen:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Let op: Als je restrictiever wilt zijn, kun je alle uitgaande verzoeken weigeren. Deze optie is gebaseerd op persoonlijke voorkeur. Bijvoorbeeld, als je een cloudserver hebt die naar het publiek is gericht, kan het helpen om alle soorten externe shell-verbindingen te voorkomen. Het maakt je firewall echter wel lastiger te beheren omdat je regels moet instellen voor alle uitgaande verbindingen. Je kunt dit instellen als standaard met het volgende:
Toestaan van verbindingen met de firewall
Het toestaan van verbindingen vereist het wijzigen van de firewallregels, wat je kunt doen door opdrachten uit te voeren in de terminal. Als je bijvoorbeeld nu je firewall zou inschakelen, zou deze alle inkomende verbindingen weigeren. Als je via SSH verbonden bent met je server, zou dit een probleem zijn omdat je dan buitengesloten zou worden van je server. Voorkom dat dit gebeurt door SSH-verbindingen naar je server toe te staan:
Als je wijzigingen succesvol waren, ontvang je de volgende uitvoer:
OutputRule added
Rule added (v6)
UFW wordt geleverd met enkele standaardinstellingen zoals het ssh
-commando dat in het vorige voorbeeld werd gebruikt. Je kunt ook inkomende verbindingen toestaan op poort 22/tcp
, wat hetzelfde bereikt met Transmission Control Protocol (TCP):
Als je dit probeert nadat je al allow ssh
hebt uitgevoerd, ontvang je echter het volgende bericht omdat de regel al bestaat:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
Als je SSH-server op poort 2222
draait, kun je verbindingen toestaan met dezelfde syntax, maar vervang het met poort 2222
. Let op dat als je het poortnummer op zichzelf gebruikt, dit ook van invloed is op tcp
en udp
:
OutputRule added
Rule added (v6)
Beveiligen van Web Servers
Om een webserver met File Transfer Protocol (FTP) toegang te beveiligen, moet je verbindingen toestaan voor poort 80/tcp
.
Het toestaan van verbindingen voor poort 80
is nuttig voor webservers zoals Apache en Nginx die luisteren naar HTTP-verbindingsverzoeken. Om dit te doen, sta verbindingen toe naar poort 80/tcp
:
UFW biedt doorgaans de profielen met de benodigde regels voor de werking van de webserver. Zo niet, dan kunnen de webserverprofielen worden opgeslagen als “WWW” en open zijn als ftp
of tcp
, zoals in de volgende voorbeelden:
Je kunt ook ftp
of poort 21
gebruiken om FTP-verbindingen toe te staan:
Voor FTP-verbindingen moet je ook verbindingen toestaan voor poort 20
:
Je aanpassingen zullen afhangen van welke poorten en services je moet openen, en testen kan noodzakelijk zijn. Vergeet niet om je SSH-verbinding ook toegestaan te laten.
Het specificeren van poortreeksen
U kunt ook bereiken met UFW door het specificeren van reeksen poorten om toe te staan of te weigeren. Om dit te doen, moet u eerst de poort aan het laagste uiteinde van het bereik specificeren, gevolgd door een dubbelepunt (:
), en vervolgens het hoogste uiteinde van het bereik. Ten slotte moet u aangeven welk protocol (ofwel tcp
of udp
) u wilt dat de regels van toepassing zijn.
Bijvoorbeeld, het volgende commando zal TCP-toegang toestaan tot elke poort van 1000
tot 2000
, inclusief:
Vergelijkbaar zal het volgende commando UDP-verbindingen weigeren tot elke poort van 1234
tot 4321
:
Het specificeren van IP-adressen
U kunt verbindingen vanaf een specifiek IP-adres toestaan, zoals in het volgende voorbeeld. Zorg ervoor dat u het IP-adres vervangt door uw eigen informatie:
Zoals deze voorbeelden laten zien, heeft u veel flexibiliteit als het gaat om het aanpassen van firewallregels door selectief bepaalde poorten en IP-adresverbindingen toe te staan. Bekijk onze handleiding voor meer informatie over het toestaan van inkomende verbindingen vanaf een specifiek IP-adres of subnet.
Verbindingen weigeren
Als je alle poorten van je server wilt openen — wat niet wordt aanbevolen — dan kun je alle verbindingen toestaan en vervolgens de poorten die je geen toegang wilt geven, weigeren. Het volgende voorbeeld laat zien hoe je toegang tot poort 80
zou weigeren:
Regels verwijderen
Als je sommige van de door jou ingestelde regels wilt verwijderen, gebruik dan delete
en geef de regel op die je wilt elimineren:
OutputRule deleted
Rule deleted (v6)
Als de regels lang en complex zijn, is er een alternatieve tweestappenbenadering. Genereer eerst een genummerde lijst van de huidige regels:
Vervolgens, met deze genummerde lijst, bekijk welke regels momenteel zijn toegestaan en verwijder de regel door naar zijn nummer te verwijzen:
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
Bijvoorbeeld, als poort 80
nummer 4 op de lijst is, zou je de volgende syntaxis gebruiken. Je kunt ook een vraag krijgen of je wilt doorgaan met de operatie. Je kunt ja y
of nee n
beslissen:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
UFW inschakelen
Zodra je alle regels hebt gedefinieerd die je op je firewall wilt toepassen, kun je UFW inschakelen zodat het ze gaat afdwingen. Als je via SSH verbinding maakt, zorg er dan voor dat je SSH-poort, meestal poort 22
, wordt ingesteld om verbindingen te ontvangen. Anders zou je jezelf buiten je server kunnen sluiten:
OutputFirewall is active and enabled on system startup
Om te bevestigen dat je wijzigingen zijn doorgevoerd, controleer je de status om de lijst met regels te bekijken:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
Je kunt ook verbose
gebruiken voor een meer uitgebreide uitvoer:
Om UFW uit te schakelen, voer je het volgende commando uit:
OutputFirewall stopped and disabled on system startup
Standaardinstellingen herstellen
Als je om de een of andere reden de regels van je cloudserver wilt herstellen naar hun standaardinstellingen, kun je dat doen met het ufw reset
-commando. Houd er rekening mee dat je een prompt krijgt om y
of n
te schrijven voordat je alles reset, aangezien dit bestaande SSH-verbindingen kan verstoren:
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
Door terug te gaan naar de standaardinstellingen wordt UFW uitgeschakeld en worden eventuele eerder gedefinieerde regels verwijderd. De standaardinstellingen veranderen echter niet naar hun oorspronkelijke instellingen als je ze hebt aangepast. Nu kun je fris beginnen met UFW en je regels en verbindingen aanpassen aan je voorkeur.
Conclusie
In deze tutorial heb je geleerd hoe je je cloudserver kunt instellen en configureren om toegang tot een subset van poorten of IP-adressen toe te staan of te beperken. Daarnaast heb je geoefend met het verwijderen van regels die je niet langer wilt en het bevestigen van die wijzigingen door je UFW-firewall uit te schakelen en vervolgens weer in te schakelen. Ten slotte heb je geleerd hoe je je UFW-firewall kunt resetten naar de standaardinstellingen. Om meer te lezen over wat er mogelijk is met UFW, bekijk onze gids over UFW Essentials: Common Firewall Rules and Commands.