|
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.
|