Blog de C3PO

Usas firejail?

Al trabajar con un sistema operativo, en mi caso GNU/Linux, hay veces que necesitas una mayor seguridad. Como por ejemplo cuando bajas un archivo PDF o de otro tipo y no sabes si puede estar infectado y que esta infección pueda afectar a todo tu sistema. O quizás vas a navegar por alguna web dudosa. Hay muchas opciones donde quizás te convenga aislar o dar algo más de seguridad a la aplicación o programa que vas a usar para que acciones potencialmente maliciosas no afecten al resto del sistema y limitar los privilegios de las aplicaciones.

Aquí es donde entra en juego firejail. Firejail es una utilidad de sandboxing que permite ejecutar aplicaciones no confiables dentro de GNU/Linux en un entorno con privilegios restringidos.

Es mucho más seguro usar una máquina virtual pero también es más engorroso y puedes perder más tiempo arrancándola para mirar únicamente un archivo o una web. Por lo que en mi caso prefiero más usar firejail de vez en cuando.

Instalar firejail es muy sencillo. Creo que todas las distribuciones traen este programa en sus repositorios. Y una vez instalado no debes configurar nada para que funcione, simplemente funciona, pero lógicamente sí que puedes cambiar algo que no te guste en su configuración o programas permitidos.

Para ejecutar un programa con firejail, tan solo es abrir tu consola y ejecutarlo hacia un programa:

firejail programa

No funciona para cualquier programa, ya trae una lista de los programas en los que va a ir bien. Todo es ir probando si tu programa es permitido o no. Sé que pueden añadirse nuevos programas pero nunca me puse a ello por no necesitarlo aún. Es algo que tengo pendiente.

Hay opciones que se le pueden dar a este comando a la hora de abrir un programa. Os dejo las que más suelo usar:

  • La opción --seccomp indica a Firejail que filtre y bloquee cualquiera de las llamadas al sistema.

  • La opción --private actúa de forma similar a como lo hace una ventana privada en un navegador web. Crea un sandbox separado en el almacenamiento temporal y se borra después de cerrar la aplicación.

Puedes mirar más opciones en el manual, que las hay muy interesantes como las de red con --net y quizás quieras usarlas, ya sabes:

man firejail

Lógicamente puedes combinar ambas, como por ejemplo:

firejail --seccomp --private firefox

Igual eres de los que siempre te gustaría restringir todos tus programas, al menos los permitidos por firejail. En este caso también hay solución, aunque en mi caso yo nunca lo uso así, prefiero ejecutar a voluntad el programa de forma restringida cuando lo desee. Además, muchos programas suelen ejecutarse más limitados al usar firejail, y no con todo lo que querrías tener. Pero si lo quieres así, es tan sencillo como ejecutar como root o con sudo este comando:

firecfg

Si luego te arrepientes de esto, siempre puedes volver atrás con:

firecfg --clean

Igual nunca habías usado firejail y por esto os lo quería comentar. Puede resultar muy útil para proteger más vuestro sistema. Os animo a buscar más información y mirar todas sus opciones.

Resumiendo:

  • Seguridad mejorada: mejora la seguridad de tu sistema GNU/Linux aislando las aplicaciones dentro de sandboxes. Este aislamiento evita que acciones potencialmente maliciosas afecten al resto del sistema y limita los privilegios de las aplicaciones.

  • Restricción de recursos: te permite controlar el acceso de una aplicación a varios recursos del sistema. Puede restringir el acceso a la red, limitar el acceso al sistema de archivos y ejecutar aplicaciones con privilegios reducidos, proporcionando una capa adicional de defensa contra amenazas potenciales.

  • Fácil de usar: ofrece una sencilla interfaz de línea de comandos que permite hacer sandbox a aplicaciones con sólo unos pocos comandos. Además, Firejail proporciona perfiles predefinidos para muchas aplicaciones comunes, simplificando el proceso de sandboxing.

  • Personalización: te permite crear perfiles personalizados adaptados a tus necesidades específicas. Puedes ajustar las restricciones y permisos para cada aplicación, dándole un control granular sobre cómo interactúan con el sistema.

  • Compatibilidad multiplataforma: aunque desarrollado principalmente para GNU/Linux, Firejail también es compatible con otros sistemas operativos tipo Unix como FreeBSD, OpenBSD y macOS.