Apatrid Ottawa, ON
Član broj: 34944 Poruke: 471 *.cybersurf.com.
|
Nekim veoma jednostavnim riječnikom rečeno, problem je što se FTP nije proslavio kao veoma siguran protokol. Danas se češće koristi sftp, sa mnogo tvrđom sigurnošću, po svim pitanjima. FTP, u izvornoj formi, šalje lozinke (u procesu prijave) preko mreže kao običan, otvoreni tekst. Neko ko može da presretne paket (a to je lako uraditi na bilo kom ethernet segmentu jer svaki čvor fizički "sluša" sve što se šalje bilo kome na tom LAN segmentu), može da provali lozinku.
Elem, da se nekako doaka toj očiglednoj rupi, koriste se mnoge tehnike. Jedna od njih se svodi na minimiziranje štete, čak i kad neko provali lozinku. Ideja je da lozinka za FTP služi samo da se dohvati FTP server i ono što on vidi, a da ostatku sistema ne može da se priđe, jer za pristup tome trebaju neke druge privilegije i neke druge lozinke. Ono što je na FTP serveru, neka đavo nosi, kako došlo (neko uradio upload) tako može i da otiđe.
Ta tehnika minimiziranja štete se efikasno primijenjuje kao (jedna od) mjera ne samo za FTP, već i za druge servise.
A tehnika se svodi na uvođenje još jednog mehanizma za ograničavanje pristupa. Standardne privilegije za korisnike i grupe (za svaki fajl se zna da li može da ga čita, izvrši ili modifikuje neki korisnik ili svi korisnici koji pripadaju grupi) su nedovoljne ako se FTP server pokrene da "vidi" cio fajl sistem (u unix-ima, sve diskove, jer se sve montira negdje ispod glavnog korijena, "/", fajl sistema). Zašto nedovoljne? Pa i korisnik koji pristupa FTP-u (kao i bilo koji drugi koji je prijavljen na mašinu) može da pročita (tj. da FTP-om prenese drugdje, pa da tamo čita serbez) dosta stvari iz, naprimjer, "/etc" foldera.
E, tu pomaže "chroot" (mada mu to nije jedina namjena). Kad se uradi chroot, jedan od parametara je folder na kome treba formirati novi korijen fajl sistema. Recimo da imaš folder "/ftp_root". Kad se, naprimjer, uradi:
# chroot /ftp_root /bin/bash
dospiješ u novo okruženje, gdje fajl sistem izgleda kao da je /ftp_root postao "/". Na primjeru, neki fajl koji stvarno ima punu putanju "/ftp_root/trt/mrt/nekiFajl.krlj", sad, u tom "chrooted" okruženju stoji na "/trt/mrt/nekiFajl.krlj".
Što je trik? U tom novom okruženju vidi se samo podstablo koje se nalazi ispod "/ftp_root", a fajlovi iz "/etc", naprimjer, su potpuno nedostupni. A što će oni da se vide iz FTP-a, uopšte?
Elem, trik sa tim dodatnim ograničavanjem što se vidi se svodi na to da se ftp server (ili drugi servis) izvršava u tom "chrooted" okruženju. Ima tu još zavrzlama, da ne ulazim sad u to, ali princip je jasan, sve što je izvan tog podstabla je nevidljivo.
Linkovi su glavna glavobolja, jer, ako rade, korisnik vidi nešto izvan (fizičkog) stabla fajl sistema na koji smo pokušali da ga ograničimo.
Zato chroot ne šljivi linkove 5%. Ne rade i tačka. Nema šanse da se vidi, napravljeno da se ne vidi.
Ako ti treba da se ti fajlovi vide, fizički možeš da ih kopiraš u podstablo, a onda da uradiš link sa onog drugog mjesta da ti fajlovi iskoče u drugoj grani tvog fajl sistema. Dakle, umjesto da "/ftp_root/link_na_neki_fajl.trt" pokazuje na "/home/ja/neki_fajl.mrt", ubrišeš taj link, pomjeriš fajl (komanda mv) tako da postane "/ftp_root/neki_fajl.mrt", a onda kreiraš link "/home/ja/link_na_neki_fajl.trt" tako da pokazuje na taj fajl.
Elem, ako izvedeš tu vratolomiju sa zamjenom mjesta linku i stvarnom fajlu, onda će se fajl vidjeti i u "chrooted" okruženju, a može da mu se pristupi i kroz staro mjesto, preko linka. Ali pazi, sve što je u folderu /ftp_root đavo može da ponese očas, pa tamo nemoj da premeštaš bilo što od sistemskih fajlova (ni /etc, ni /usr, ma ništa što nijesi ti dodatno dovukao na mašinu, ako baš nijesi siguran što činiš).
Odraće me ekipa koja zna više, ovo je strašno banalizovano, ali ja se nadam da si shvatio kako chroot pomaže, zašto se ovdje koristi, te zašto ti linkovi ne rade.
|