Ga direct naar de lesinhoud

DARJA RIHLA/LINUX LAB

MODULE 00 · SESSION PROTOCOLLES 1 / 31ALLEEN LEZEN

Linux Learning Console

Eén leeromgeving voor de Linux- en securityleerlijn van Darja Rihla. Links staat het curriculum, in het midden de actieve les, rechts wat die les wel en niet bewijst. De volgorde is niet willekeurig: elke module rust op de module eronder.

Hoe deze pagina werkt

1 · Kies een les

Links staat de hele lijst. Klik op een les en die komt in het midden te staan. Onderaan kun je met Vorige en Volgende door de lijst lopen. Begin gewoon bij 00.01 en werk naar beneden.

2 · Lees de les

Elke les is op dezelfde manier opgebouwd, zodat je nooit hoeft te zoeken:

  • Vraag — wat je te weten wilt komen
  • Context — waarom dat ertoe doet
  • Commando — wat je typt
  • Voorbeelduitvoer — wat je ongeveer terugkrijgt
  • Interpretatie — wat dat antwoord betekent
  • Dit bewijst niet — waar je conclusie moet stoppen
  • Verifieer — hoe je nagaat of je het goed hebt

3 · Typ het zelf

Onder de les staat een oefenterminal. Dat is een nagemaakte Linux-computer in je browser. Er zit geen echt netwerk achter en je kunt er niets stukmaken — ook niet als je expres iets raars typt.

Je hebt drie manieren om te oefenen:

  • Alleen hier — klik op Probeer in de oefenterminal. Veilig, en je ziet meteen wat een commando doet.
  • Alleen op je eigen computer — klik op Kopieer voor je eigen terminal en plak het in je echte terminal. Dan zie je jouw eigen machine, niet een verzonnen machine.
  • Allebei — dat werkt het beste. Eerst hier oefenen tot je snapt wat je ziet, daarna hetzelfde op je eigen machine en de twee vergelijken. Waar ze verschillen, leer je het meest.

Zit je vast in de oefenterminal? Typ help. Met Tab vult hij woorden aan en met pijl omhoog haal je je vorige commando terug — net als in een echte terminal.

4 · Houd bij wat je hebt aangetoond

Rechts van elke les staat wat die les wel en niet bewijst. Daaronder kun je zelf aanvinken of je een les hebt geoefend of geverifieerd. Dat vinkje zet jijzelf: de pagina kan niet zien of je het commando echt hebt gedraaid. Het staat alleen in deze browser, op dit apparaat.

Eén regel die altijd geldt. De commando’s uit module 05 tot en met 07 kijken naar netwerken. Op je eigen computer en je eigen wifi mag dat. Op het netwerk van school, van de buren of van een winkel mag het niet — dat is strafbaar, ook als je alleen maar nieuwsgierig was. De oefenterminal weigert daarom zelf ook alles buiten zijn eigen netwerk.

Drie vragen voor je begint

Geen strikvragen. Ze gaan over de drie dingen waar het in deze leerlijn steeds om draait: weet waar je bent, weet wat je gemeten hebt, en weet waar je mag kijken.

Vraag 1 van 3Je wilt weten welke apparaten er op je eigen thuisnetwerk staan. Je typt meteen: sudo nmap -sn 192.168.1.0/24. Wat is daar mis mee?
Vraag 2 van 3Je scan meldt: 7 hosts up. Wat weet je nu met zekerheid?
Vraag 3 van 3Op welke netwerken mag jij de commando's uit module 05 tot en met 07 uitvoeren?

Zonder JavaScript staan de antwoorden hierboven gewoon te lezen. Dat is geen fout: deze vragen zijn een leermoment, geen slot. Wie de lessen wil lezen, kan dat altijd.

Methode

UNDERSTAND → PRACTICE → APPLY → VERIFY → SECURE → HARDEN

Beginnerslessen doorlopen understand, practice en verify. Securitylabs voegen scope, evidence en harden toe. Geen enkele les eindigt bij “het werkt”; elke les eindigt bij “dit heb ik aangetoond, en dit nog niet”.

Opbouw van de leerlijnNegen lagen van beneden naar boven: session protocol, terminal en filesystem, system control, network awareness, evidence en baseline, host security, home network, router, en als buitenste laag internet en externe blootstelling. Elke laag rust op de laag eronder.INTERNET / EXTERNAL EXPOSURE09ROUTER07HOME NETWORK06HOST SECURITY05EVIDENCE & BASELINE04NETWORK AWARENESS03SYSTEM CONTROL02TERMINAL & FILESYSTEM01SESSION PROTOCOL00
De leerlijn van binnen naar buiten. De actieve module wordt geaccentueerd.

Toegestane scope

Eigen apparaat, eigen thuisnetwerk, of een netwerk waarvoor je expliciete toestemming hebt. Dezelfde gereedschappen die je hier defensief gebruikt, zijn op andermans netwerk strafbaar. Alle adressen, MAC-adressen en namen in deze lessen zijn geanonimiseerd; er staat geen enkel gegeven uit een werkelijke scan in.

Wat de leerlijn oplevert

  • 04host-baseline.mdVastgelegde normale toestand van één machine.
  • 05host-security-review.mdBeoordeling van rechten, diensten en firewall op die machine.
  • 06network-assets.mdWat er op je eigen netwerk staat en wat het aanbiedt.
  • 07router-review.mdWat je router aanbiedt aan de binnenkant en wat hij over zichzelf zegt.
  • —home-security-report.mdEindrapport: de vier documenten hierboven samengebracht.

Deze documenten schrijf je zelf, in je eigen werkmap. De console genereert ze niet.

MODULE 00 · SESSION PROTOCOLLES 00.011 van 31

Bepaal je scope voordat je iets aanraakt

Scope is geen formaliteit. Het is het verschil tussen oefenen en inbreken.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Op welke machines en op welk netwerk mag jij vanavond werken?

