ID.nl logo
Huis

Linux hacken: zo eenvoudig is het

Afgelopen jaar kwamen talloze bedrijven in de problemen vanwege ransomware. De besmette servers draaiden voornamelijk Windows; Linux-servers kwamen er zonder al te veel kleerscheuren van af. Naar aanleiding van dit incident vragen veel beheerders zich af hoe veilig Linux eigenlijk is.

Door de manier waarop Linux ontworpen is, is het systeem van nature behoorlijk veilig. Dit is voor een groot deel te herleiden tot het gebruik van de execute-permissie. Zonder de execute-permissie kan geen enkel programma automatisch worden uitgevoerd. De beheerder van de betreffende computer zal eerst als bewuste actie de execute-permissie op een script of programmabestand moeten toepassen voordat een programma wordt uitgevoerd.

Bij het aanmaken van een bestand op een systeem zal dat bestand nooit automatisch uitvoerbaar worden gemaakt. Vanwege de manier waarop Linux omgaat met de execute-permissie, krijgen ook virussen op Linux weinig kans. Er zijn dan ook eigenlijk geen bekende virussen, noch zijn er virusscanners die veel meer scannen dan in- en uitgaande mail wanneer Linux gebruikt wordt als mailserver.

Een tweede kernelement is het gebruik van het root-gebruikersaccount. De gebruiker root is de almachtige systeembeheerder voor wie geen enkele beperking geldt. Alle andere gebruikers kunnen alleen bestanden aanmaken in hun eigen home directory of in /tmp. Dat betekent dat de schade, die een gebruiker bewust of onbewust kan uitvoeren, meestal slechts impact heeft op een beperkte omgeving.

Mandatory Access Control

Een ander belangrijk onderdeel van Linux’ beveiliging is Mandatory Access Control (MAC). Er zijn twee belangrijke systemen voor MAC: SELinux en AppArmor. Beide systemen hebben als doel om ervoor te zorgen dat alleen acties die specifiek zijn toegestaan mogen worden uitgevoerd. Hiervoor wordt gewerkt met profielen, die aan toepassingen worden gekoppeld. In deze profielen wordt op system call-niveau bepaald wat is toegestaan. Alles wat niet in zo’n profiel is gedefinieerd, wordt geblokkeerd.

Tot zover lijkt het alsof Linux zijn zaakjes goed voor elkaar heeft en het nagenoeg onmogelijk is om in te breken. Maar schijn bedriegt! Er zijn namelijk enkele precaire zaken die ervoor kunnen zorgen dat een verkeerd beheerde Linux-machine de deur wagenwijd openzet voor ongeoorloofde activiteit. In het vervolg van dit artikel gaan we verder in op aanvallen op het root-wachtwoord, de installatie van onbetrouwbare software, het uitvoeren van instabiele of onbetrouwbare scripts, brute-force attacks op ssh en zero-day-exploits.

Gevaar van root-gebruiker

De grootste zwakke plek in Linux is de root-gebruiker. Bij het ontwerp van het besturingssysteem werd onderscheid gemaakt tussen geprivilegieerde gebruikers en niet-geprivilegieerde gebruikers. Een niet-geprivilegieerde gebruiker is een gebruiker die slechts toegang heeft tot beperkte onderdelen van het besturingssysteem. De root-gebruiker is de geprivilegieerde gebruiker voor wie geen enkele beperking geldt. Je zou kunnen stellen dat de root-gebruiker onbeperkt toegang heeft tot de Linux-kernel. Zodra een aanvaller een root-shell kan openen, is hij dus binnen.

Het spreekt voor zich dat je de root-gebruiker voorziet van een zeer sterk en ingewikkeld wachtwoord. Daarnaast zorg je er als Linux-gebruiker voor om nooit in te loggen als root, want dan wordt elk proces dat je start met root-privileges opgestart. Het zwakke punt blijft echter dat de root-gebruiker überhaupt bestaat en dat het onder bepaalde omstandigheden mogelijk is om in te loggen als root. De enige beperkende factor is dat je hiervoor bij het opstarten wel consoletoegang moet hebben tot het Linux-systeem

