Ga naar hoofdinhoud

Online zetten: de firewall

Je server staat op internet, en programma's lopen de hele dag alle adressen af om binnen te komen. Inloggen kan bij jou alleen nog met een sleutel. Nu doe je de andere deuren dicht: alleen wat je site nodig heeft, blijft open.

Een firewall​

Een firewall bepaalt welke poorten van buiten bereikbaar zijn. Op Ubuntu heet hij ufw (uncomplicated firewall). Je hebt drie deuren nodig: ssh om in te loggen, 80 voor http en 443 voor https.

Let op: de volgorde doet ertoe. Zet je de firewall aan voordat ssh erdoor mag, dan sluit je jezelf buiten. Typ de regels daarom precies in deze volgorde, met ufw enable als laatste:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

ufw enable waarschuwt nog een keer:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Typ y. Er staat dan Firewall is active and enabled on system startup. Kijk wat er openstaat:

sudo ufw status
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

Elke deur staat er twee keer: één keer voor gewone internetadressen, en met (v6) voor de nieuwere IPv6-adressen. Wat niet in de lijst staat, houdt ufw tegen. Ook als je later per ongeluk een programma op 0.0.0.0 laat luisteren. Met één uitzondering, en dat is Docker; die zie je in les 32.

Controlevraag
Je firewall laat alleen OpenSSH, 80 en 443 door. Je start op de server een programma dat op 0.0.0.0:5000 luistert, zonder Docker. Een klasgenoot opent het adres van je server met :5000 erachter. Wat gebeurt er?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Jezelf buitengesloten​

ssh: connect to host 203.0.113.10 port 22: Connection timed out

Oorzaak: de firewall staat aan, maar ssh mag er niet door.

Oplossing: bijna elk hostingbedrijf heeft in zijn beheerpagina een console: een terminal in je browser, die niet via ssh gaat. Log daar in en zet ssh open:

sudo ufw allow OpenSSH

Opdrachten​

Opdracht 1: Investigate - Wat luistert er?​

Kijk met sudo ss -tlnp welke programma's luisteren. Welke luisteren op 0.0.0.0, * of [::], dus op internet? Staat elk daarvan in ufw status?

Antwoord

Op een verse Ubuntu 24.04 luistert alleen ssh op internet, op poort 22, en die staat open. Daarnaast zie je 127.0.0.53 en 127.0.0.54 op poort 53: dat is systemd-resolved, dat namen opzoekt voor de server zelf, alleen op 127.0.0.…. Bij jouw hostingbedrijf kan er meer staan. Staat er iets op 0.0.0.0 dat je niet kent, zoek dan uit wat het is; de firewall houdt het tegen, maar een programma dat je niet nodig hebt, zet je beter uit.

Door naar les 29: updates vanzelf.