Context

In module 05 tot en met 07 leer je gereedschap kennen dat op je eigen netwerk normaal is en op andermans netwerk strafbaar. Hetzelfde commando, andere plek, ander gevolg. Daarom begint elke sessie met opschrijven waar je grens ligt — vóór het eerste commando, niet erna.

Commando

echo "SCOPE $(date +%F): eigen laptop + eigen thuisnetwerk" >> ~/linux-scope.txt

Voorbeelduitvoer (geanonimiseerd)

(geen uitvoer — het bestand groeit met één regel)

Interpretatie

Je hebt een regel op schijf gezet met een datum eraan. Dat is geen bureaucratie: als je over drie weken een logbestand terugleest, staat er nu bij wat je toen als toegestaan beschouwde.

Dit bewijst niet

Dit bewijst niet dat je toestemming hebt. Het legt alleen vast wat jij als scope hebt aangenomen. Voor apparaten van huisgenoten, werkgevers of buren heb je hun toestemming nodig, niet je eigen regel.

Verifieer

Open het bestand met cat ~/linux-scope.txt. Staat er precies één regel per sessie, met datum?

MODULE 00 · SESSION PROTOCOLLES 00.022 van 31

Neem je sessie op

Wat je niet hebt opgenomen, kun je later niet nakijken.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Hoe bewaar je alles wat er tijdens deze les over je scherm gaat?

Context

script schrijft je hele terminalsessie naar een bestand: wat jij typte én wat de machine antwoordde. Je gebruikt het niet omdat je iets fout verwacht, maar omdat je bij een verrassing wilt kunnen terugkijken naar wat er werkelijk stond in plaats van naar wat je je herinnert.

Commando

script -q -f ~/linux-les-$(date +%Y-%m-%d_%H-%M-%S).log

Voorbeelduitvoer (geanonimiseerd)

(de prompt komt terug; vanaf nu wordt alles meegeschreven)

Interpretatie

-q onderdrukt de begin- en eindmelding. -f schrijft na elke regel weg, zodat het bestand ook bruikbaar is als de sessie onverwacht stopt. De datum in de naam maakt van elk logbestand een uniek moment.

Dit bewijst niet

Een logbestand bewijst niet dat een commando gelukt is. Het bewijst alleen wat er op het scherm stond. Uitvoer lezen blijft jouw werk.

Verifieer

Typ ls ~/linux-les-*.log in een tweede terminal. Groeit het bestand terwijl je typt?

MODULE 00 · SESSION PROTOCOLLES 00.033 van 31

Sluit af en bewaar het bewijs

Observe first, change later, verify — en pas dan het log dichtdoen.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Hoe sluit je een sessie af zodat het log compleet en leesbaar is?

Context

Een sessie die je wegklikt in plaats van afsluit, laat een half log achter. exit sluit de opname netjes. Daarna controleer je of het bestand er staat en hoe groot het is, want een leeg log heeft niemand iets aan.

Commando

exit
ls -l ~/linux-les-*.log | tail -3

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

-rw------- 1 [user] [user] 14231 [datum] /home/[user]/linux-les-[timestamp].log

Interpretatie

De rechten -rw——- betekenen dat alleen jij het bestand kunt lezen. Dat hoort zo: in een sessielog staan hostnamen, gebruikersnamen en soms interne adressen.

Dit bewijst niet

Dit bewijst niet dat het log veilig staat. Het staat op je home-partitie, in leesbare tekst. Wat je ermee doet — bewaren, versleutelen, verwijderen — is een aparte beslissing.

Verifieer

Open het log met less en zoek je eerste commando terug. Staat het er letterlijk?

MODULE 01 · TERMINAL & FILESYSTEMLES 01.014 van 31

De terminal

Een plek waar je één zin typt en één antwoord krijgt.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Wat is een terminal eigenlijk, en hoe weet je dat hij naar je luistert?

Context

De terminal is geen programma dat iets doet. Het is een plek waar je één regel intypt en de machine één antwoord teruggeeft. Drie commando's zijn genoeg om te merken dat het werkt.

Commando

pwd
whoami
date

Voorbeelduitvoer (geanonimiseerd)

/home/[user]
[user]
[huidige datum en tijd]

Interpretatie

pwd vertelt waar je staat, whoami wie je bent, date hoe laat de machine denkt dat het is. Alle drie veranderen niets. Ze rapporteren alleen.

Verifieer

Sluit de terminal, open hem opnieuw en typ pwd. Sta je weer op dezelfde plek?

MODULE 01 · TERMINAL & FILESYSTEMLES 01.025 van 31

Waar je bent

Alles op de machine hangt aan één punt.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Hoe zie je wat er op deze plek staat, en hoe ga je ergens anders heen?

Context

Linux heeft geen losse schijven met letters. Alles hangt aan één punt: /. Elke map is een aftakking. ls laat zien wat er is, cd verplaatst je, en punten aan het begin van een naam betekenen verborgen.

Commando

ls
cd Documents
cd ..
ls -a

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

Documents  Downloads  Pictures
(geen uitvoer)
(geen uitvoer)
.  ..  .bashrc  .config  Documents  Downloads

Interpretatie

ls -a toont ook de namen die met een punt beginnen. Dat zijn geen geheime bestanden; het is een afspraak dat configuratie niet in de weg hoort te zitten. cd .. gaat één niveau omhoog.

Dit bewijst niet

Dat je iets niet ziet met ls, bewijst niet dat het er niet is. Het bewijst dat het niet in deze map staat, of dat het verborgen is, of dat je het niet mag zien.

Verifieer

Typ pwd na elke cd. Klopt je verwachting met wat er staat?

MODULE 01 · TERMINAL & FILESYSTEMLES 01.036 van 31

In een bestand kijken

