Hoe een firewall in te stellen met UFW op een Ubuntu en Debian Cloud Server

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:

  1. sudo nano /etc/default/ufw

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:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Vervolgens schakel je hem weer in:

  1. sudo ufw enable
Output
Firewall 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:

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

Daarna de regel voor uitgaande verbindingen:

  1. sudo ufw default allow outgoing
Output
Default 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:

  1. sudo ufw default deny outgoing

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:

  1. sudo ufw allow ssh

Als je wijzigingen succesvol waren, ontvang je de volgende uitvoer:

Output
Rule 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):

  1. sudo ufw allow 22/tcp

Als je dit probeert nadat je al allow ssh hebt uitgevoerd, ontvang je echter het volgende bericht omdat de regel al bestaat:

Output
Skipping 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:

  1. sudo ufw allow 2222/tcp
Output
Rule 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:

  1. sudo ufw allow 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:

  1. sudo ufw allow www

Je kunt ook ftp of poort 21 gebruiken om FTP-verbindingen toe te staan:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

Voor FTP-verbindingen moet je ook verbindingen toestaan voor poort 20:

  1. sudo ufw allow 20/tcp

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:

  1. sudo ufw allow 1000:2000/tcp

Vergelijkbaar zal het volgende commando UDP-verbindingen weigeren tot elke poort van 1234 tot 4321:

  1. sudo ufw deny 1234:4321/udp

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:

  1. sudo ufw allow from your_server_ip

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:

  1. sudo ufw deny 80/tcp

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:

  1. sudo ufw delete allow 80/tcp
Output
Rule 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:

  1. sudo ufw status numbered

Vervolgens, met deze genummerde lijst, bekijk welke regels momenteel zijn toegestaan en verwijder de regel door naar zijn nummer te verwijzen:

  1. sudo ufw delete number
Output
Status: 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:

  1. sudo ufw delete 4
Output
Deleting: 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:

  1. sudo ufw enable
Output
Firewall 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:

  1. sudo ufw status
Output
Status: 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:

  1. sudo ufw status verbose

Om UFW uit te schakelen, voer je het volgende commando uit:

  1. sudo ufw disable
Output
Firewall 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:

  1. sudo ufw reset
Output
Resetting 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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server