Op een modern Linux-systeem geeft de volgende procedure vrijwel altijd toegang tot een root-shell zonder dat een wachtwoord hoeft te worden ingevoerd.

Zorg ervoor dat de doelwitmachine opnieuw wordt opgestart. Zodra je de Grub2 boot-prompt ziet, druk je op e om de editor te openen:

©PXimport

Eenmaal in de editor zoek je de regel op die begint met linux16. Voeg aan het eind van deze regel de tekst

rd.break

in. Gebruik nu de toetscombinatie Ctrl+X. Het Linux-systeem zal nu opstarten, waarbij alleen een kernel en het initramfs geladen worden. Initramfs is een minimaal besturingssysteem van waaruit je toegang hebt tot je volledige harde schijf, zonder dat je een root-wachtwoord hoeft in te voeren.

Na het opstarten wordt nu een root-shell weergegeven, maar dan ben je er nog niet. Als je het wachtwoord wilt resetten, dien je eerst de volledige toegang tot het root-filesystem op de schijf te herstellen. Hiervoor zijn nog een paar commando’s nodig. Tik eerst

mount

om uit te vinden op welke directory je root-filesystem is gemount. In het onderstaande voorbeeld gaan we uit van CentOS, waar het root-bestandssysteem op /sysroot wordt gemount. Typ nu:

mount -o bind /dev /sysroot/dev

Dit zorgt ervoor dat alle device files beschikbaar zijn. Gebruik nu deze opdracht, zodat ook de belangrijke kernel interface /proc beschikbaar is op het tijdelijke root-mountpunt:

mount -t proc proc /sysroot/proc

Als deze essentiële bestandssystemen zijn gemount, typ je

chroot /sysroot

sysroot om het tijdelijke mountpunt van het root-filesystem om te zetten naar de / directory. Wanneer je tools gebruikt die toegang vereisen tot de / directory op de schijf, zullen die het nu allemaal doen. Je kunt nu

passwd

gebruiken om het root-wachtwoord in te stellen. Tot slot: als je op een distributie werkt waar SELinux is ingeschakeld, moet je ervoor zorgen dat het hele bestandssysteem opnieuw wordt voorzien van SELinux contextlabels. Dat doe je met de opdracht

touch /.autorelabel

Typ nu reboot om opnieuw op te starten en in te loggen met je eigen rootwachtwoord. Veel plezier met de onbeperkte toegang tot het betreffende systeem!

Bescherming

Wellicht vraag je je af of het nu echt zo simpel is. Als je geen tegenmaatregelen getroffen hebt: ja, helaas wel. Gelukkig zijn er maatregelen die je als eigenaar van een Linux-systeem kunt treffen om deze zwakke plek te beschermen. Daarover meer in een later artikel.

Tekst: Sander van Vugt

▼ Volgende artikel
Diablo 2 ontvangt een nieuwe Warlock-klasse via betaalde dlc
Huis

Diablo 2 ontvangt een nieuwe Warlock-klasse via betaalde dlc

Diablo 2: Resurrected heeft eerder deze week voor het eerst in 25 jaar een nieuwe klasse gekregen, de Warlock. Die wordt op een later moment ook aan Diablo 4 toegevoegd.

De Warlock-klasse kan nu gekocht worden voor 24,99 euro in de vorm van de Reign of the Warlock-dlc. De dlc is bedoeld voor de Resurrected-remaster van Diablo 2, die in 2021 verscheen voor pc, PlayStation- en Xbox-consoles en Nintendo Switch.

De Warlock gebruikt duistere magie waarmee hij demonen in de game voor zich kan winnen of ze juist kan consumeren. Ook kan hij drie eigen demonen inzetten. Dit zorgt in totaal voor honderden verschillende combinaties.