Lezen is niet veranderen.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Hoe lees je een bestand zonder het per ongeluk te wijzigen?

Context

cat, head en wc raken de inhoud niet aan. Ze lezen. Dat onderscheid — lezen tegenover schrijven — is de basis onder alles wat je in module 05 en verder gaat doen.

Commando

cat notes.txt
head shopping-list.txt
wc -l shopping-list.txt
cat /etc/os-release

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

(inhoud van het bestand)
(eerste tien regels)
14 shopping-list.txt
NAME="[distributie]"
VERSION="[versie]"

Interpretatie

/etc/os-release is het eerste systeembestand dat je leest. Het staat buiten je eigen map en je mag het gewoon lezen: het is bedoeld om te vertellen welk systeem dit is.

Dit bewijst niet

De inhoud van /etc/os-release is wat het systeem over zichzelf zegt. Bij een aangepaste of verouderde installatie hoeft dat niet overeen te komen met wat er werkelijk draait.

Verifieer

Voer cat notes.txt twee keer uit. Is de uitvoer identiek? Dan heb je niets veranderd.

MODULE 02 · SYSTEM CONTROLLES 02.017 van 31

Wat er draait

De machine doet veel meer dan jij gevraagd hebt.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke processen draaien er op dit moment, en van wie zijn ze?

Context

Je hebt drie programma's geopend en er draaien er honderd. De rest is het systeem zelf. ps laat zien wat er is; top laat zien hoe het verandert.

Commando

ps
ps aux
top

Voorbeelduitvoer (geanonimiseerd)

  PID TTY          TIME CMD
 2841 pts/0    00:00:00 bash
[user]  2841  0.0  0.1  bash
root     1  0.0  0.1  /sbin/init

Interpretatie

De eerste kolom in ps aux is de eigenaar. Processen van root zijn systeemprocessen. Processen met jouw naam heb jij gestart, direct of via je bureaublad.

Dit bewijst niet

ps toont wat er draait op het moment dat je kijkt. Een proces dat één seconde geleden stopte of één seconde later start, staat er niet in. Eén ps is een momentopname, geen bewaking.

Verifieer

Voer ps aux | wc -l twee keer uit met een paar seconden ertussen. Verschilt het aantal?

MODULE 02 · SYSTEM CONTROLLES 02.028 van 31

Wie je bent

Toestemming is geen instelling. Het is wie je bent.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Wat mag jouw account wel en niet, en waar zie je dat aan?

Context

id laat zien in welke groepen je zit. Die groepen bepalen wat je mag. ls -l laat per bestand zien wie de eigenaar is en wat anderen ermee mogen. Samen vormen ze het rechtenmodel.

Commando

id
ls -l
cd /root
sudo ls /root

Voorbeelduitvoer (geanonimiseerd)

uid=1000([user]) gid=1000([user]) groups=1000([user]),27(sudo),...
-rw-r--r-- 1 [user] [user] 220 notes.txt
bash: cd: /root: Toegang geweigerd
(inhoud van /root)

Interpretatie

De weigering bij cd /root is geen storing. Het is het systeem dat zichzelf beschermt. Met sudo doe je hetzelfde als root, en dan mag het wél — dat is precies waarom sudo gevaarlijk is.

Dit bewijst niet

Dat jij in de groep sudo zit, bewijst niet dat je alles mag. sudo -l (module 05) laat pas zien wat je werkelijk mag draaien.

Verifieer

Vergelijk de groepen uit id met de uitvoer van groups. Komen ze overeen?

MODULE 02 · SYSTEM CONTROLLES 02.039 van 31

Programma's die blijven

Sommige dingen draaien omdat iemand besloot dat ze altijd moeten draaien.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Wat is het verschil tussen een programma dat nu draait en een programma dat altijd start?

Context

systemd beheert diensten. Een dienst kan actief zijn (draait nu) en enabled (start bij het opstarten). Dat zijn twee verschillende dingen, en dat verschil komt in module 05 terug als securityvraag.

Commando

systemctl status ssh
systemctl is-active ssh
systemctl is-enabled docker
systemctl list-units

Voorbeelduitvoer (geanonimiseerd)

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (...; enabled)
   Active: active (running)
active
enabled

Interpretatie

Onthoud de ketting: geïnstalleerd is niet hetzelfde als draaiend, draaiend is niet hetzelfde als enabled, en enabled is niet hetzelfde als actief op dit moment.

Dit bewijst niet

is-enabled zegt iets over de volgende keer opstarten, niet over nu. is-active zegt iets over nu, niet over straks. Je hebt beide antwoorden nodig.

Verifieer

Voer voor dezelfde dienst is-active én is-enabled uit. Kun je uitleggen waarom ze kunnen verschillen?

MODULE 03 · NETWORK AWARENESSLES 03.0110 van 31

Op het netwerk

Je machine heeft meer dan één adres.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke netwerkadressen heeft deze machine, en waar gaat verkeer naartoe?

Context

Een laptop heeft bijna altijd meer dan één interface: loopback, wifi, soms ethernet of een VPN. Elk daarvan heeft een eigen adres en een eigen betekenis.

Commando

ip -brief address
ip route
hostname

Voorbeelduitvoer (geanonimiseerd)

lo    UNKNOWN  127.0.0.1/8
wlp3s0 UP      192.168.x.x/24
default via 192.168.x.1 dev wlp3s0
[hostname]

Interpretatie

127.0.0.1 is de machine zelf en verlaat nooit het apparaat. Het adres op wlp3s0 is je plek in het lokale netwerk. De regel met default via wijst de gateway aan: alles wat niet lokaal is, gaat daarheen.

Dit bewijst niet

Dit adres is wat je machine denkt te hebben. Het bewijst niet dat je vanaf buiten bereikbaar bent, en ook niet dat dit je publieke IP-adres is.

Verifieer

