Gentoo Logo

1.  Mediul chroot

Rularea în mediul chroot a unui serviciu este o cale de a limita mediul unui serviciu (sau utilizator) la a accesa doar ce este necesar şi a nu obţine acces (sau informaţii) ce pot conduce la accesul root. Prin rularea unui serviciu ca un alt utilizator de sistem decât root (nobody, apache, named), un atacator poate accesa doar fişierele cu permisiunile acestui utilizator. Aceasta înseamnă că un atacator nu poate obţine acces root chiar dacă serviciile au o breşă de securitate.

Unele servicii ca pure-ftpd şi bind au funcţionalităţi pentru mediul chroot, şi altele servicii nu. Dacă un serviciu îl suportă, utilizaţi-l, altfel trebuie să găsiţi o soluţie să vă creaţi unul propriu. Să vedem cum creăm un mediu chroot şi, pentru o mai bună înţelegere a modului de funcţionare, îl vom testa cu bash (un mod uşor de a învăţa).

Creaţi directorul /chroot cu mkdir /chroot. Apoi, aflaţi cu ce biblioteci dinamice este compilat bash (dacă este compilat cu -static, acest pas nu este necesar):

Următoarea comandă va crea o listă de biblioteci utilizate de bash.

Cod 1.1: Afişarea listei de biblioteci utilizate

# 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)

Acum, creaţi mediul pentru bash.

Cod 1.1: Crearea mediului chroot pentru bash

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

Apoi, copiaţi fişierele utilizate de bash (/lib) în directorul lib din chroot şi copiaţi comanda bash în directorul bin din chroot. Aceasta va crea exact acelaşi mediu, doar cu mai puţine funcţionalităţi. După copiere, încercaţi-l: chroot /chroot/bash /bin/bash. Dacă vi se afişează un prompt /, atunci funcţionează! Altfel, vă va specifica cu precizie ce fişier lipseşte. Unele biblioteci dinamice depind între ele.

Veţi observa că în interiorul mediului chroot nu funcţionează nimic cu excepţia echo. Aceasta se datorează faptului că nu avem nici o altă comandă disponibilă în mediul chroot, în afară de bash, iar echo este o funcţionalitate integrată.

Aceasta este, practic, soluţia prin care puteţi să vă creaţi un serviciu în mediul chroot. Singura diferenţă este că serviciile, uneori, se bazează pe fişiere dispozitiv şi pe fişiere de configurare din /etc. Trebuie doar să le copiaţi (fişierele dispozitiv pot fi copiate cu cp -a) în mediul chroot, să editaţi script-ul de iniţializare pentru a utiliza mediul chroot înainte de execuţie. Poate fi dificil să găsiţi fişierele dispozitiv şi cele de configurare necesare unui serviciu. Aici devine la îndemână comanda strace. Porniţi serviciul bash cu /usr/bin/strace şi căutaţi comenzile open, read, stat şi, poate, conect. Aceasta vă va da un indiciu despre ce fişiere să copiaţi. Dar, în cele mai multe cazuri, trebuie doar să copiaţi fişierul passwd (editaţi copia şi ştergeţi toţi utilizatorii ce nu au legătură cu serviciul), /dev/zero, /dev/log şi /dev/random.

1.  User Mode Linux

O altă modalitate de a crea un mediu mai securizat, este prin rularea unei maşini virtuale. O maşină virtuală, aşa cum sugerează şi numele, este un proces ce rulează deasupra sistemului de operare real, oferind un suport hardware şi un sistem de operare ce pare a fi o maşină unică, separată. Beneficiul de securitate este faptul că, dacă aplicaţia server ce rulează în maşina virtuală este compromisă, doar server-ul virtual este afectat şi nu instalarea părinte.

Pentru mai multe informaţii despre cum să setaţi User Mode Linux, consultaţi Ghidul User-Mode Linux.

Actualizat la 15 Decembrie 2005

Donate to support our development efforts.

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