De Warlock-klasse zal op 28 april ook naar het nieuwere spel Diablo 4 komen. Daar maakt hij onderdeel uit van de uitbreiding Lord of Hatred. Ook Diablo Immortal krijgt de Warlock, maar wel pas in juni. In elke Diablo-game zal de Warlock iets andere mogelijkheden met zich meebrengen om de klasse bij de rest van de game te laten passen.

Op 5 maart geeft ontwikkelaar Blizzard meer informatie over de Warlock in de Lord of Hatred-uitbreiding voor Diablo 4. Dat gebeurt via een Developer Update-livestream.

Watch on YouTube
Watch on YouTube
Watch on YouTube
Watch on YouTube
▼ Volgende artikel
Printer vastgelopen? Zo krijg je de wachtrij weer leeg
© Elnur Amikishiyev
Huis

Printer vastgelopen? Zo krijg je de wachtrij weer leeg

Wanneer je het printcommando geeft, komt het document dat de printer moet verwerken eerst in de printwachtrij. Soms kan het gebeuren dat een document in de wachtrij blijft hangen en daardoor de rest blokkeert. Met deze drie stappen los je het probleem op.

Dit gaan we doen:

We leggen eerst uit hoe je een vastgelopen opdracht uit de wachtrij haalt. Daarna zie je hoe je de Print Spooler reset en de tijdelijke printbestanden verwijdert. Tot slot start je de spooler opnieuw, zodat je printer weer verder kan.

Lees ook: De perfecte printer kiezen? Hier moet je op letten

Stap 1: Boosdoener in de wachtrij elimineren

Als één bestand de printwachtrij blokkeert, worden alle volgende printopdrachten tegengehouden. De eenvoudigste manier om dit op te lossen is de wachtrij handmatig leegmaken. Dat betekent dat je het vastgelopen document verwijdert en de printopdracht opnieuw probeert. Open met Win+I de Instellingen en ga naar Bluetooth en apparaten. Klik daar op Printers en scanners om een overzicht te zien van alle printers die met de pc verbonden zijn. Selecteer de printer die problemen geeft en kies in het volgende scherm de optie Afdrukwachtrij openen. Klik met de rechtermuisknop op het document dat blijft hangen (meestal het eerste in de lijst) en kies Annuleren.

Annuleer de eerste opdracht in de wachtrij.

Stap 2: Print Spooler stoppen

Lukt het niet om een printtaak te verwijderen of opnieuw te starten, dan kun je de printer vaak toch weer aan de praat krijgen door de Print Spooler te resetten. De Print Spooler is de Windows-service die alle afdrukopdrachten beheert. Door deze service te herstarten, worden fouten en geblokkeerde processen beëindigd, wordt de buffer met tijdelijke printbestanden opgeschoond en kan Windows de spooler opnieuw opstarten om nieuwe opdrachten te verwerken. Typ in het zoekveld Windows Services en open de lijst met alle systeemservices. Om snel Print Spooler te vinden, klik je eerst op een willekeurige naam in de lijst en druk je daarna op de P-toets. Klik vervolgens met de rechtermuisknop op Print Spooler en kies Stoppen.

Met de rechtermuisknop stop je Print Spooler.

Stap 3: Print Spooler leegmaken en opnieuw starten

Laat het venster Services open en activeer daarnaast Windows Verkenner. Typ in de adresbalk: %windir%\System32\spool\PRINTERS. Je krijgt een waarschuwing, maar die mag je negeren. Het is de bedoeling dat je de volledige inhoud van deze map verwijdert. Selecteer alles met Ctrl+A en druk daarna op Delete. Verwijder alleen de inhoud van de map, niet de map zelf. Sluit de map en ga terug naar het venster Services. Klik met de rechtermuisknop op Print Spooler en kies Opnieuw starten.

Verwijder alles wat in deze map zit en start de Print Spooler opnieuw.

Wie print, heeft het nodig:

PRINTERPAPIER