Zoek in ip route de regel die met default begint. Komt dat adres overeen met je router?

MODULE 03 · NETWORK AWARENESSLES 03.0211 van 31

Wat er luistert

Sommige programma's zitten te wachten tot er geklopt wordt.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke programma's op deze machine staan open voor binnenkomende verbindingen?

Context

Een luisterende socket is een programma dat op een poort wacht. Zonder sudo zie je de poorten maar niet altijd welk programma erachter zit; met sudo wel. Dat verschil is de kern van deze les.

Commando

ss -tulpn
sudo ss -tulpn

Voorbeelduitvoer (geanonimiseerd)

tcp  LISTEN  0  128  127.0.0.1:631   0.0.0.0:*
tcp  LISTEN  0  128  0.0.0.0:22      0.0.0.0:*  users:(("sshd",pid=...))

Interpretatie

Let op het adres vóór de dubbele punt. 127.0.0.1:631 luistert alleen naar de machine zelf. 0.0.0.0:22 luistert naar élke interface — dus ook naar je thuisnetwerk.

Dit bewijst niet

Een luisterende poort bewijst niet dat iemand erbij kan. Een firewall of NAT kan ertussen zitten. Wat je hier ziet is de bedoeling van het programma, niet de werkelijke bereikbaarheid.

Verifieer

Zoek voor elke regel met 0.0.0.0 het programma op. Weet je waarom het draait?

MODULE 04 · EVIDENCE & BASELINELES 04.0112 van 31

Wie erbij kan

Je eerste echte veiligheidsafweging.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Van de dingen die luisteren: welke horen daar, en welke staan er alleen omdat niemand ze heeft uitgezet?

Context

Nu combineer je drie commando's die je los al kent. De vraag is niet meer wat er staat, maar of het er hoort te staan. Dat is de eerste keer dat je een oordeel velt in plaats van een lijst leest.

Commando

sudo ss -tulpn
ip -brief address
systemctl is-enabled cups

Voorbeelduitvoer (geanonimiseerd)

tcp LISTEN 0.0.0.0:631 users:(("cupsd"))
wlp3s0 UP 192.168.x.x/24
enabled

Interpretatie

Een printerdienst die op 0.0.0.0 luistert, is bereikbaar voor iedereen op je wifi. Als je niet print vanaf andere apparaten, is dat aanbod zonder afnemer.

Dit bewijst niet

Dit bewijst niet dat je gehackt bent of dat er misbruik is gemaakt. Het toont aanvalsoppervlak, niet een aanval. Die twee door elkaar halen is de meest gemaakte beginnersfout in security.

Verifieer

Kun je voor élke luisterende poort in één zin zeggen waarom hij open staat? Kan dat niet, dan is dat je volgende vraag, niet je conclusie.

MODULE 04 · EVIDENCE & BASELINELES 04.0213 van 31

Schrijf het op

Een baseline is pas een baseline als hij op schijf staat.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Hoe zag normaal eruit op de dag dat er nog niets aan de hand was?

Context

Een baseline is de vastgelegde normale toestand. Zonder baseline kun je later niet zien dat er iets veranderd is — je hebt dan alleen een gevoel. Dit is het eerste artifact dat je oplevert.

Commando

sudo ss -tulpn > ~/baseline-poorten.txt
ip -brief address > ~/baseline-adressen.txt
systemctl list-unit-files --state=enabled > ~/baseline-diensten.txt

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

(drie bestanden, elk met de uitvoer van het commando ervoor)

Interpretatie

Drie bestanden met een datum eromheen zijn samen je host-baseline. Over een maand voer je dezelfde drie commando's uit en vergelijk je met diff. Verschil is dan zichtbaar in plaats van vermoed.

Dit bewijst niet

Een baseline bewijst niet dat de machine schoon was toen je hem maakte. Hij legt vast wat de toestand wás. Als er op dat moment al iets mis was, leg je dat mee vast.

Verifieer

Voer de drie commando's morgen opnieuw uit en vergelijk met diff. Is het verschil nul?

Levert op

Deze module werkt toe naar het document host-baseline.md.

MODULE 05 · HOST SECURITYLES 05.0114 van 31

Systeemidentiteit

Voor je iets beoordeelt, stel je vast wát je beoordeelt.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welk systeem is dit precies, en welke kernel draait eronder?

Context

Een securitycontrole zonder systeemidentiteit is niet reproduceerbaar. Advies dat klopt voor de ene versie kan onzin zijn voor de andere. hostnamectl is één commando dat alles in één keer geeft.

Commando

hostnamectl

Voorbeelduitvoer (geanonimiseerd)

 Static hostname: [hostname]
       Icon name: computer-laptop
 Operating System: [distributie] [versie]
          Kernel: Linux [versie]
    Architecture: x86-64

Interpretatie

Distributie plus kernelversie bepalen welke adviezen op jouw machine van toepassing zijn. Noteer ze boven aan je host-security-review; anders is die review over een half jaar onbruikbaar.

Dit bewijst niet

De kernelversie hier is de draaiende kernel. Als er een update is geïnstalleerd maar nog niet herstart, staat de nieuwe versie op schijf en de oude in het geheugen.

Verifieer

Vergelijk de kernel uit hostnamectl met uname -r. Zijn ze gelijk?

MODULE 05 · HOST SECURITYLES 05.0215 van 31

Wat jouw account mag

Groepslidmaatschap is stille macht.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

In welke groepen zit je, en welke daarvan geven feitelijk beheerderrechten?

Context

Niet elke groep is onschuldig. sudo is de bekende. docker is de onbekende: wie in de groep docker zit, kan een container starten die de hele schijf koppelt. Dat is beheerderstoegang zonder dat er sudo staat.

Commando

id

Voorbeelduitvoer (geanonimiseerd)

uid=1000([user]) gid=1000([user]) groups=1000([user]),27(sudo),135(docker),...

