[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: creazione sandbox usando Linux Security Module (LSM)



Buongiorno Davide,
grazi per le interessanti informazioni.

Il 21/04/25 09:01, Davide Prina ha scritto:
Ho visto questa applicazione: landrun[¹]
da poco arrivato in Debian unstable[²]

Interessante, Landlock usa Linux Security Module (LSM). LSM è presente da Linux 5.13, indicato come complesso da usare direttamente. Landlock è un'applicazione che permette di mettere in una sandbox tutte le applicazioni senza nessun privilegio. Con Linux >= 6.7 si possono applicare anche restrizioni di rete (TCP bind/connect)

Ad esempio
# landrun --rox /usr touch /tmp/file
touch: cannot touch '/tmp/file': Permission denied
# landrun --rox /usr --rw /tmp touch /tmp/file
#

È indicata simile a firejail, ma con la sicurezza a livello Linux e con un overhead minimo.
Unica dipendenza è Go >= 1.18 (naturalmente go includendo tutte le librerie al suo interno ha le dipendenze soddisfatte nell'eseguibile).

Davvero interessante, questo potrebbe sostituire diversi metodi di protezione attuale (lato utente).
Per ora ho soltanto letto la documentazione e guardato gli esempi

Poi ho visto che ne esiste anche un altro hakoniwa[³], non in Debian
questo in rust (se devo essere sincero mi è piaciuto l'obiettivo di rust all'inizio, ma ora sono quasi contrario al suo uso: non è vero che qualsiasi cosa in rust è sicura; ha una libreria di base minuscola e questo causa l'uso di una marea di altre librerie di terze parti per qualsiasi cosa, inoltre è possibile disabilitare la "sicurezza rust").

Non ho approfondito più di tanto, ma dalla descrizione sembra che per questo ci siano funzionalità in più, anche se sembra molto più complesso da usare.


Tra i maggiori utilizzatori di Linux Security Module c'è apparmor e selinux. Apparmor usato ormai di default in Debian... anche se avevo letto che si stava proponendo/discutendo di abbandonarlo e passare a selinux. Da quel che ho capito selinux permette di configurare con un dettaglio maggiore, ma è più complesso da configurare/gestire.


Questa cosa è interessante perche anche su lato SUSE/OpenSUSE stanno parlando di questo (o almeno cosi ho letto).

Io ho usato tutti e due, creare policy con AA è molto più semplice che crearle con SELinux. Per esempio su AA generalmente basta inserire i path a cui il programma può accedere con le relative flags e lo carichi, molto facile, intuitivo a pratico. Su SELinux devi creare la policy, compilarla e poi caricarla (stando attendo a non mettere un allow delle regole che non intendi mettere, alla fine audit2allow è lo strumento principale che ho usato per crearle ma alla fine mi sono ritrovato a creare la policy su una macchina virtuale senza nessun servizio oltre quello per il quale dovevo creare la policy per non creare casini). Per esempio SELinux permette di creare utenti e abbinarli ad un ruolo SELinux, oppure ha dei boolean che permettono per esempio di non far comunicare httpd (da noi apache2) con un DB. È molto più complesso ma molto più potente. Non ho mai capito se AA abbia dei meccanismi che permette di bloccare il lavoro con altri software via rete.

Hai un link della discussione?

Grazie in anticipo.

Alessandro.


Reply to: