UFW Essentials: veelvoorkomende firewallregels en commando’s

Introductie

UFW (Ungecompliceerde Firewall) is een firewall-configuratietool die draait bovenop iptables, standaard meegeleverd binnen Ubuntu-distributies. Het biedt een gestroomlijnde interface voor het configureren van veelvoorkomende firewallgevallen via de commandoregel.

Deze spiekbriefstijlgids biedt een snelle referentie naar veelvoorkomende UFW-gebruiksscenario’s en commando’s, inclusief voorbeelden van het toestaan en blokkeren van services op poorten, netwerkinterfaces en bron-IP-adressen.

Hoe deze gids te gebruiken

  • Deze gids is in spiekbrief-formaat met op zichzelf staande commandoregelfragmenten.
  • Spring naar elk gedeelte dat relevant is voor de taak die je probeert te voltooien.
  • Wanneer je gemarkeerde tekst ziet in de commando’s van deze gids, houd dan in gedachten dat deze tekst moet verwijzen naar IP-adressen van je eigen netwerk.

Vergeet niet dat je je huidige UFW-regelset kunt controleren met sudo ufw status of sudo ufw status verbose.

Breng je frontend-applicaties in productie vanuit GitHub met behulp van DigitalOcean App Platform. Laat DigitalOcean zich richten op het schalen van je app.

Controleer UFW-status

Om te controleren of ufw is ingeschakeld, voer het volgende commando uit:

  1. sudo ufw status
Output
Status: inactive

Het resultaat zal aangeven of je firewall actief is of niet.

Activeer UFW

Als je een Status: inactive bericht krijgt wanneer je ufw status uitvoert, betekent dit dat de firewall nog niet is ingeschakeld op het systeem. Je moet een commando uitvoeren om het in te schakelen.

Standaard zal UFW, wanneer ingeschakeld, externe toegang tot alle poorten op een server blokkeren. In de praktijk betekent dit dat als je via SSH verbonden bent met een server en ufw inschakelt voordat je toegang via de SSH-poort toestaat, je wordt verbroken. Zorg ervoor dat je de sectie over hoe SSH-toegang in te schakelen van deze handleiding volgt voordat je de firewall inschakelt als dat het geval is.

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

  1. sudo ufw enable

Je ziet een uitvoer zoals deze:

Output
Firewall is active and enabled on system startup

Om te zien wat momenteel geblokkeerd of toegestaan is, kun je de verbose parameter gebruiken bij het uitvoeren van ufw status, als volgt:

  1. sudo ufw status
Output
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip

UFW uitschakelen

Als je om wat voor reden dan ook UFW moet uitschakelen, kan dit met het volgende commando:

  1. sudo ufw disable

Wees ervan bewust dat dit commando de firewall-service volledig uitschakelt op je systeem.

Blokkeer een IP-adres

Om alle netwerkverbindingen die afkomstig zijn van een specifiek IP-adres te blokkeren, voert u de volgende opdracht uit, waarbij u het gemarkeerde IP-adres vervangt door het IP-adres dat u wilt blokkeren:

  1. sudo ufw deny from 203.0.113.100
Output
Rule added

In dit voorbeeld geeft van 203.0.113.100 een bron IP-adres aan van “203.0.113.100”.

Als u nu sudo ufw status uitvoert, ziet u het opgegeven IP-adres vermeld als geweigerd:

Output
Status: active To Action From -- ------ ---- Anywhere DENY 203.0.113.100

Alle verbindingen, inkomend of uitgaand, zijn geblokkeerd voor het opgegeven IP-adres.

Blokkeer een subnet

Als u een volledig subnet moet blokkeren, kunt u het subnetadres als van parameter gebruiken bij de ufw deny opdracht. Hiermee worden alle IP-adressen in het voorbeeld subnet 203.0.113.0/24 geblokkeerd:

  1. sudo ufw deny from 203.0.113.0/24
Output
Rule added

Blokkeer inkomende verbindingen naar een netwerkinterface