Interpretatie

Lees deze regel groep voor groep. sudo en docker zijn allebei paden naar root. adm en systemd-journal geven leestoegang tot logs. De rest is meestal hardware of bureaublad.

Dit bewijst niet

Lidmaatschap van de groep sudo bewijst niet wat je daarmee mag. Sudo-regels kunnen per commando beperkt zijn. De volgende les kijkt daarnaar.

Verifieer

Noem voor elke groep in je eigen uitvoer waarom je erin zit. Kun je er één niet verklaren, dan is dat een bevinding.

MODULE 05 · HOST SECURITYLES 05.0316 van 31

Sudo-oppervlak

Wat je mag draaien als root, en zonder wachtwoord.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke commando's mag jij als root uitvoeren, en welke daarvan zonder wachtwoord?

Context

sudo -l leest de sudo-regels die op jou van toepassing zijn. Regels met NOPASSWD zijn het interessantst: daar staat een pad naar root dat geen wachtwoord meer vraagt.

Commando

sudo -l

Voorbeelduitvoer (geanonimiseerd)

Gebruiker [user] mag de volgende commando's uitvoeren op [hostname]:
    (ALL : ALL) ALL
    (root) NOPASSWD: /usr/local/bin/[script]

Interpretatie

(ALL : ALL) ALL betekent: alles, met wachtwoord. Een NOPASSWD-regel voor een specifiek script betekent: dat script draait als root zonder verdere vraag. Wie dat script kan wijzigen, wordt daarmee root.

Dit bewijst niet

Deze lijst bewijst niet dat er misbruik van gemaakt is. Hij toont wat mogelijk is. Of het een risico is, hangt af van wie het genoemde bestand kan aanpassen — dat controleer je in de volgende les.

Verifieer

Schrijf elk NOPASSWD-pad letterlijk over. Je hebt ze in les 05.04 nodig.

MODULE 05 · HOST SECURITYLES 05.0417 van 31

Eigendom van een NOPASSWD-doel controleren

Een pad naar root is pas veilig als niemand anders eraan kan komen.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Wie is de eigenaar van het bestand dat zonder wachtwoord als root mag draaien, en wie mag het wijzigen?

Context

Als een script als root draait zonder wachtwoord, en jouw eigen gebruiker mag dat script wijzigen, dan is de wachtwoordvraag zinloos geworden. Je zet er dan gewoon een regel bij. Dit is de klassieke fout.

Commando

stat -c '%A  %U:%G  %n' /usr/local/bin/[script-uit-05-03]

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

-rwxr-xr-x  root:root  /usr/local/bin/[script]

Interpretatie

root:root met -rwxr-xr-x is de gezonde situatie: alleen root kan schrijven, iedereen mag uitvoeren. Staat er jouw eigen gebruikersnaam als eigenaar, of een w in de laatste drie tekens, dan is het pad open.

Dit bewijst niet

Correct eigendom van het script bewijst niet dat het script veilig is. Een root-script dat zelf een ander bestand uitvoert, verplaatst het probleem alleen. Bekijk ook wat het script aanroept.

Verifieer

Herhaal stat voor elk NOPASSWD-pad uit 05.03. Is er één regel die niet root:root is?

MODULE 05 · HOST SECURITYLES 05.0518 van 31

Luisterende diensten beoordelen

Het adres vóór de dubbele punt bepaalt het risico.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke diensten luisteren, en op welk adres precies?

Context

In module 03 leerde je poorten lezen. Hier leer je het bindadres beoordelen. Hetzelfde programma op dezelfde poort is ongevaarlijk op 127.0.0.1 en relevant op 0.0.0.0.

Commando

sudo ss -tulpn

Voorbeelduitvoer (geanonimiseerd)

tcp LISTEN 127.0.0.1:631   users:(("cupsd"))
tcp LISTEN 0.0.0.0:22      users:(("sshd"))
tcp LISTEN [::]:5432      users:(("postgres"))
tcp LISTEN 100.x.x.x:8080 users:(("[app]"))

Interpretatie

127.0.0.1 = alleen deze machine. 0.0.0.0 = elke IPv4-interface, dus ook je wifi. [::] = elke IPv6-interface, en dat wordt vaak over het hoofd gezien. Een specifiek LAN-adres = alleen dat netwerk. Een adres uit een VPN- of Tailscale-bereik = alleen binnen dat overlaynetwerk.

Dit bewijst niet

Luisteren op 0.0.0.0 bewijst niet dat de dienst van buiten bereikbaar is. De firewall in de volgende les kan hem blokkeren. Oppervlak en bereikbaarheid zijn twee verschillende metingen.

Verifieer

Maak een tabel met vier kolommen: poort, programma, bindadres, reden. Is de kolom reden overal ingevuld?

MODULE 05 · HOST SECURITYLES 05.0619 van 31

Host-firewall

Een firewall die uit staat, telt niet mee.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Staat de host-firewall aan, welke regels gelden er, en geldt dat ook voor IPv6?

Context

ufw is de eenvoudige laag boven de firewall van de kernel. Drie commando's geven je de status, de genummerde regels om over te praten, en het antwoord op de vraag die het vaakst wordt overgeslagen: IPv6.

Commando

sudo ufw status verbose
sudo ufw status numbered
grep '^IPV6=' /etc/default/ufw

Voorbeelduitvoer (geanonimiseerd)

Status: active
Default: deny (incoming), allow (outgoing)
[ 1] 22/tcp   ALLOW IN  192.168.x.0/24
IPV6=yes

Interpretatie

deny (incoming) als standaard is de gezonde stand. Elke ALLOW-regel is een bewuste uitzondering die je moet kunnen uitleggen. IPV6=yes betekent dat je regels ook op IPv6 worden toegepast.

Dit bewijst niet

