Decidí reforzar un poco la seguridad en mi estación de trabajo principal. Antes solía usar firejail
para ciertas aplicaciones menos confiables (todas las aplicaciones con acceso a Internet) pero es una especie de juguete. No funcionó muy bien para mí. Así que traté de leer sobre las herramientas reales que son SELinux y AppArmor.
Aunque digamos que entiendo cómo puede ser beneficioso para el servidor: ejecuta pocas aplicaciones conocidas con perfiles conocidos, es necesario habilitar el perfil y funciona. Guay. Pero no veo completamente cómo se supone que funciona para una estación de trabajo o un escritorio. No estoy seguro de si es verdad o me estoy perdiendo algo, pero si entendí bien, tanto AppArmor como SELinux requieren perfiles para asegurar las aplicaciones. Y esos perfiles deben ser pre-preparados. Por alguien. Para cada aplicación.
Bien, entonces estoy usando OpenSUSE en mi estación de trabajo. Funciona con muchas aplicaciones, así que elegí instalar DVD completo. Es alrededor de 16 GB de software de la caja. Como lo estoy usando también para el desarrollo web, además instalé una docena de navegadores web, etc, flashplayer, etc.
lapsio@linux-6o92 ~> ll /usr/bin/ | grep -vc "^l"
4225
lapsio@linux-6o92 ~> ls /etc/apparmor.d/ | wc -l
46
Por supuesto, no todas las aplicaciones en /usr/bin
son aplicaciones completamente independientes, pero digamos que hay alrededor de 100-300 aplicaciones grandes, potencialmente vulnerables y peligrosas, ya que incluyen casi todas las aplicaciones que operan en archivos de algún lugar no confiable - Las imágenes pueden utilizar exploits en libmagic, documentar algunas macros, archivos svg con javascript, e incluso Blender permite ejecutar scripts de Python incrustados en un archivo 3d, por supuesto, todos los navegadores, todas las aplicaciones con capacidades web, etc. Así que de esas 300 aplicaciones ... en las reglas de la apparmor veo tal vez 5 que realmente pertenecen a la lista de esas aplicaciones vulnerables grandes.
El punto es: es prácticamente imposible crear un perfil para cada aplicación en el sistema operativo. El enfoque de lista negra es casi siempre malo cuando hablamos de seguridad. Entonces, ¿hay alguna solución de lista blanca? No estoy diciendo que Android sea super seguro, pero por otro lado, parece que realmente separa todas las aplicaciones entre sí.
La solución ideal sería permitir que todas las aplicaciones de forma predeterminada accedan solo a los archivos propios (determinados por el administrador del paquete) y no a acceso a Internet. Luego, para dar permiso explícito a cualquier otra ruta o acceso a Internet solo a ciertas aplicaciones. Si bien el segundo objetivo se puede lograr fácilmente con las reglas apropiadas de iptables, el primero es algo que debe ser alcanzado por SELinux o AppArmor. Pero no veo cómo.