landlock_restrict_self(2)

NUME
landlock_restrict_self - aplică un set de reguli Landlock

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <linux/landlock.h>  /* Definirea constantelor LANDLOCK_* */
#include <sys/syscall.h>     /* Definirea constantelor SYS_* */

int syscall(SYS_landlock_restrict_self, int ruleset_fd,
            uint32_t fanioane);

DESCRIERE
Odată ce un set de reguli Landlock este completat cu regulile dorite, apelul de sistem landlock_restrict_self() aplică acest set de reguli firului apelant. Consultați landlock(7) pentru o prezentare generală.

Un fir poate fi restricționat cu mai multe seturi de reguli care sunt apoi compuse împreună pentru a forma domeniul Landlock al firului. Acest lucru poate fi văzut ca o stivă de seturi de reguli, dar este implementat într-un mod mai eficient. Un domeniu poate fi actualizat numai în așa fel încât constrângerile fiecărui set de reguli compus în trecut și în viitor să restricționeze firul și viitorii săi copii pe toată durata de viață. Astfel, este posibilă aplicarea treptată a unor politici de control al accesului personalizate cu mai multe seturi de reguli independente provenind din surse diferite (de exemplu, configurația sistemului de inițiere „init”, politica sesiunii utilizatorului, politica integrată a aplicației). Cu toate acestea, majoritatea aplicațiilor ar trebui să aibă nevoie doar de un singur apel la landlock_restrict_self() și ar trebui să evite un număr arbitrar de astfel de apeluri din cauza limitei seturilor de reguli compuse. În schimb, dezvoltatorii sunt încurajați să construiască un singur set de reguli adaptate cu apeluri multiple la landlock_add_rule(2).

Pentru a aplica un set de reguli, fie apelantul trebuie să aibă capacitatea CAP_SYS_ADMIN în spațiul său de nume de utilizator, fie firul trebuie să aibă deja activat bitul no_new_privs. În ceea ce privește seccomp(2), acest lucru evită scenariile în care procesele neprivilegiate pot afecta comportamentul copiilor privilegiați (de exemplu, din cauza binarelor set-user-ID). Dacă acest bit nu a fost deja activat de un antecesor al acestui fir, firul trebuie să efectueze următorul apel:

        prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);

ruleset_fd este un descriptor de fișier de set de reguli Landlock obținut cu landlock_create_ruleset(2) și complet încărcat cu un set de apeluri către landlock_add_rule(2).

În mod implicit, accesele refuzate provenite de la programe care se izolează în medii de tip sandbox sunt înregistrate prin intermediul subsistemului de audit. Astfel de evenimente indică de obicei un comportament neașteptat, cum ar fi erori sau încercări de exploatare. Cu toate acestea, pentru a evita înregistrarea excesivă, cererile de acces refuzate de un domeniu care nu a fost creat de programul de origine nu sunt înregistrate în mod implicit. Raționamentul este că programele ar trebui să-și cunoască propriul comportament, dar nu neapărat comportamentul altor programe. Această configurație implicită este potrivită pentru majoritatea programelor care se izolează în medii de tip sandbox. Pentru cazuri de utilizare specifice, următoarele fanioane permit programelor să modifice acest comportament implicit de jurnalizare.

Fanioanele LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF și LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON se aplică domeniului Landlock nou creat.

LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF
    Dezactivează înregistrarea acceselor refuzate provenite de la procesul care creează domeniul Landlock, precum și de la procesele sale copil, atâta timp cât acestea continuă să execute același cod executabil (adică fără un apel execve(2) intermediar). Această opțiune este destinată programelor care execută cod necunoscut fără a apela execve(2), cum ar fi interpreții de scripturi. Programele care se izolează doar pe ele însele nu ar trebui să activeze acest fanion, astfel încât utilizatorii să poată fi notificați cu privire la încercările de acces neautorizate prin intermediul jurnalelor de sistem.

LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON
    Activează înregistrarea acceselor refuzate după un apel execve(2), oferind o imagine de ansamblu asupra încercărilor de acces neautorizate efectuate de programele nou executate în cadrul domeniului Landlock creat. Se recomandă utilizarea acestui fanion numai în cazul în care se preconizează că toate fișierele executabile potențiale din domeniu respectă restricțiile de acces, întrucât un număr excesiv de intrări în jurnalul de audit ar putea îngreuna identificarea evenimentelor critice.

LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF
    Dezactivează înregistrarea acceselor refuzate provenite din domenii Landlock imbricate create de apelant sau de descendenții acestuia. Acest fanion trebuie să fie activat în funcție de configurația din timpul rulării, nu codificat static, pentru a evita suprimarea unor evenimente importante de securitate. Este util pentru medii de execuție de tip container sau instrumente de tip sandbox care pot lansa programe care, la rândul lor, creează domenii Landlock și ar putea genera altfel jurnale excesive. Spre deosebire de LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF, acest fanion afectează doar domeniile imbricate viitoare, nu pe cel care este creat. De asemenea, poate fi utilizat cu o valoare ruleset_fd de -1 pentru a dezactiva jurnalele subdomeniilor fără a crea un domeniu.

Următorul fanion permite aplicarea politicilor în procesele cu mai multe fire de execuție:

LANDLOCK_RESTRICT_SELF_TSYNC  (începând cu ABI-ul Landlock versiunea 8)
    Aplică noua configurație Landlock în mod atomic tuturor firelor de execuție ale procesului curent, inclusiv domeniul Landlock și configurația de jurnalizare. Aceasta înlocuiește configurația Landlock a firelor de execuție înrudite, indiferent de domeniile Landlock și configurațiile de jurnalizare stabilite anterior pe acele fire de execuție.

    Dacă firul care efectuează apelul rulează cu no_new_privs, această operație activează no_new_privs și pentru firele înrudite.

VALOAREA RETURNATĂ
În caz de succes, landlock_restrict_self() returnează 0. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE
landlock_restrict_self() poate eșua din următoarele motive:

E2BIG
    Numărul maxim de seturi de reguli compuse este atins pentru firul de apelare. Această limită este în prezent de 64.

EBADF
    ruleset_fd nu este un descriptor de fișier pentru firul curent.

EBADFD
    ruleset_fd nu este un descriptor de fișier de set de reguli.

EINVAL
    Valoare nevalidă în fanioane.

EOPNOTSUPP
    Landlock este acceptat de nucleu, dar este dezactivat la pornire.

EPERM
    ruleset_fd nu are acces de citire la setul de reguli subiacente, sau firul apelant nu rulează cu no_new_privs, sau nu are CAP_SYS_ADMIN în spațiul de nume al utilizatorului.

STANDARDE
Linux.

ISTORIC
Linux 5.13.

EXEMPLE
A se vedea landlock(7).

CONSULTAȚI ȘI
landlock_create_ruleset(2), landlock_add_rule(2), landlock(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.