Status active bewijst niet dat je beschermd bent. Een ALLOW-regel voor 0.0.0.0/0 op een gevoelige poort maakt een actieve firewall alsnog open. Lees de regels, niet alleen de status.

Verifieer

Kun je bij elke genummerde regel zeggen wanneer hij is toegevoegd en waarom? Zo niet: noteer als open punt.

MODULE 05 · HOST SECURITYLES 05.0720 van 31

Docker-aanvalsoppervlak

Geïnstalleerd is niet draaiend, draaiend is niet enabled, enabled is niet actief.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Draait Docker op deze machine, start het automatisch, en wie kan het aansturen?

Context

Docker is securityrelevant om twee redenen: de daemon draait als root, en de socket kan door de groep docker worden aangesproken. Ook een gestopte Docker met een actieve socket is een pad, want de socket start de daemon alsnog.

Commando

systemctl status docker --no-pager
systemctl status docker.socket --no-pager
systemctl is-enabled docker docker.socket

Voorbeelduitvoer (geanonimiseerd)

● docker.service  Loaded: loaded (...; disabled)  Active: inactive (dead)
● docker.socket   Loaded: loaded (...; enabled)   Active: active (listening)
disabled
enabled

Interpretatie

Dit is precies het geval dat mensen verkeerd lezen: de service is inactief én disabled, maar de socket luistert. Wie in de groep docker zit, wekt de daemon met één commando. Het oppervlak is dus open.

Dit bewijst niet

inactive (dead) bewijst niet dat Docker niet gebruikt kan worden. Alleen als zowel service als socket disabled én inactive zijn, is dat pad dicht.

Verifieer

Combineer met les 05.02: staat er docker in je groepen én is de socket active? Noteer dat als bevinding.

Levert op

Deze module werkt toe naar het document host-security-review.md.

MODULE 06 · HOME NETWORKLES 06.0121 van 31

Vind je werkelijke netwerk

Scan nooit blind 192.168.1.0/24.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welk subnet is jouw thuisnetwerk werkelijk, en welk adres is de gateway?

Context

192.168.1.0/24 is een aanname, geen feit. Veel routers gebruiken 192.168.0.0/24, 192.168.178.0/24 of 10.0.0.0/24. Scannen op een subnet dat niet het jouwe is, betekent scannen op een netwerk waarvoor je geen toestemming hebt. Dit is daarom de poort naar de rest van deze module.

Commando

ip -br -4 addr
ip -4 route

Voorbeelduitvoer (geanonimiseerd)

lo      UNKNOWN  127.0.0.1/8
wlp3s0  UP       192.168.x.x/24
default via 192.168.x.1 dev wlp3s0
192.168.x.0/24 dev wlp3s0 proto kernel scope link

Interpretatie

Het achtervoegsel /24 vertelt je hoe groot het netwerk is: 254 bruikbare adressen. De regel met default via wijst je router aan. Die twee gegevens samen zijn je scope voor deze hele module.

Dit bewijst niet

Dit bewijst niet dat alle apparaten in dit bereik van jou zijn. Op een gedeeld of gast-netwerk kunnen er apparaten van anderen tussen zitten. Scope blijft een menselijke beslissing.

Verifieer

Schrijf subnet en gateway letterlijk op in je sessielog. Elke volgende les gebruikt deze twee waarden.

MODULE 06 · HOME NETWORKLES 06.0222 van 31

Ontdek welke hosts reageren

Zeven antwoorden is niet hetzelfde als zeven apparaten.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke apparaten reageren op jouw lokale netwerk?

Context

Host discovery stuurt korte pakketjes naar elk adres in je subnet en noteert wie antwoordt. Het is de minst indringende scan die er is, maar hij hoort alleen op je eigen netwerk thuis.

Commando

sudo nmap -sn 192.168.x.0/24

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

Nmap scan report for 192.168.x.1
Host is up (0.0031s latency).
...
Nmap done: 256 IP addresses (7 hosts up) scanned

Interpretatie

Zeven hosts reageerden tijdens deze discovery. Dat is een meting op één moment, met de apparaten die op dat moment aan stonden en bereid waren te antwoorden.

Dit bewijst niet

Dit bewijst niet dat er precies zeven apparaten bestaan. Een apparaat dat sliep, een apparaat dat niet reageert op ping, of een apparaat dat net was uitgeschakeld, staat er niet bij. Discovery is een ondergrens, geen telling.

Verifieer

Kun je elke gevonden host koppelen aan een apparaat dat je herkent? De hosts die overblijven, zijn je werk in 06.03.

MODULE 06 · HOME NETWORKLES 06.0323 van 31

Lees de buurtabel

Een MAC-adres vertelt iets, maar tegenwoordig steeds minder.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke hardware-adressen horen bij de hosts die je hebt gevonden?

Context

Je machine houdt een tabel bij van buren op hetzelfde netwerk: welk IP-adres hoorde bij welk MAC-adres. De eerste helft van een MAC verwijst normaal naar de fabrikant.

Commando

ip neigh

Voorbeelduitvoer (geanonimiseerd)

192.168.x.1  dev wlp3s0 lladdr [MAC-REDACTED] REACHABLE
192.168.x.24 dev wlp3s0 lladdr [MAC-REDACTED] STALE

Interpretatie

REACHABLE betekent dat er recent verkeer was. STALE betekent dat de vermelding er nog staat maar niet recent bevestigd is. Dat is geen fout; het is een verlopen herinnering.

Dit bewijst niet

Een MAC-adres bewijst niet welk apparaat het is. Telefoons gebruiken standaard een willekeurig, per netwerk wisselend MAC-adres. Een fabrikantopzoeking die niets oplevert, betekent meestal privacy-MAC — niet een verdacht apparaat.

Verifieer

Zet je host-lijst uit 06.02 naast deze tabel. Welke hosts krijgen nu een naam, en welke blijven onbekend?