Om inkomende verbindingen van een specifiek IP-adres naar een specifieke netwerkinterface te blokkeren, voer je het volgende commando uit, waarbij je het gemarkeerde IP-adres vervangt door het IP-adres dat je wilt blokkeren:

  1. sudo ufw deny in on eth0 from 203.0.113.100
Output
Rule added

De in parameter vertelt ufw om de regel alleen toe te passen voor inkomende verbindingen, en de on eth0 parameter geeft aan dat de regel alleen geldt voor de eth0 interface. Dit kan handig zijn als je een systeem hebt met meerdere netwerkinterfaces (inclusief virtuele) en je externe toegang tot sommige van deze interfaces wilt blokkeren, maar niet allemaal.

Sta een IP-adres toe

Om alle netwerkverbindingen toe te staan die afkomstig zijn van een specifiek IP-adres, voer je het volgende commando uit, waarbij je het gemarkeerde IP-adres vervangt door het IP-adres dat je toegang wilt geven:

  1. sudo ufw allow from 203.0.113.101
Output
Rule added

Als je nu sudo ufw status uitvoert, zie je een output vergelijkbaar met deze, waarbij het woord ALLOW naast het IP-adres dat je zojuist hebt toegevoegd staat.

Output
Status: active To Action From -- ------ ---- ... Anywhere ALLOW 203.0.113.101

Je kunt ook verbindingen van een heel subnet toestaan door het overeenkomstige subnetmasker voor een host op te geven, zoals 203.0.113.0/24.

Sta inkomende verbindingen toe naar een netwerkinterface

Om inkomende verbindingen van een specifiek IP-adres naar een specifieke netwerkinterface toe te staan, voert u het volgende commando uit, waarbij u het gemarkeerde IP-adres vervangt door het IP-adres dat u wilt toestaan:

  1. sudo ufw allow in on eth0 from 203.0.113.102
Output
Rule added

De in-parameter vertelt ufw om de regel alleen toe te passen voor inkomende verbindingen, en de on eth0-parameter specificeert dat de regel alleen geldt voor de eth0-interface.

Als u nu sudo ufw status uitvoert, ziet u een uitvoer die hierop lijkt:

Output
Status: active To Action From -- ------ ---- ... Anywhere on eth0 ALLOW 203.0.113.102

UFW-regel verwijderen

Om een regel die u eerder hebt ingesteld binnen UFW te verwijderen, gebruikt u ufw delete gevolgd door de regel (allow of deny) en de doelspecificatie. Het volgende voorbeeld zou een regel verwijderen die eerder was ingesteld om alle verbindingen van een IP-adres van 203.0.113.101 toe te staan:

  1. sudo ufw delete allow from 203.0.113.101
Output
Rule deleted

Nog een manier om aan te geven welke regel u wilt verwijderen, is door de regel-ID te verstrekken. Deze informatie kan worden verkregen met het volgende commando:

  1. sudo ufw status numbered
Output
Status: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 203.0.113.100 [ 2] Anywhere on eth0 ALLOW IN 203.0.113.102

Uit de uitvoer kunt u zien dat er twee actieve regels zijn. De eerste regel, met gemarkeerde waarden, weigert alle verbindingen die afkomstig zijn van het IP-adres 203.0.113.100. De tweede regel staat verbindingen op de eth0-interface toe die binnenkomen vanaf het IP-adres 203.0.113.102.

Omdat UFW standaard al het externe verkeer blokkeert tenzij expliciet toegestaan, is de eerste regel overbodig, dus je kunt deze verwijderen. Om een regel te verwijderen op basis van zijn ID, voer het volgende uit:

  1. sudo ufw delete 1

Je krijgt een prompt om de bewerking te bevestigen en om er zeker van te zijn dat de ID die je opgeeft verwijst naar de juiste regel die je wilt verwijderen.

Output
Deleting: deny from 203.0.113.100 Proceed with operation (y|n)? y Rule deleted

Als je je regels opnieuw wilt bekijken met sudo ufw status, zul je zien dat de regel is verwijderd.

