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:
OutputStatus: 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:
Je ziet een uitvoer zoals deze:
OutputFirewall 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:
OutputStatus: 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:
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:
OutputRule 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:
OutputStatus: 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:
OutputRule 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:
OutputRule 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:
OutputRule 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.
OutputStatus: 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:
OutputRule 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:
OutputStatus: 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:
OutputRule 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:
OutputStatus: 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:
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.
OutputDeleting:
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:
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:
OutputAvailable 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.
OutputRule 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
:
OutputStatus: 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:
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:
OutputRule 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
:
OutputRule 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
:
OutputRule added
Je kunt ook een subnetadres als from
-parameter gebruiken om inkomende SSH-verbindingen van een heel netwerk toe te staan:
OutputRule 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
:
OutputRule 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:
OutputRule 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:
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
):
OutputRule 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:
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
):
OutputRule 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:
OutputRule added
Rule added (v6)
Een alternatieve syntax is om het poortnummer van de HTTP-service te specificeren:
OutputRule 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:
OutputRule added
Rule added (v6)
Een alternatieve syntax is om het poortnummer van de HTTPS-service te specificeren:
OutputRule 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:
OutputRule 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:
OutputRule added
Om het hele subnet 203.0.113.0/24
in staat te stellen verbinding te maken met uw MySQL-server, voert u uit:
OutputRule 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
:
OutputRule 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:
OutputRule 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:
OutputRule 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:
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