Viernes, Diciembre 15, 2017

Aislando aplicaciones del resto del sistema con Firejail

Firejail es una herramienta escrita en lenguaje de programación C que nos permite crear un sandboxing en nuestro sistema Linux. Es especialmente útil para ejecutar programas en los que no confiamos demasiado, dentro de un entorno con privilegios limitados.

El programa se usa desde la terminal –aunque también está disponible una interfaz gráfica llamada FireTools–, apenas consume recursos, no necesita permisos de root y su uso básico no es nada complicado:

firejail [aplicación_a_ejecutar]

Por ejemplo:

firejail chromium

Como veis he optado por lanzar un navegador web. En muchos casos podéis juzgar si el programa está funcionando correctamente, por la imposibilidad de acceder a determinados archivos (html, txt…) de vuestro directorio personal.

Es decir podemos ejecutar el programa con nuestros privilegios de usuario normales, pero se proporciona una seguridad adicional al modificar el comportamiento habitual del programa respecto a aquellos directorios y archivos de los que somos dueños. Para ello intervienen diferentes capacidades del Linux Kernel que permiten el aislamiento de procesos y el filtrado de las llamadas al sistema (seccomp-bpf).

Para asegurarnos de que Chromium o cualquier otro programa esta siendo manejado por Firejail, podemos utilizar el parámetro list:

[jose@replicante ~]$ firejail --list
16338:jose:firejail chromium

Además es compatible con suites de seguridad como AppArmor y SELinux o la versión del kernel que ofrece Grsecurity. Firejail permite aislar procesos del sistema de archivos, así como limitar el acceso a determinadas funciones de las interfaces de red. En este ejemplo creamos una sandbox que evita el acceso a cualquier conexión de red por parte del reproductor de audio Clementine:

firejail --net=none clementine

Firejail nos permite crear perfiles personalizados para todo tipo de aplicaciones o listas blancas para el acceso a determinados archivos.

De forma predeterminada ya existen diversos perfiles de uso –una vez instalado, los podéis consultar en el directorio /etc/firejail–, que abarcan múltiples programas: navegadores, editores de texto, juegos, clientes de correo, administradores de archivos, lectores de documentos, herramientas de chat, reproductores multimedia, etc.

Y configuraciones algo más específicas como las dirigidas a servidores, la plataforma de juegos Steam, cosas que no son un emulador pero lo parecen (Wine) o protocolos tipo SSH. En el caso de que un programa determinado no tenga un perfil personalizado se le aplica el general de Firejail.

Quizás cuando se implante definitivamente el protocolo de servidor gráfico Wayland y los paquetes Flatpaks o Snaps sean más populares, Firejail –en algunos de sus usos– ya no sea tan necesario, por las características de sandboxing que implementan. Pero convengamos que Xorg tampoco se va a ir de la noche a la mañana.

Y hablando de paquetes autocontenidos… Firejail es una buena opción para echar a andar las AppImages sin ningún tipo de riesgo (paquetes genéricos que no precisan instalación y que se están haciendo populares a la hora de distribuir nuevas versiones de software).

Por ej:

firejail --appimage krita*.appimage

Incluso tenemos la opción de habilitar un modo privado que esconde nuestro directorio /home, proporcionando una estructura de archivos temporal (lo justo para poder ejecutar las aplicaciones). Una vez finalizado el sandboxing cualquier archivo creado será destruido.

firejail --appimage --private krita*.appimage

Si le echáis un vistazo al manual vais a encontrar muchas más opciones de ejecución:

man firejail

Instalación en Linux

Firejail está disponible en los repositorios de las principales distribuciones GNU/linux. Vamos a ver como instalarlo en algunas de ellas tirando de terminal:

  • En Arch Linux o alguna de sus hijas (Antergos, Manjaro, Apricity, ArchBang), nos lo encontramos en los repos oficiales:
sudo pacman -S firejail
  • Los usuarios de openSUSE lo pueden instalar a través de 1-click, seleccionando la versión de su distro (Tumbleweed o Leap)
  • En Gentoo:
sudo emerge --ask sys-apps/firejail

con opción de una versión LTS de firejail:

sudo emerge --ask sys-apps/firejail-lts
  • Para Fedora, se descarga el paquete RPM correspondiente desde SourceForge y lo instalamos con:
sudo rpm -i *.rpm
  • Usuarios de Debian y derivadas como Ubuntu, Elementary o Linux Mint (también existen paquetes deb en SourceForge):
sudo apt install firejail
  • Además dado que no exige apenas dependencias, Firejail debería poder ser compilado sin dificultades, en cualquier distro mediante los siguientes comandos:
$ git clone https://github.com/netblue30/firejail.git
$ cd firejail
$ ./configure && make && sudo make install-strip

Si estáis interesados en el programa tenéis una abundante documentación así como diversos ejemplos de uso en la web de Firejail.

 

Fuente: lamiradadelreplicante

¿Quién está en línea?

Hay 46 invitados y ningún miembro en línea

Contador de Visitas

9074177
Hoy Hoy 480
Ayer Ayer 782
Esta semana Esta semana 4016
Este mes Este mes 12944
Total de Visitas Total de Visitas 9074177

Día con más
visitantes

11-11-2017 : 2493

Gracias por su visita