Lijst met beschikbare toepassingsprofielen

Bij installatie zullen toepassingen die afhankelijk zijn van netwerkcommunicatie doorgaans een UFW-profiel instellen dat je kunt gebruiken om verbinding van externe adressen toe te staan. Dit komt vaak overeen met het uitvoeren van ufw allow from, met het voordeel dat het een snelkoppeling biedt die de specifieke poortnummers abstracteert die een service gebruikt en een gebruiksvriendelijke benaming biedt voor gerefereerde services.

Om te zien welke profielen momenteel beschikbaar zijn, voer het volgende uit:

  1. sudo ufw app list

Als je een service zoals een webserver of andere netwerkafhankelijke software hebt geïnstalleerd en er geen profiel beschikbaar is in UFW, controleer dan eerst of de service is ingeschakeld. Voor externe servers heb je meestal OpenSSH direct beschikbaar:

Output
Available applications: OpenSSH

Applicatieprofiel inschakelen

Om een UFW-applicatieprofiel in te schakelen, voert u ufw allow uit, gevolgd door de naam van het applicatieprofiel dat u wilt inschakelen, dat u kunt verkrijgen met een sudo ufw app list commando. In het volgende voorbeeld schakelen we het OpenSSH-profiel in, waardoor alle inkomende SSH-verbindingen op de standaard SSH-poort worden toegestaan.

  1. sudo ufw allow “OpenSSH”
Output
Rule added Rule added (v6)

Vergeet niet om profielnamen te citeren die uit meerdere woorden bestaan, zoals Nginx HTTPS.

Applicatieprofiel uitschakelen

Om een eerder ingesteld applicatieprofiel binnen UFW uit te schakelen, moet u de overeenkomstige regel verwijderen. Neem bijvoorbeeld de volgende uitvoer van sudo ufw status:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

Deze uitvoer geeft aan dat het Nginx Full applicatieprofiel momenteel is ingeschakeld, waardoor alle verbindingen met de webserver via zowel HTTP als HTTPS worden toegestaan. Als u alleen HTTPS-verzoeken van en naar uw webserver wilt toestaan, moet u eerst de meest restrictieve regel inschakelen, wat in dit geval Nginx HTTPS zou zijn, en vervolgens de momenteel actieve Nginx Full regel uitschakelen:

  1. sudo ufw allow "Nginx HTTPS"
  2. sudo ufw delete allow "Nginx Full"

Onthoud dat je alle beschikbare toepassingsprofielen kunt bekijken met sudo ufw app list.

SSH toestaan

Wanneer je werkt met externe servers, wil je ervoor zorgen dat de SSH-poort open staat voor verbindingen, zodat je op afstand kunt inloggen op je server.

Met het volgende commando wordt het OpenSSH UFW-toepassingsprofiel ingeschakeld en worden alle verbindingen naar de standaard SSH-poort op de server toegestaan:

  1. sudo ufw allow OpenSSH
Output
Rule added Rule added (v6)

Hoewel minder gebruiksvriendelijk, is een alternatieve syntaxis om het exacte poortnummer van de SSH-service op te geven, dat doorgaans standaard is ingesteld op 22:

  1. sudo ufw allow 22
Output
Rule added Rule added (v6)

Inkomende SSH toestaan vanaf een specifiek IP-adres of subnet

Om inkomende verbindingen vanaf een specifiek IP-adres of subnet toe te staan, voeg je een from-richtlijn toe om de bron van de verbinding te definiëren. Hierbij moet je ook het bestemmingsadres specificeren met een to-parameter. Om deze regel te beperken tot alleen SSH, moet je het proto (protocol) beperken tot tcp en vervolgens de port-parameter gebruiken en deze instellen op 22, de standaard poort van SSH.

De volgende opdracht staat alleen SSH-verbindingen toe vanaf het IP-adres 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 proto tcp to any port 22
Output
Rule added

