Un mecanism de izolare similar cu plegde and unveil este dezvoltat pentru FreeBSD

Pentru FreeBSD, este propusă o implementare a unui mecanism de izolare a aplicațiilor, care amintește de apelurile de sistem plegde și unveil dezvoltate de proiectul OpenBSD. Izolarea în plegde se realizează prin interzicerea accesului la apelurile de sistem care nu sunt utilizate în aplicație și, în dezvăluire, prin deschiderea selectivă a accesului numai la căile individuale ale fișierelor cu care aplicația poate funcționa. Pentru aplicație, se formează un fel de listă albă de apeluri de sistem și căi de fișiere, iar toate celelalte apeluri și căi sunt interzise.

Diferența dintre analogul plegde și unveil dezvoltat pentru FreeBSD se rezumă la furnizarea unui strat suplimentar care vă permite să izolați aplicațiile fără a aduce modificări codului lor sau cu modificări minime. Amintiți-vă că în OpenBSD, plegde și unveil au ca scop o integrare strânsă cu mediul de bază și sunt utilizate prin adăugarea de adnotări speciale la codul fiecărei aplicații. Pentru a simplifica organizarea protecției, filtrele vă permit să renunțați la detalii la nivelul apelurilor de sistem individuale și să manipulați clase de apeluri de sistem (intrare/ieșire, citire fișiere, scriere fișiere, sockets, ioctl, sysctl, lansare proces etc.) . Funcțiile de restricționare a accesului pot fi apelate în codul aplicației pe măsură ce sunt efectuate anumite acțiuni, de exemplu, accesul la socluri și fișiere poate fi refuzat după deschiderea fișierelor necesare și stabilirea unei conexiuni la rețea.

Autorul portului de plegde și dezvăluire pentru FreeBSD intenționează să ofere capacitatea de a izola aplicații arbitrare, pentru care este propus utilitarul cortina, care vă permite să aplicați aplicațiilor reguli definite într-un fișier separat. Configurația propusă include un fișier cu setări de bază care definesc clase de apeluri de sistem și căi tipice ale fișierelor specifice anumitor aplicații (lucrare cu sunet, interacțiune cu rețea, logare etc.), precum și un fișier cu reguli de acces pentru anumite aplicații.

Utilitarul cortină poate fi utilizat pentru a izola majoritatea utilităților nemodificate, proceselor de server, aplicațiilor grafice și chiar sesiunilor întregi de desktop. Cortina poate fi folosită împreună cu mecanismele de izolare oferite de subsistemele Jail și Capsicum. De asemenea, este posibil să se organizeze izolarea imbricată, atunci când aplicațiile lansate moștenesc regulile stabilite pentru aplicația părinte, completându-le cu restricții individuale. Unele operațiuni ale nucleului (facilități de depanare, POSIX/SysV IPC, PTY-uri) sunt protejate suplimentar de un mecanism de barieră care împiedică accesul la obiectele nucleului care nu sunt create de procesul curent sau părinte.

Un proces își poate configura propria izolare apelând curtainctl sau folosind funcțiile plegde() și unveil() ale libcurtain, similare cu cele găsite în OpenBSD. Pentru a urmări blocările în timp ce aplicația rulează, este furnizat sysctl „security.curtain.log_level”. Accesul la protocoalele X11 și Wayland este activat separat prin specificarea opțiunilor „-X”/”-Y” și „-W” atunci când rulează cortina, dar suportul pentru aplicațiile grafice nu este încă suficient stabilizat și are o serie de probleme nerezolvate ( problemele apar în principal la utilizarea X11, iar suportul Wayland este implementat mult mai bine). Utilizatorii pot adăuga restricții suplimentare prin crearea fișierelor de reguli locale (~/.curtain.conf). De exemplu, pentru a permite scrierea din Firfox numai în directorul ~/Downloads/, puteți adăuga o secțiune „[firefox]” cu regula „~/Downloads/ : rw +”.

Implementarea include modulul mac_curtain kernel pentru controlul accesului obligatoriu (MAC, Mandatory Access Control), un set de patch-uri pentru nucleul FreeBSD cu implementarea handlerelor și filtrelor necesare, biblioteca libcurtain pentru utilizarea funcțiilor plegde și unveil în aplicații, utilitarul cortina, exemple de fișiere de configurare, un set de teste și patch-uri pentru unele programe din spațiul utilizatorului (de exemplu, pentru utilizarea $TMPDIR pentru a unifica munca cu fișierele temporare). Acolo unde este posibil, autorul intenționează să minimizeze numărul de modificări care necesită corecții pentru nucleu și aplicații.

Sursa: opennet.ru

Adauga un comentariu