MODULE 06 · HOME NETWORKLES 06.0424 van 31

Eerste service discovery

Van wie is er, naar wat biedt het aan.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke poorten staan open op de apparaten die je herkent?

Context

Nu ga je van bestaan naar aanbod. Beperk je tot apparaten die aantoonbaar van jou zijn. –top-ports 30 houdt de scan kort en beleefd; -Pn slaat de bereikbaarheidstest over voor apparaten die niet op ping reageren maar wel bestaan.

Commando

sudo nmap -sT -Pn --top-ports 30 --open 192.168.x.24

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
554/tcp open  rtsp

Interpretatie

Drie open poorten op één apparaat. –open onderdrukt alles wat dicht of gefilterd is, zodat je lijst leesbaar blijft. Wat er achter die poorten zit, weet je nog niet.

Dit bewijst niet

Een open poort bewijst niet welke software erachter draait. De kolom SERVICE is een gok van nmap op basis van het poortnummer, geen meting. Les 06.06 vervangt die gok door een meting.

Verifieer

Scan hetzelfde apparaat een tweede keer. Is de uitkomst gelijk? Zo niet, dan is er iets veranderd of gefilterd.

MODULE 06 · HOME NETWORKLES 06.0525 van 31

Wat open poorten betekenen

Een poortnummer is een verwachting, geen identiteit.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Wat verwacht je normaal achter de poorten die je hebt gevonden?

Context

Poortnummers hebben conventies. Ze helpen je richten, maar ze bewijzen niets. Deze les geeft je de conventies waar je in een thuisnetwerk het vaakst tegenaan loopt.

Commando

# geen commando — dit is de leeslijst bij je scanresultaat

Voorbeelduitvoer (geanonimiseerd)

22   SSH        externe shelltoegang
23   Telnet     onversleuteld; hoort nergens meer thuis
53   DNS        naamopzoeking, vaak op de router
80   HTTP       onversleuteld beheerscherm of dienst
443  HTTPS      versleuteld beheerscherm of dienst
445  SMB        Windows-bestandsdeling
554  RTSP       camerastream
631  IPP        printerdienst
3389 RDP        extern bureaublad
8080 alt-HTTP   tweede webdienst of beheerpaneel

Interpretatie

Telnet op 23 is de enige regel in deze lijst die op zichzelf al een bevinding is: het protocol stuurt wachtwoorden in leesbare tekst. RTSP op 554 verklaart meestal een camera. SMB op 445 in een thuisnetwerk verdient een vraag: deel je bewust bestanden?

Dit bewijst niet

Deze tabel bewijst niets over jouw apparaten. Elke dienst kan op elke poort draaien. Gebruik de tabel om te weten wat je moet controleren, niet om te concluderen wat er staat.

Verifieer

Zet naast elke open poort uit 06.04 de verwachting uit deze tabel. Welke wijkt af van wat je van het apparaat weet?

MODULE 06 · HOME NETWORKLES 06.0626 van 31

Identificeer de dienst

Vervang de gok door een meting.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke software draait er werkelijk achter die open poort?

Context

-sV praat met de dienst en vergelijkt het antwoord met een database van kenmerken. De scripts http-title en http-headers halen de paginatitel en de serverkoppen op. Samen geven ze een veel concreter beeld dan een poortnummer.

Commando

sudo nmap -sV -p 80 --script http-title,http-headers 192.168.x.24

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

80/tcp open  http    [server] [versie]
| http-title: [titel van de beheerpagina]
| http-headers:
|   Server: [server]/[versie]

Interpretatie

Je hebt nu een productnaam en meestal een versienummer. Dat is genoeg om te zoeken of er voor die versie bekende problemen zijn, en genoeg om te herkennen welk apparaat dit is.

Dit bewijst niet

Een versienummer in een header is wat het apparaat over zichzelf zegt. Het kan verouderd, aangepast of misleidend zijn. Dit is een fingerprint, geen bewijs — en zeker geen bewijs van kwetsbaarheid.

Verifieer

Open hetzelfde adres in je browser. Zie je de titel die nmap rapporteerde?

MODULE 06 · HOME NETWORKLES 06.0727 van 31

Controleer met een tweede gereedschap

Eén meting is een waarneming. Twee metingen zijn bewijs.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Bevestigt een ander gereedschap wat nmap je vertelde?

Context

nmap kan zich vergissen, en jij kunt je vergissen in het lezen van nmap. curl legt een gewone verbinding en laat je precies zien wat er gebeurt. –max-time 5 voorkomt dat je blijft hangen.

Commando

curl -v --max-time 5 http://192.168.x.24:80/ -o /dev/null

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

* Connected to 192.168.x.24 (192.168.x.24) port 80
> GET / HTTP/1.1
< HTTP/1.1 302 Found
< Location: https://192.168.x.24/

Interpretatie

Leer deze vijf uitkomsten uit elkaar houden: open (verbinding komt tot stand), closed (connection refused, er luistert niets), filtered (timeout, iets houdt het tegen), redirect (302 naar een ander adres of protocol) en een echt antwoord (200 met inhoud).

Dit bewijst niet

Een timeout bewijst niet dat de poort dicht is. Het bewijst dat er geen antwoord kwam binnen vijf seconden. Dicht en geblokkeerd zien er van buiten hetzelfde uit — dat verschil is de kern van deze les.

Verifieer

Voer curl uit op een poort waarvan nmap zei dat hij dicht is. Krijg je connection refused of een timeout? Wat zegt dat verschil?

Levert op

Deze module werkt toe naar het document network-assets.md.

MODULE 07 · ROUTER & EXPOSURELES 07.0128 van 31

Identificeer je router

Het apparaat dat je al kende als een regel in ip route.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welk adres is je router, en waarom is dat het enige adres dat je hier gebruikt?

Context