Je kunt ook een subnetadres als from-parameter gebruiken om inkomende SSH-verbindingen van een heel netwerk toe te staan:

  1. sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22
Output
Rule added

Sta Inkomende Rsync toe vanaf Specifiek IP-adres of Subnetwerk

Het programma Rsync, dat op poort 873 draait, kan worden gebruikt om bestanden van de ene computer naar de andere te transfereren.

Om inkomende rsync-verbindingen vanaf een specifiek IP-adres of subnetwerk toe te staan, gebruik je de from-parameter om het bron-IP-adres te specificeren en de port-parameter om de bestemmingspoort 873 in te stellen.
De volgende opdracht staat alleen Rsync-verbindingen toe vanaf het IP-adres 203.0.113.103:

  1. sudo ufw allow from 203.0.113.103 to any port 873
Output
Rule added

Om het hele 203.0.113.0/24-subnet in staat te stellen om naar je server te rsync‘en, voer je het volgende uit:

  1. sudo ufw allow from 203.0.113.0/24 to any port 873
Output
Rule added

Sta Nginx HTTP / HTTPS toe

Bij installatie maakt de Nginx-webserver verschillende UFW-profielen aan binnen de server. Zodra u Nginx hebt geïnstalleerd en ingeschakeld als service, voert u de volgende opdracht uit om te identificeren welke profielen beschikbaar zijn:

  1. sudo ufw app list | grep Nginx
Output
Nginx Full Nginx HTTP Nginx HTTPS

Om zowel HTTP- als HTTPS-verkeer mogelijk te maken, kiest u Nginx Volledig. Kies anders Nginx HTTP om alleen HTTP toe te staan of Nginx HTTPS om alleen HTTPS toe te staan.

Met de volgende opdracht wordt zowel HTTP- als HTTPS-verkeer op de server toegestaan (poorten 80 en 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Sta Apache HTTP/HTTPS toe

Bij installatie maakt de Apache-webserver verschillende UFW-profielen aan binnen de server. Zodra u Apache hebt geïnstalleerd en ingeschakeld als service, voert u de volgende opdracht uit om te identificeren welke profielen beschikbaar zijn:

  1. sudo ufw app list | grep Apache
Output
Apache Apache Full Apache Secure

Om zowel HTTP- als HTTPS-verkeer mogelijk te maken, kiest u Apache Volledig. Kies anders Apache voor HTTP of Apache Veilig voor HTTPS.

Met de volgende opdracht wordt zowel HTTP- als HTTPS-verkeer op de server toegestaan (poorten 80 en 443):

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Sta al het inkomende HTTP-verkeer toe (poort 80)

Web servers, zoals Apache en Nginx, luisteren meestal naar HTTP-verzoeken op poort 80. Als uw standaardbeleid voor inkomend verkeer is ingesteld op afwijzen of weigeren, moet u een UFW-regel maken om externe toegang op poort 80 toe te staan. U kunt zowel het poortnummer als de servicenaam (http) als parameter voor dit commando gebruiken.

Om alle inkomende HTTP (poort 80) verbindingen toe te staan, voert u het volgende uit:

  1. sudo ufw allow http
Output
Rule added Rule added (v6)

Een alternatieve syntax is om het poortnummer van de HTTP-service te specificeren:

  1. sudo ufw allow 80
Output
Rule added Rule added (v6)

Alle inkomende HTTPS (poort 443) toestaan

HTTPS draait meestal op poort 443. Als uw standaardbeleid voor inkomend verkeer is ingesteld op afwijzen of weigeren, moet u een UFW-regel maken om externe toegang op poort 443 toe te staan. U kunt zowel het poortnummer als de servicenaam (https) als parameter voor dit commando gebruiken.

Om alle inkomende HTTPS (poort 443) verbindingen toe te staan, voert u het volgende uit:

  1. sudo ufw allow https
Output
Rule added Rule added (v6)

Een alternatieve syntax is om het poortnummer van de HTTPS-service te specificeren:

  1. sudo ufw allow 443
Output
Rule added Rule added (v6)

Alle inkomende HTTP- en HTTPS-verbindingen toestaan

Als u zowel HTTP- als HTTPS-verkeer wilt toestaan, kunt u een enkele regel maken die beide poorten toestaat. Voor dit gebruik moet u ook het protocol definiëren met de proto-parameter, die in dit geval moet worden ingesteld op tcp.

Om alle inkomende HTTP- en HTTPS-verbindingen (poorten 80 en 443) toe te staan, voert u het volgende uit:

  1. sudo ufw allow proto tcp from any to any port 80,443
Output
Rule added Rule added (v6)

MySQL-verbinding toestaan vanaf een specifiek IP-adres of subnet

MySQL luistert naar clientverbindingen op poort 3306. Als uw MySQL-databaseserver wordt gebruikt door een client op een externe server, moet u een UFW-regel maken om die toegang toe te staan.

Om inkomende MySQL-verbindingen van een specifiek IP-adres of subnet toe te staan, gebruikt u de from-parameter om het bron-IP-adres op te geven en de port-parameter om de bestemmingspoort 3306 in te stellen.

Met het volgende commando wordt het IP-adres 203.0.113.103 toegestaan om verbinding te maken met de MySQL-poort van de server:

  1. sudo ufw allow from 203.0.113.103 to any port 3306
Output
Rule added

Om het hele subnet 203.0.113.0/24 in staat te stellen verbinding te maken met uw MySQL-server, voert u uit:

  1. sudo ufw allow from 203.0.113.0/24 to any port 3306
Output
Rule added

Toestaan van PostgreSQL-verbinding vanaf specifiek IP-adres of subnetwerk

PostgreSQL luistert naar clientverbindingen op poort 5432. Als uw PostgreSQL-databaseserver wordt gebruikt door een client op een externe server, moet u ervoor zorgen dat dat verkeer is toegestaan.

Om inkomende PostgreSQL-verbindingen toe te staan vanaf een specifiek IP-adres of subnetwerk, specificeert u de bron met de parameter from, en stelt u de poort in op 5432:

  1. sudo ufw allow from 203.0.113.103 to any port 5432
Output
Rule added

Om het volledige subnetwerk 203.0.113.0/24 in staat te stellen verbinding te maken met uw PostgreSQL-server, voert u het volgende uit:

  1. sudo ufw allow from 203.0.113.0/24 to any port 5432
Output
Rule added

Blokkeren van uitgaande SMTP-e-mail

Mail servers, zoals Sendmail en Postfix, gebruiken typisch poort 25 voor SMTP-verkeer. Als uw server geen uitgaande e-mail moet verzenden, wilt u mogelijk dat soort verkeer blokkeren. Om uitgaande SMTP-verbindingen te blokkeren, voert u het volgende uit:

  1. sudo ufw deny out 25
Output
Rule added Rule added (v6)

Dit configureert uw firewall om alle uitgaand verkeer op poort 25 te laten vallen. Als u uitgaande verbindingen op een ander poortnummer wilt afwijzen, kunt u dit commando herhalen en 25 vervangen door het poortnummer dat u wilt blokkeren.

Conclusie

UFW is een krachtige tool die de beveiliging van uw servers aanzienlijk kan verbeteren wanneer deze correct is geconfigureerd. Deze referentiegids behandelt enkele veelvoorkomende UFW-regels die vaak worden gebruikt om een firewall op Ubuntu te configureren.

De meeste commando’s in deze gids kunnen worden aangepast aan verschillende gebruiksgevallen en scenario’s door parameters zoals het bron-IP-adres en/of de bestemmingspoort te wijzigen. Voor meer gedetailleerde informatie over elke commandoparameter en beschikbare modificatoren kunt u het man-hulpprogramma gebruiken om de handleiding van UFW te controleren:

  1. man ufw

De officiële UFW-pagina in de documentatie van Ubuntu is een andere bron die u kunt gebruiken als referentie voor meer geavanceerde gebruiksgevallen en voorbeelden.

Source:
https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands