Tyvärr, även efter att ha tagit viktiga säkerhetsåtgärder, hittar säkerhetsproblem fortfarande in i säkra system. Ett sätt att hantera och skydda ditt system är att begränsa skadan som är möjlig när en attack inträffar.
I denna handledning diskuterar vi processen med att använda chroot-fängelse för att hantera systemskador vid en attack. Vi kommer att titta på hur man isolerar processer och delprocesser till en viss miljö med falska root-privilegier. Genom att göra detta begränsas processen till en viss katalog och nekas åtkomst till andra systemområden.
En kort introduktion till chroot-fängelse
Ett chroot-fängelse är en metod för att isolera processer och deras underprocess från huvudsystemet med falska root-privilegier.
Som nämnts begränsar skadorna vid en skadlig attack att isolera en viss process med falska rotprivilegier. Chrooted-tjänster är begränsade till kataloger och filer i sina kataloger och är inte beständiga vid omstart av tjänsten.
Varför använda chroot-fängelse
Huvudsyftet med chroot-fängelse är som en säkerhetsåtgärd. Chroot är också användbart när du återställer förlorade lösenord genom att montera enheter från live media.
Det finns olika fördelar och nackdelar med att sätta chroot-fängelse. Dessa inkluderar:
Fördelar
- Begränsar åtkomst: Vid säkerhetskompromiss är de enda skadade katalogerna de som finns i chroot-fängelset.
- Kommandogränser: Användare eller processer begränsas till kommandon som är tillåtna i fängelset.
Nackdelar
- Det kan vara utmanande att ställa in.
- Det kräver mycket arbete - Om du behöver ett extra kommando än de som är tillåtna som standard måste du inkludera det manuellt.
Hur man skapar ett grundläggande fängelse för chroot
I den här processen skapar vi ett grundläggande chroot-fängelse med tre kommandon begränsade till den mappen. Detta hjälper till att illustrera hur man skapar ett fängelse och tilldelar olika kommandon.
Börja med att skapa en huvudmapp. Du kan tänka på den här mappen som / mappen i huvudsystemet. Mappens namn kan vara vad som helst. I vårt fall kallar vi det / chrootjail
sudo mkdir / chrootjailVi kommer att använda den här katalogen som den falska roten som innehåller de kommandon vi kommer att tilldela den. Med de kommandon som vi använder kommer vi att kräva bin-katalogen (innehåller kommandokörbara filer) och osv., katalog (som innehåller konfigurationsfiler för kommandona).
Skapa dessa två mappar i mappen / chrootjail:
sudo mkdir / chrootjail / etc, bin
Nästa steg är att skapa kataloger för dynamiskt länkade bibliotek för de kommandon vi vill inkludera i fängelset. I det här exemplet använder vi kommandon bash, ls och grep.
Använd kommandot ldd för att lista beroenden för dessa kommandon, som visas nedan:
sudo ldd / bin / bash / bin / ls / bin / grep
Om du inte befinner dig i bin-mappen måste du skicka hela sökvägen för de kommandon du vill använda. Till exempel ldd / bin / bash eller ldd / bin / grep
Från ldd-utdata ovan behöver vi katalogerna lib64 och / lib / x86_64-linux-gnu. Skapa dessa mappar i fängelsekatalogen.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64När vi väl har skapat de dynamiska bibliotekskatalogerna kan vi lista dem med ett träd, som visas nedan:
När vi går framåt kommer du att få en tydlig bild av vad ett chrootfängelse betyder.
Vi skapar en miljö som liknar en vanlig rotkatalog för ett Linux-system. Skillnaden är att inom denna miljö är endast specifika kommandon tillåtna och åtkomst är begränsad.
Nu när vi har skapat papperskorgen. etc., lib och lib64 kan vi lägga till de filer som krävs i deras respektive kataloger.
Låt oss börja med binärfilerna.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Efter att ha kopierat binärfilerna för de kommandon vi behöver behöver vi biblioteken för varje kommando. Du kan använda kommandot ldd för att visa filerna som ska kopieras.
Låt oss börja med bash. För bash kräver vi följande bibliotek:
/ lib / x86_64-linux-gnu / libtinfo.så.6/ lib / x86_64-linux-gnu / libdl.så.2
/ lib / x86_64-linux-gnu / libc.så.6
/ lib64 / ld-linux-x86-64.så.2
Istället för att kopiera alla dessa filer en efter en, kan vi använda en enkel för loop för att kopiera varje bibliotek i alla bibliotek till / chrootjail / lib / x86_64-linux-gnu
Låt oss upprepa denna process för både ls och grep-kommandot:
För ls kommando:
För grep-kommando:
Därefter har vi ett delat bibliotek i alla binära filer i katalogen lib64. Vi kan helt enkelt kopiera det med ett enkelt cp-kommando:
Låt oss sedan redigera bash-inloggningsfilen (finns i / etc / bash.bashrc i Debian) så att vi kan justera bash-prompten efter eget tycke. Med ett enkelt eko- och tee-kommando som visas:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcNär vi har slutfört alla stegen ovan kan vi logga in i fängelsemiljön med chroot-kommandot som visas.
sudo chroot / chrootjail / bin / bashDu får rootprivilegier med prompten som liknar dem som skapats i eko- och tee-kommandot ovan.
När du har loggat in ser du att du bara har tillgång till de kommandon du inkluderade när du skapade fängelset. Om du behöver fler kommandon måste du lägga till dem manuellt.
NOTERA: Eftersom du har inkluderat bash-skalet kommer du att ha tillgång till alla inbyggda bash-kommandon. På så sätt kan du lämna fängelset med kommandot exit.
Slutsats
Denna handledning behandlade vad chroot-fängelse är och hur vi kan använda det för att skapa en isolerad miljö från huvudsystemet. Du kan använda de tekniker som diskuteras i guiden för att skapa isolerade miljöer för kritiska tjänster.
För att öva på vad du har lärt dig, försök skapa ett apache2-fängelse.
LEDTRÅD: Börja med att skapa en rotkatalog, lägg till konfigurationsfilerna (etc / apache2), lägg till dokumentroten (/ var / www / html), lägg till den binära (/ usr / sbin / apache2) och slutligen lägg till önskade bibliotek (ldd / usr / sbin / apache2)