În timp ce toată lumea a prins Pokémon, m-am odihnit. Este timpul să reluăm activitatea pe labirint și astăzi ne vom familiariza cu nisipurile izolate pentru lansarea aplicațiilor. Cu siguranță, cel puțin o dată în viața ta trebuia să te descurci cu aplicații și scripturi care nu ar fi putut fi de încredere și care ar putea dăuna sistemului. Sau ați vrut să porniți browser-ul într-un mediu izolat maxim, astfel încât în caz de hacking sistemul dvs., nimic nu a fost amenințată. Astăzi, astfel de probleme sunt rezolvate cu ajutorul Docker-ului omniprezent, dar există multe instrumente mult mai simple și mai convenabile pentru lansarea rapidă a aplicațiilor în nisipuri.
Aplicații pentru sandboxing cu nisip cu nisip
Cu mult înainte ca ideea de Docker să provină din mintea creatorilor săi, a apărut un proiect LXC (LinuX Containers). Acesta sa bazat pe aceleași tehnologii pentru spațiul de despărțire a denumirilor (Linux Namespaces) și în același mod a permis crearea unui mediu minimalist de execuție (nisip, container) pentru rularea serviciilor sau a aplicațiilor nesigure. Cu toate acestea, LXC nu era atât de prietenos cu noii utilizatori și nu avea cipuri Docker ca un sistem de fișiere slab, capacitatea de a descărca rapid și de a rula o aplicație deja pregătită și se configrează pentru a construi automat medii.
Mult mai devreme a apărut în tehnologia de închisoare FreeBSD, permițându-vă să creați un mediu de testare cum ar fi chroot, dar cu accent pe un nivel mai profund de izolare. Timp de mult timp închisoarea a fost mândria FreeBSD și chiar a servit drept prototip pentru tehnologia Solaris Zones. Astăzi, cu toate acestea, ea nu poate furniza nivelul de flexibilitate și resurse care oferă LXC și Docker, astfel încât întreaga închisoare a fost pe marginea istoriei. Astăzi sandboxurile din Linux pot fi create în mai multe moduri diferite. Acest lucru este deja menționat LXC și Docker cu namespace lor, un mecanism Seccomp, Chrome utilizate pentru a izola file și plug-in-uri, este SELinux tehnologie / AppArmor pentru a ajusta accesul la aplicație orice fel. În acest articol ne uităm la cel mai convenabil pentru utilizator mediu instrumentele care sunt cele mai potrivite pentru sarcinile de zi cu zi, cum ar fi:
- lansarea unei aplicații neconfundabile care ar putea dăuna sistemului;
- izolarea browserului, a clientului de e-mail și a altor aplicații, astfel încât hacking-ul acestora să nu ducă la scurgerea datelor;
- lansați aplicații "unice" care nu ar trebui să lase urme în sistem.
1 MBOX Sandbox
Să începem cu una dintre cele mai simple nisipuri. Mbox nu este un instrument de izolare standard, nu distruge puterile aplicației care rulează, nu virtualizează stiva de rețea și nu are setări. Singura sarcină Mbox este să vă asigurați că aplicația nu poate scrie nimic în sistemul de fișiere. Pentru a face acest lucru, creează un FS virtual special, la care redirecționează toate cererile I / O. Prin urmare, sub controlul Mbox, aplicația funcționează ca și cum nu s-ar fi întâmplat nimic, dar în timpul funcționării acesteia veți avea posibilitatea de a aplica sau de a respinge anumite modificări ale sistemului virtual de fișiere în sistemul de fișiere real.
Cel mai bun exemplu al acestui concept este pagina oficială Mbox:
În Arch Linux, Mbox este disponibil în AUR, deci este și mai ușor de instalat:
Asta e tot. Acum puteți rula orice fișiere binare fără să vă faceți griji că vor părăsi backdoor-ul în sistemul de fișiere. Dacă aplicația trebuie să restricționeze accesul la anumite părți ale sistemului de fișiere, puteți utiliza profiluri. Acestea sunt fișiere text obișnuite care afișează directoarele de acces permise și refuzate. De exemplu, următorul profil va împiedica aplicația să acceseze directorul dvs. de acasă (
), dar va lăsa posibilitatea de a lucra cu fișierele din directorul curent (.):
Pentru a porni o aplicație cu un anumit profil, specificați-o cu opțiunea -p:
O altă opțiune utilă este -n. Aceasta interzice complet accesul aplicației la Internet.
Cum funcționează mbox
2 Izolăm lansarea aplicațiilor folosind FIREJAIL
Inutil să spun că o interdicție simplă privind accesul la fișiere este prea mică pentru a crea nisipuri cu adevărat izolate. Un cod sau un program rău intenționat nu poate să scrie nimic în sistem, ci pur și simplu să iei cu dvs. parola Bitcoin-pungă și KeePass sau să folosești vulnerabilitatea aplicației pentru a obține drepturile de root și a ieși din nisip. În plus, Mbox nu este prietenos cu software-ul grafic și în ansamblu nu este potrivit pentru a rula aplicații complexe care pot scrie pe disc o mulțime de fișiere temporare și să își actualizeze în mod constant bazele de date.
Din fericire, avem Firejail. mult mai instrument flexibil și puternic de izolare, care nu numai controlează accesul la sistemul de fișiere, și complet tăiat de la sistemul principal de aplicare cu ajutorul mecanismului Linux spațiile de nume. Lansat în sandboxul aplicația Firejail are acces numai la fișiere și funcții predefinite ale sistemului. De exemplu, puteți nega aplicației acces la toate fișierele, cu excepția propriei sale de configurare, deschideți unele fișiere numai pentru citire sau scrie-doar, să interzică ridicarea privilegiilor lor la rădăcină, pentru a interzice conectarea la anumite porturi, se interzic apelurile de sistem nesigure, cum ar fi execv.
Limitările aplicației sunt specificate într-un profil care poate număra zeci de rânduri de tip noroot, seccomp, whitelist
/.mozilla. Cu toate acestea, nimeni nu te obligă personal să le scrie - Firejail include deja profiluri pentru 95 de aplicații diferite. Tot ce rămâne este să instalați instrumentul și să executați programul:
Totul se execută acum Firefox într-o cutie de nisip izolate și are acces doar la propriul său director, mai multe configurările conexe (KeePass, de exemplu) și nu are acces la apelurile de sistem periculoase și porturi, cu excepția 80, 443 și 53.
Demo de FirejailMai mult, puteți rula Firefox într-un mediu complet steril, fără acces la configurațiile și fișierele sistemului principal:
Puteți crea mai multe astfel de sandbox-uri simultan și le puteți utiliza pentru a vizita diferite site-uri (aici USER este numele dvs. de utilizator):
Aceste comenzi vor lansa trei instanțe de browser în sandbox-uri separate. Primul pe care îl veți folosi pentru muncă, cel de-al doilea pentru serviciile bancare online și cel de-al treilea pentru orice altceva, care nu are legătură cu primele două. Compromisul uneia dintre nisipurile nu va duce la compromiterea restului.
Dacă este necesar, puteți chiar să limitați lățimea canalului pentru aplicația care rulează în cutia de nisip. De exemplu, următoarea comandă va limita lățimea canalului de intrare la 80 Kbytes / s, iar lățimea canalului de ieșire la 20:
Toate profilurile de aplicație FireJail sunt stocate în directorul / etc / firejail. Dacă trebuie să creați un profil pentru o aplicație care nu este acceptată de FireJail. trebuie doar să copiați profilul unei aplicații similare și să o modificați. Formatul profilului este intuitiv. Cu toate acestea, pentru a filtra apelurile de sistem, va trebui să aflați care dintre ele utilizează aplicația și apoi adăugați-o la profil. Cum se face acest lucru este descris în documentația oficială.
Profil pentru aplicarea în Firejail3 Sistem de izolare aplicație SANDBOX.
Dacă printre cele 95 de profile Firejail nu există aplicații de care aveți nevoie, iar ideea de a scrie profiluri nu este prea fericită pentru dvs., atunci Sandbox este alegerea dvs. Acest tip de nisip diferă de cele două instrumente deja descrise (utilizează reguli SELinux în loc de seccomp și Namespaces), dar din punctul de vedere al funcționalității este ceva mediativ.
Această comandă citește fișierul / etc / passwd, extrage numele de utilizator din el și le scrie fișierului / tmp / utilizatorilor. Beneficii, nu, dar demonstrează perfect principiile sandbox-ului. Nisipul rulează numai comanda de tăiere, iar fișierul / etc / passwd este trecut la el folosind o comandă externă. Ieșirea, pe de altă parte, este implementată folosind obișnuitul redirecționare stdout.
Frumusețea Sandbox-ului este că, cu ajutorul acestuia, este destul de ușor să extindeți opțiunile disponibile pentru aplicație. De exemplu, puteți crea un director de domiciliu temporar și directorul / tmp pentru el, trecând doar un singur drapel la comandă:
După terminarea programului, aceste directoare vor fi distruse, ceea ce este foarte convenabil atunci când rulați un software non-credibil. Dar dacă directorul de domiciliu trebuie să fie salvat între run-uri (bine, să zicem, pentru a testa software-ul care funcționează cu o mulțime de fișiere)? Pentru a face acest lucru, trebuie doar să creați un director care să devină acasă la nisip și să adăugați o altă opțiune:
Dar asta nu e tot. Sandbox dispune de politici de securitate integrate pentru lansarea browserelor. Tot ce trebuie să faceți este să executați această comandă:
Și, așa cum a trebuit deja să înțelegeți, puteți utiliza diferite directoare de domiciliu pentru a rula sesiuni de browser diferite sau pentru a folosi un director de acasă "one time" pentru a vă deplasa în jurul locurilor de hassle. Un alt steag util care merită menționat este -w, cu ajutorul acestuia puteți specifica dimensiunea ferestrei pentru software-ul grafic. Este cu siguranță util pentru dvs., deoarece nu puteți schimba dinamic dimensiunea ferestrei (aceasta este limitarea tehnică a Xephyr).
În general, Sandbox este un instrument foarte convenabil, singura problemă a căruia este suportul în distribuții. De fapt, din caseta Sandbox funcționează numai în Fedora, bazată pe RHEL / CentOS și, probabil, pe alte distribuții cu SELinux implicit.
Comparare cu sandbox-ul CONCLUZII
Rulați software-ul în cutia de nisip este destul de simplă și pentru asta puteți folosi mai multe instrumente. În acest articol, am revizuit trei dintre ele.
- Mbox este extrem de simplu și ideal, când trebuie să controlați care fișiere trebuie să aibă acces la aplicație.
- Firejail este potrivit pentru crearea de configurații complexe și care rulează aproape sute de aplicații diferite, dar nu este foarte convenabil dacă aplicația dorită nu este în lista celor acceptate.
- Sandbox este un instrument excelent pentru rularea oricărui tip de software, dar este disponibil numai utilizatorilor Fedora și distribuțiilor sale.
Care dintre aceste instrumente să alegeți - decideți-vă singur. Și în articolul următor, ne vom arunca cu subtilitatea implementării sandbox-urilor și o vom crea cu mâinile noastre.