Inleiding
UFW, of Uncomplicated Firewall, is een interface voor iptables
dat is geoptimaliseerd voor het vereenvoudigen van het configureren van een firewall. Hoewel iptables
een solide en flexibel gereedschap is, kan het moeilijk zijn voor beginners om te leren hoe ze het gebruiken om een firewall correct te configureren. Als u beginnen gaat met het beveiligen van uw netwerk en u niet weet welk gereedschap u moet gebruiken, is UFW misschien de juiste keuze voor u.
Dit handleiding zal u leren hoe u een firewall kunt instellen met UFW op Ubuntu v18.04 en hoger.
Vereisten
Als u Ubuntu versie 16.04 of lager gebruikt, raden we u aan om te upgraden naar een nieuwere versie, omdat Ubuntu geen ondersteuning meer biedt voor deze versies. Dit verzameling gidsen zal u helpen bij het upgraden van uw Ubuntu-versie.
Om deze handleiding te volgen, heeft u nodig:
- A server running Ubuntu, met een gebruiker die niet-root is en
sudo
privilegees heeft. Voor instructies over hoe deze op te stellen, kies je distributie uit deze lijst en volg onze Initial Server Setup Guide. -
UFW is standaard geïnstalleerd op Ubuntu. Als het voor somethings redenom een andere reden om UFW te installeren, kan je hem installeren met
sudo apt install ufw
.
Ubuntu firewall met UFW configureren
- IPv6 inschakelen
- Standaard politieken instellen
- Sta SSH-verbindingen toe
- UFW inschakelen
- Sta andere vereiste verbindingen toe
- Verboden verbindingen
- Firewallregels verwijderen
- Controleer UFW-status en regels
- Hoe je de firewall op Ubuntu uitschakelt of herstelt
Stapel 1 — IPv6 inschakelen
In de meeste versies van Ubuntu is IPv6 standaard ingeschakeld. In de praktijk betekent dat het meestal dat alle firewall-regels die op de server worden toegevoegd zowel een IPv4 als een IPv6 versie inhouden, waarbij de laatste door v6
wordt gedetecteerd in de uitvoer van de UFW-statuscommando. Om te vergewissen of IPv6 is ingeschakeld, kun je je configuratiebestand bij /etc/default/ufw
openen met nano
of je favoriete commando-lijneeditor:
Zorg dan dat de waarde van IPV6
is gezet op yes
. Het zou er dan zo uitzien:
Sla de wijzigingen op en sluit het bestand af. Als je nano
gebruikt, kan je dat doen door CTRL+X
, Y
en ENTER
te typen.
Wanneer UFW later in deze guide wordt ingeschakeld, wordt het geconfigureerd om voor IPv4 en IPv6 firewall-regels te schrijven.
Stapel 2 — Standaardpolitieën instellen
Als je met UFW begint, is een goede eerste stap om te controleren wat de standaard firewall-politieën zijn. Deze regels controleren hoe uw trafiek wordt behandeld wanneer het niet expliciet aan een andere regel komt te pas.
Standaard is UFW ingesteld op ‘weigeren alle inkomende verbindingen’ en ’toestaan alle uitgaande verbindingen’. Dit betekent dat iedereen die probeert met uw server te verbinden niet in staat zal zijn te verbinden, terwijl elke toepassing binnen het server gehecht wel in staat zal zijn de buitenwereld te bereiken. Bijkomende regels om specifieke diensten en poorten toe te staan zijn inbegrepen als uitzonderingen op deze algemene beleid.
Om zeker te zijn dat u verder kunt volgen met de rest van deze handleiding, zal u nu uw UFW standaardbeleid voor inkomende en uitgaande traffic instellen.
Om het standaard UFW inkomende beleid te instellen op weigeren
, voert u het volgende uit:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Om het standaard UFW uitgaande beleid te instellen op toestaan
, voert u het volgende uit:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Deze commando’s stellen de standaarden in op weigeren van inkomende en toestaan van uitgaande verbindingen. Deze brandmerk defaults alleen zouden genoeg kunnen zijn voor een persoonlijke computer, maar servers moeten typisch reageren op inkomende aanvragen van externe gebruikers. We zullen dat volgend bekijken.
Stap 3 — Toestaan van SSH-verbindingen
Als u uw UFW vuurwal nu zou activeren, zou het alle inkomende verbindingen weigeren. Dit betekent dat u regels moet maken die expliciet legitieme inkomende verbindingen toestaan — bijvoorbeeld SSH- of HTTP-verbindingen — als u wilt dat uw server op die soort aanvragen reageert. Als u een cloud-server gebruikt, zal u waarschijnlijk inkomende SSH-verbindingen willen toestaan zodat u naar en uw server kunt beheren.
Sta de OpenSSH UFW Applicatieprofiel Toe
Bij de installatie zal het merendeel van de applicaties die afhankelijk zijn van netwerkverbindingen een applicatieprofiel registreren binnen UFW, wat gebruikers in staat stelt om snel extern toegang tot een dienst toe te staan of te weigeren. Je kunt controleren welke profielen momenteel geregistreerd zijn in UFW met:
OutputAvailable applications:
OpenSSH
Om het OpenSSH applicatieprofiel in te schakelen, voer het volgende uit:
OutputRule added
Rule added (v6)
Dit zal firewallregels maken om alle verbindingen op poort 22
toe te staan, wat de poort is waar de SSH-daemon standaard naar luistert.
SSH Toestaan op Naam van Dienst
Een andere manier om UFW te configureren om inkomende SSH-verbindingen toe te staan, is door naar de naam van de dienst te verwijzen: ssh
.
OutputRule added
Rule added (v6)
UFW weet welke poorten en protocollen een dienst gebruikt op basis van het bestand /etc/services
.
SSH Toestaan op Poortnummer
Uit alternatieve gezichtspunten kunt u de gelijke regel opgeven door het specificeren van de poort in plaats van het toepassingsprofiel of dienstnaam. Bijvoorbeeld, deze opdracht werkt hetzelfde als de voorgaande voorbeelden:
OutputRule added
Rule added (v6)
Als u uw SSH-daemon heeft geconfigureerd om een andere poort te gebruiken, moet u de juiste poort specificeren. Bijvoorbeeld, als uw SSH-server liest op poort 2222
, kunt u deze opdracht gebruiken om verbindingen op deze poort toe te staan:
OutputRule added
Rule added (v6)
Nu uw brandmaak is ingesteld om inkomende SSH-verbindingen toe te staan, kunt u deze activeren.
Stap 4 — UFW activeren
Uw brandmaak zou nu moeten zijn ingesteld om SSH-verbindingen toe te staan. Om te verifiëren welke regels tot nu toe zijn toegevoegd, zelfs als de brandmaak nog niet is geactiveerd, kunt u gebruik maken van:
OutputAdded user rules (see 'ufw status' for running firewall):
ufw allow OpenSSH
Na het bevestigen dat u een regel heeft om inkomende SSH-verbindingen toe te staan, kunt u de brandmaak activeren met:
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
U krijgt een waarschuwing dat zegt dat de opdracht bestaande SSH-verbindingen kan verstoren. U heeft al een brandmaakregel ingesteld die SSH-verbindingen toestaat, dus het zou goed zijn door te gaan. Reactieer op het aanroepingsscherm met y
en druk op ENTER
.
De brandmaak is nu actief. Voer de opdracht sudo ufw status verbose
uit om de ingestelde regels te zien. De rest van deze handleiding beschrijft hoe u UFW in detail kan gebruiken, zoals het toestaan of verhinderen van verschillende soorten verbindingen.
Stapel 5 — Toevoegen van andere connecties
Op deze manier moet je alle andere verbindingen toevoegen die je server nodig heeft om te reageren. De verbindingen die je toevoegt, hangen af van de specifieke behoeften die je hebt. Je kent al hoe je regels schrijft die verbindingen toevoegen gebaseerd zijn op een applicatieprofiel, een servicenaam of een poort; je hebt dit al gedaan voor SSH op poort 22
. Je kunt ook zo doen met:
- HTTP op poort 80, wat ongecryptede webservers gebruiken, met
sudo ufw allow http
ofsudo ufw allow 80
- HTTPS op poort 443, wat encryptiede webservers gebruiken, met
sudo ufw allow https
ofsudo ufw allow 443
- Apache met beide HTTP en HTTPS, met
sudo ufw allow 'Apache Full'
- Nginx met beide HTTP en HTTPS, met
sudo ufw allow 'Nginx Full'
Vergeten niet te controleren welke applicatieprofielen beschikbaar zijn voor je server met sudo ufw app list
.
Er zijn meerdere manieren om verbindingen toe te voegen, buiten het specificeren van een poort of bekende service naam. We zien er een paar van in de volgende stappen.
Specifieke portranges
Je kunt portrangen specificeren met UFW. Sommige applicaties gebruiken meerdere ports in plaats van een enkele port.
Bijvoorbeeld, om X11-connecties toe te laten, die gebruik maken van de poorten 6000
–6007
, gebruik je deze opdrachten:
Wanneer je portrangen specifiek wilt definieren met UFW, moet je het protocool (tcp
of udp
) specificeren waar de regels van toepassing zijn. We hebben dit niet eerder gezegd omdat je bij het niet specificeren automatisch beide protocollen toestaat, wat in de meeste gevallen goed is.
Specifieke IP-adressen
Wanneer je werkt met UFW, kun je ook IP-adressen specificeren binnen je regels. Bijvoorbeeld, als je verbindingen wilt toestaan van een specifieke IP-adres, zoals een werk- of thuis IP-adres van 203.0.113.4
, moet je de from
parameter gebruiken, met daarin het IP-adres dat je toestaan wil:
OutputRule added
Je kan ook een poort toevoegen waarop het IP-adres wordt toegestaan door to any port
te volgen met de poortnummer. Bijvoorbeeld, als je 203.0.113.4
wilt verbinden aan poort 22
(SSH), gebruik je deze opdracht:
OutputRule added
Subnetten
Als je een subnet van IP-adressen wilt toevoegen, kun je dat doen met behulp van de CIDR-notatie, om een netmask te specificeren. Bijvoorbeeld, als je alle IP-adressen wilt toevoegen die van 203.0.113.1
tot en met 203.0.113.254
zijn, kunt je dit commando gebruiken:
OutputRule added
Zoals bij het toevoegen van een subnet aan een bepaalde netwerkinterface; we zullen hierbij de poort 22
(SSH) als voorbeeld nemen:
OutputRule added
Toekomstige verbindingen naar een specifieke netwerkinterface
Als je een firewallregel wilt maken die alleen toegepast wordt op een specifieke netwerkinterface, kan je dat doen door “allow in on” te gebruiken gevolgd door de naam van de netwerkinterface.
Je moet mogelijk je netwerkinterfaces bekijken voordat je verdergaat. Om dat te doen, gebruik je deze commando:
Output Excerpt2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .
De uitvoer onder de lijn geeft aan welke netwerkinterface namen er zijn. Ze zijn vaak genaamd iets als eth0
of enp3s2
.
Dus, als je een publieke netwerkinterface hebt genaamd eth0
, kunt je HTTP-traffic (poort 80
) toevoegen met deze commando:
OutputRule added
Rule added (v6)
Door deze opdracht zouden je server enkel HTTP-verzoeken kunnen ontvangen van de openbare internet.
Om je MySQL-databaserver (poort 3306
) te laten luisteren voor verbindingen op de privénetwerkinterface eth1
, bijvoorbeeld, kunt u deze commando gebruiken:
OutputRule added
Rule added (v6)
Dit zou ervoor zorgen dat andere servers op je privénetwerk aan de MySQL-database kunnen verbinden.
Stap 6 — Toekomstige verbindingen afsluiten
Als u het standaard beleid voor inkomende connecties niet heeft gewijzigd, is UFW ingesteld om alle inkomende connecties te blokkeren. In principe maakt dit het proces van het maken van een veilige brandweerpolitie simpeler door u te verplichten om regels te schrijven die specifiek toelaten welke poorten en IP-adressen er toegestaan moeten worden.
Maar soms wilt u specifieke verbindingen afsluiten op basis van de bron-IP-adres of subnet, misschien omdat u weet dat uw server wordt aangevallen van daar. Ook als u wilt veranderen van de standaard incomende politie naar toevoegen (waarvan niet geadviseerd wordt), moet u afsluitenregels schrijven voor elke dienst of IP-adres waarvoor u geen connecties wilt toevoegen.
Om afsluitenregels te schrijven, kunt u de eerder beschreven commando’s gebruiken, met toevoegen in plaats van blokkeren.
Bijvoorbeeld, om HTTP-verbindingen te blokkeren, kan u deze commando gebruiken:
OutputRule added
Rule added (v6)
Of als u alle verbindingen wilt blokkeren van 203.0.113.4
gebruikt u deze commando:
OutputRule added
Als je sommige gevallen wilt blokkeren waarin de server uitgaande verbindingen maakt, kun je alle gebruikers van de server blokkeren die een poort op de server gebruiken, zoals poort 25
voor SMTP-traffic. Om alle uitgaande SMTP-traffic op de server te blokkeren, kunt u deny out
volgens het portnummer gebruiken:
OutputRule added
Rule added (v6)
Dit zal alle uitgaande SMTP-traffic op de server blokkeren.
Stap 7: Delete Rules
Kennis over hoe je regels van de firewall verwijdert is net zo belangrijk als over hoe je ze aanmaakt. Er zijn twee verschillende manieren om te specificeren welke regels te verwijderen: door middel van het regelnummer of door middel van een menselijke benaming (zelfs als de regels werden gecreerd).
Verwijderen van een UFW-regel Naar Nummer
Om een UFW-regel te verwijderen met behulp van zijn nummer, moet je eerst een nummerslijst van alle firewall-regels krijgen. De UFW status commando heeft een optie om nummers bij elke regel te laten weergeven, zoals hieronder getoond wordt:
Numbered Output:Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
Als je besluit dat je de regel met het nummer 2 wilt verwijderen, die toegestaan heeft aan connecties via poort 80 (HTTP), dan kan je deze specificeren in een UFW delete commando zoals dit:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted
Dit zal je prompt voor een bevestiging brengen en regel 2, die HTTP-connecties toestaat, verwijderen. Noteer dat je ook de corresponderende IPv6-regel zou moeten verwijderen als je IPv6 is ingeschakeld.
Verwijderen van een UFW-regel op naam
In plaats van regelnummers te gebruiken, kun je ook verwijzen naar een regel op basis van de voor mensen leesbare naam, die gebaseerd is op het type regel (meestal allow
of deny
) en de naam van de dienst of het poortnummer dat het doel van deze regel was, of de naam van het toepassingprofiel indien dat werd gebruikt. Bijvoorbeeld, als je een allow
-regel wilt verwijderen voor een toepassingprofiel genaamd Apache Full
dat eerder is ingeschakeld, kun je gebruiken:
OutputRule deleted
Rule deleted (v6)
De delete
-opdracht werkt op dezelfde manier voor regels die zijn gemaakt met referentie naar een dienst op naam of poort. Bijvoorbeeld, als je eerder een regel hebt ingesteld om HTTP-verbindingen toe te staan met sudo ufw allow http
, dit is hoe je die regel kunt verwijderen:
OutputRule deleted
Rule deleted (v6)
Omdat dienstnamen wisselbaar zijn met poortnummers bij het specificeren van regels, kun je ook verwijzen naar dezelfde regel als allow 80
, in plaats van allow http
:
OutputRule deleted
Rule deleted (v6)
Bij het verwijderen van UFW-regels op naam, worden zowel IPv4- als IPv6-regels verwijderd als ze bestaan.
Stap 8 — Controleren van UFW-status en regels
Op elk moment kun je de status van UFW controleren met deze opdracht:
Als UFW is gedisabled, wat het standaard is, zie je iets als dit:
OutputStatus: inactive
Als UFW actief is, wat je moet hebben als je de stap 3 volgde, zegt de uitvoer dat het actief is en lijst alle regels die zijn ingesteld. Bijvoorbeeld, als de firewall is ingesteld om SSH-connecties te accepteren vanuit elke locatie (poort 22
), ziet de uitvoer er dan bijvoorbeeld als volgende uit:
OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Gebruik de status
opdracht als je wilt weten hoe UFW de firewall heeft configureerd.
Stap 9 — Deactiveren of Resetten van de Firewall
Als je besluit dat je geen gebruik wilt maken van de UFW firewall, kunt je hem deactiveringen met deze commando:
OutputFirewall stopped and disabled on system startup
Alle regels die je met UFW hebt gemaakt zullen niet meer actief zijn. Je kan altijd sudo ufw enable
gebruiken als je later noodzaak hebt om het te activeren.
Als je al UFW-regels hebt geconfigureerd maar je besluit dat je een nieuwe start wil beginnen, kun je de reset-opdracht gebruiken:
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.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'
Dit zal UFW deactiveren en alle eerder definiënde regels verwijderen. Dit zou je normale instellingen laten blijven, als je ze op enige moment had gewijzigd.
Deploy your frontend applications from GitHub using DigitalOcean App Platform. Let DigitalOcean focus on scaling your app.
Conclusie
Uw firewall is nu geconfigureerd om ten minste SSH-verbindingen toe te staan. Zorg ervoor dat u ook andere inkomende verbindingen toestaat die uw server nodig heeft, terwijl u onnodige verbindingen beperkt, zodat uw server functioneel en veilig blijft.
Om meer algemene UFW-configuraties te leren, kunt u de handleiding UFW Essentials: Common Firewall Rules and Commands raadplegen.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-20-04