Gentoo Logo

1.  Chrooting

Een dienst chrooten is een manier om restricties op te leggen aan een dienst of gebruiker-omgeving om enkel toe te staan wat het zou moeten en dus niet de toegang krijgen tot informatie die zou kunnen leiden tot het verkrijgen van root-toegang. Door het uitvoeren van een dienst als een andere gebruiker dan root (nobody, apache, named) kan een aanvaller alleen bestanden met de permissie van die gebruiker raadplegen. Dat betekent dat een aanvaller dus geen root -toegang kan krijgen zelfs als de service een veiligheidsgebrek.

Sommige diensten zoals pure-ftpd en bind hebben eigenschappen om te chrooten, en andere niet. Als de dienst het ondersteund, gebruik het. Anders moet je uitvissen hoe je zelf een omgeving kan creeeren voor die dienst. Laten we eens bekijken hoe we een chroot creeeren, om de basisbegrippen van hoe chroot werkt, zullen we het testen met bash, een gemakkelijke manier om het aan te leren.

creeer de /chroot map met mkdir /chroot. Zoek uit met welke dynamische bibliotheken bash gecompileerd zijn (als het is gecompileerd is met de -static optie is deze stap onnodig).

Het volgende commando zal een lijst maken met bibliotheken gebruikt door bash.

Codevoorbeeld 1.1: Een lijst verkrijgen van gebruikte bibliotheken

# ldd /bin/bash
  libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
  libdl.so.2 => /lib/libdl.so.2 (0x40060000)
  libc.so.6 => /lib/libc.so.6 (0x40063000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Laten we nu een omgeving voor bash maken.

Codevoorbeeld 1.1: Maak een chroot-omgeving voor bash

# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib

Kopieer vervolgens de bestanden die gebruikt zijn door bash (/lib) naar de chrooted lib en kopieer het bash commando naar de chroot- bin map. Dit zal exact dezelfde omgeving maken, enkel met minder functies. Na het kopieren kunt ut het uittesten: chroot /chroot/bash /bin/bash. Als jee een bericht krijgt die / bevat, werkt het! Anders zal het zeggen welke file je mist. Sommige gedeelde bibliotheken hangen af van elkaar.

je zal een bericht krijgen dat je binnen de chroot niets werkt behalve echo. Dit is omdat we geen andere comamndo's in onze chroot-omgeving dan bash hebben. Dit is omdat echo is een ingebouwde funtie van bash.

Deze stappen moet je ook uitvoeren om je eigen chroot-omgeving te maken voor je dienst. Het enige verschil is dat de dienst meestal afhangt van apparaten en configuratie bestanden in de /etc map. Kopieer die simpelweg (apparaten kunnen worden gekopieerd, met cp -a) naar een chroot-omgeving. Bewerk het init-script om de omgeving te gebruiken voor het opstarten ervan. Het kan moeilijk zijn om uit te zoeken welk apparaat en configuratie bestand nodig zijn voor een dienst. Dit is waar het strace commando handig is. start de dienst met /usr/bin/strace bash en kijk uit voor open, read, stat en soms connect in de output van het commando. Dit zal een hint geven welke bestanden je moet kopieren. Maar in de meeste gevallen moet je het passwd bestand (bewerk eerst dit bestand zodanig dat overbodige gebruikers voor deze service er niet meer inzitten.), /dev/zero, /dev/log en /dev/random.

1.  Gebruikers-modus Linux

Een andere manier voor het creeeren van een veilige gebruikers-omgeving is door het opstarten van een virtuele machine. Een virtuele machine zoals het woord zegt is een proces die bovenop je eigen OS loopt, gebruikmakend van je eigen hardware en OS-omgeiving. De veiligheids-voordeel die we hieruit halen is dat de server niet aangetast wordt(enkel de virtuele server).

Voor meer informatie over hoe je een Gebruikers-modues voor linux opstart, raadpleeg de Gebruikers-mode Linux gids.

Upgedate op 15 december 2005

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.