Ho deciso di rafforzare la sicurezza sulla mia workstation principale un po '. Prima ho usato firejail
per alcune app meno affidabili (tutte le app con accesso a internet) ma è una specie di giocattolo. Non ha funzionato molto bene per me. Così ho provato a leggere sugli strumenti real che sono SELinux e AppArmor.
Mentre diciamo che capisco come potrebbe essere vantaggioso per il server - gestisce solo poche, ben note app con profili ben noti, è necessario abilitare il profilo e funziona. Freddo. Ma completamente non vedo come dovrebbe funzionare per workstation o desktop. Non sono sicuro se sia vero o mi manchi qualcosa ma se ho capito bene sia AppArmor che SELinux richiedono profili per proteggere le app. E quei profili devono essere pre-preparati. Da qualcuno. Per ogni app
Ok, quindi sto usando OpenSUSE sulla mia workstation. Gestisce molte app, quindi ho scelto di installare un DVD completo. Sono circa 16 GB di software pronti all'uso. Poiché lo sto utilizzando anche per lo sviluppo web, ho installato anche decine di browser Web, ecc. Flashplayer ecc.
lapsio@linux-6o92 ~> ll /usr/bin/ | grep -vc "^l"
4225
lapsio@linux-6o92 ~> ls /etc/apparmor.d/ | wc -l
46
Ovviamente non tutte le app in /usr/bin
sono completamente autonome ma diciamo anche che ci sono circa 100-300 app grandi, potenzialmente vulnerabili e pericolose - perché include praticamente ogni singola app che opera su file provenienti da un luogo non affidabile - le immagini possono usare exploit in libmagic, documenti di alcune macro, file svg con javascript, persino blender permette di eseguire script python incorporati nel file 3d, ovviamente tutti i browser, tutte le app con qualsiasi capacità web, ecc., così via. Quindi, tra quelle 300 app ... nelle regole degli apparmor, vedo forse 5 che in realtà appartengono all'elenco di quelle grandi app vulnerabili.
Il punto è: è praticamente impossibile creare un profilo per ogni singola app nel sistema operativo. L'approccio alla lista nera è quasi sempre negativo quando parliamo di sicurezza. Quindi c'è qualche soluzione di whitelist? Non sto dicendo che Android sia super sicuro, ma d'altra parte - sembra davvero separare tutte le app l'una dall'altra.
La soluzione ideale sarebbe quella di consentire ad ogni app di accedere in modo predefinito solo ai propri file (determinati dal gestore di pacchetti) e senza accesso a Internet. Quindi dare il permesso esplicito a qualsiasi altro percorso o accesso a Internet solo a determinate app. Mentre il secondo obiettivo può essere facilmente raggiunto con le appropriate regole di iptables, uno suona come qualcosa che dovrebbe essere raggiunto da SELinux o AppArmor. Ma non vedo come.