De router is het apparaat tussen jouw netwerk en de rest van de wereld. Je vindt hem niet door te raden maar door de default-regel uit je routeringstabel te lezen. Dat adres, en alleen dat adres, is het doel van deze module.

Commando

ip -4 route | grep '^default'

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

default via 192.168.x.1 dev wlp3s0 proto dhcp metric 600

Interpretatie

via wijst het adres van de gateway aan. dev wijst de interface aan waarlangs je hem bereikt. proto dhcp betekent dat je dit adres van de router zelf hebt gekregen.

Dit bewijst niet

Dit is de router zoals jouw machine hem kent. Op een netwerk met meerdere routers of een provider-modem in bridge-modus kan er nog een apparaat achter zitten dat je hier niet ziet.

Verifieer

Open het gateway-adres in je browser. Krijg je een beheerscherm dat je herkent?

MODULE 07 · ROUTER & EXPOSURELES 07.0229 van 31

Aanvalsoppervlak van de router

Wat biedt je router aan aan je eigen netwerk?

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke poorten staan open aan de binnenkant van je router?

Context

Dit is een scan aan de LAN-zijde: je kijkt naar wat de router aanbiedt aan apparaten binnen je huis. Dat is iets anders dan wat hij aan het internet aanbiedt — dat is module 09.

Commando

sudo nmap -sT -Pn --top-ports 50 --open 192.168.x.1

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

PORT    STATE SERVICE
53/tcp  open  domain
80/tcp  open  http
443/tcp open  https

Interpretatie

DNS op 53 is normaal: de router beantwoordt naamopzoekingen voor je netwerk. 80 en 443 zijn het beheerscherm. Staat 23 (Telnet) open, dan is dat op zichzelf een bevinding.

Dit bewijst niet

Wat hier open staat, staat aan de binnenkant open. Het zegt niets over bereikbaarheid vanaf het internet. Die twee door elkaar halen leidt tot paniek of tot valse gerustheid.

Verifieer

Herhaal de scan vanaf een tweede eigen apparaat op hetzelfde netwerk. Krijg je dezelfde lijst?

MODULE 07 · ROUTER & EXPOSURELES 07.0330 van 31

Identificeer de diensten van de router

Certificaten en versies zijn aanwijzingen, geen bewijs.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Welke software draait op je router, en wat zegt het certificaat van het beheerscherm?

Context

Vier scripts in één commando: dns-nsid vraagt de DNS-server naar zijn identiteit, http-title en http-headers lezen het beheerscherm, ssl-cert leest het certificaat van de HTTPS-kant.

Commando

sudo nmap -Pn -sV -p 53,80,443 \
  --script dns-nsid,http-title,http-headers,ssl-cert \
  192.168.x.1

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

53/tcp  open  domain  [dns-software] [versie]
80/tcp  open  http    [webserver]
| http-title: [naam beheerscherm]
443/tcp open  ssl/http
| ssl-cert: Subject: commonName=[apparaatnaam]
| Issuer: commonName=[zelfde naam]
| Not valid after: [datum]

Interpretatie

Als Subject en Issuer dezelfde naam hebben, is het certificaat self-signed: de router heeft het zelf gemaakt. Dat is bij thuisrouters normaal en verklaart de browserwaarschuwing. De versienummers geven je een aanknopingspunt om te controleren of je firmware nog wordt onderhouden.

Dit bewijst niet

Een versienummer bewijst niet dat je kwetsbaar bent, en een self-signed certificaat bewijst niet dat er iets mis is. Dit zijn fingerprints. Ze vertellen je waar je moet kijken, niet wat je moet concluderen.

Verifieer

Vergelijk de firmwareversie uit het beheerscherm met wat nmap rapporteerde. Komen ze overeen?

MODULE 07 · ROUTER & EXPOSURELES 07.0431 van 31

UPnP: lees, verander niet

open|filtered betekent niet bewezen open.

  • UNDERSTAND
  • PRACTICE
  • APPLY
  • VERIFY
  • SECURE
  • HARDEN

Vraag

Staat UPnP aan op je router, en zo ja, welke poortdoorverwijzingen bestaan er nu?

Context

UPnP laat apparaten binnen je netwerk zelf een poort openzetten naar het internet, zonder dat jij iets goedkeurt. Dat is de reden dat het securityrelevant is. Je begint met kijken of het antwoordt.

Commando

sudo nmap -sU -Pn -p 1900 --script upnp-info 192.168.x.1

In de oefenterminal draait dit met de adressen van de oefenmachine (192.168.2.0/24). Op je eigen machine vul je je eigen waarden in.

Voorbeelduitvoer (geanonimiseerd)

PORT     STATE         SERVICE
1900/udp open|filtered upnp

Interpretatie

open|filtered is het eerlijke antwoord van een UDP-scan: er kwam geen antwoord, en dat kan betekenen dat de poort open is en zwijgt, of dat iets het pakket tegenhoudt. Geeft upnp-info wél gegevens terug, dan is UPnP aantoonbaar actief.

Dit bewijst niet

open|filtered bewijst niet dat UPnP aan staat, en ook niet dat het uit staat. Het is een niet-meting. Noteer het als onbeslist en ga verder met een tweede gereedschap.

Verifieer

Wil je verder, controleer dan eerst of het gereedschap er is en wat installeren zou doen — vóór je installeert:

command -v upnpc
apt-cache policy miniupnpc
apt install --simulate miniupnpc

Pas na een bewuste, expliciete installatie leest upnpc -l de bestaande doorverwijzingen. Lees alleen. Voeg in deze module geen mapping toe en verwijder er geen — dat is een wijziging aan je router en die hoort bij een eigen beslissing met een eigen terugweg.

Levert op

Deze module werkt toe naar het document router-review.md.

UNDERSTAND PRACTICE APPLY VERIFY SECURE HARDEN