
Namespaces de Linux y sandbox seccomp-bpf
Firejail es una herramienta de seguridad ligera diseñada para proteger un sistema Linux mediante la creación de un entorno restringido para ejecutar aplicaciones (potencialmente no confiables).
Más específicamente, es un programa sandbox SUID que reduce el riesgo de brechas de seguridad mediante el uso de namespaces de Linux, seccomp-bpf y capacidades de Linux. Permite que un proceso y todos sus descendientes tengan su propia vista privada de los recursos del kernel compartidos globalmente, como la pila de red, la tabla de procesos y la tabla de montajes. Firejail puede funcionar en un entorno SELinux o AppArmor y está integrado con los Grupos de Control de Linux.
Escrito en C con prácticamente ninguna dependencia, el software se ejecuta en cualquier computadora Linux con una versión de kernel 3.x o superior. Puede sandboxear cualquier tipo de procesos: servidores, aplicaciones gráficas e incluso sesiones de inicio de sesión de usuarios. El software incluye perfiles de sandbox para varios de los programas Linux más comunes, como Mozilla Firefox, Chromium, VLC, Transmission, etc.
El sandbox es ligero y la sobrecarga es baja. No hay archivos de configuración complicados que editar, ni conexiones de socket abiertas, ni daemons ejecutándose en segundo plano. Todas las funciones de seguridad están implementadas directamente en el kernel de Linux y están disponibles en cualquier computadora Linux.
Véase SECURITY.md.
Para las versiones soportadas, consulte SECURITY.md.
Nota: Es probable que las versiones de Debian stable y backports estén desactualizadas, por lo que actualmente recomendamos descargar e instalar el paquete .deb de la última versión:
O compilar desde el código fuente.
Debian stable (bullseye): Recomendamos usar el paquete de backports.
Nota: Es probable que las versiones de la distribución y del PPA estén desactualizadas, por lo que actualmente recomendamos descargar e instalar el paquete .deb de la última versión:
O compilar desde el código fuente.
Nota: La recomendación del PPA es principalmente para firejail en sí; está bien instalar firetools y las herramientas relacionadas con firejail directamente desde la distribución si no están en el PPA, ya que tienden a actualizarse con menos frecuencia.
Para Ubuntu 18.04+ y derivados (como Linux Mint), se recomienda encarecidamente a los usuarios usar el PPA.
Cómo añadir e instalar desde el PPA:
sudo add-apt-repository ppa:deki/firejail
sudo apt-get update
sudo apt-get install firejail firejail-profiles
Motivo: El paquete firejail para Ubuntu 20.04 ha permanecido vulnerable a CVE-2021-26910 durante meses después de que se publicara un parche en Launchpad:
Véase también https://wiki.ubuntu.com/SecurityTeam/FAQ:
¿Qué software es compatible con el equipo de seguridad de Ubuntu?
Ubuntu está actualmente dividido en cuatro componentes: main, restricted, universe y multiverse. Todos los paquetes binarios en main y restricted están soportados por el equipo de seguridad de Ubuntu durante la vida de una versión de Ubuntu, mientras que los paquetes binarios en universe y multiverse están soportados por la comunidad de Ubuntu.
Además, es probable que la versión del PPA sea más reciente y contenga más correcciones de perfiles.
Consulte las siguientes discusiones para más detalles:
Firejail está disponible en múltiples distribuciones de Linux:
Aparte de las excepciones mencionadas anteriormente, mientras tu distribución proporcione una versión soportada de firejail, generalmente es una buena idea instalarlo desde la distribución.
La versión se puede comprobar con firejail --version después de instalarlo.
También puedes instalar uno de los paquetes publicados.
Instrucciones para compilar e instalar la versión de desarrollo actual desde el código fuente.
Se recomienda usar las instrucciones específicas de la distribución que aparecen a continuación cuando corresponda, ya que generan paquetes nativos, lo que debería facilitar la integración con el resto del sistema y la gestión de paquetes.
Para otras distribuciones, consulte las instrucciones genéricas.
Consulte también .gitlab-ci.yml para ver cómo se realizan las compilaciones específicas de cada distribución en CI.
Nota: El paquete AUR no está mantenido por nosotros.
Instala firejail-git desde el AUR.
Ejemplo:
yay -S firejail-git
Para Debian, Ubuntu y derivados:
Nota: Cualquier opción de ./configure debe pasarse a mkdeb.sh (como ./mkdeb.sh --enable-foo).
sudo apt-get update -qy
sudo apt-get install -qy \
git build-essential fakeroot lintian libapparmor-dev pkg-config gawk
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./mkdeb.sh &&
sudo dpkg -i ./*.deb &&
make installcheck
Para Fedora y derivados:
Nota: Cualquier opción de ./configure debe pasarse a mkrpm.sh (como ./platform/rpm/mkrpm.sh --enable-foo).
sudo dnf update -y
sudo dnf install -y rpm-build gcc make
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./platform/rpm/mkrpm.sh &&
sudo rpm -i ./*.rpm &&
make installcheck
Instrucciones genéricas de compilación/instalación:
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make -j "$(nproc)" &&
sudo make install-strip &&
make installcheck
En Debian/Ubuntu necesitarás instalar git y gcc.
Para compilar con soporte de AppArmor (que se usa normalmente en Debian, Ubuntu, openSUSE y derivados), instala las bibliotecas de desarrollo de AppArmor y pkg-config y usa la opción --enable-apparmor de ./configure:
sudo apt-get install git build-essential libapparmor-dev pkg-config gawk
Para compilar con soporte de SELinux (que se usa normalmente en Fedora, RHEL y derivados), instala libselinux1-dev (libselinux-devel en Fedora) y usa la opción --enable-selinux de ./configure.
Información detallada sobre el uso de firejail desde git está disponible en la wiki.
Nota: Asegúrate de usar la ruta completa al programa (por ejemplo, firejail /usr/bin/firefox en lugar de firejail firefox) para evitar posibles problemas de firejail dentro de firejail (consulte #2877).
Para iniciar el sandbox, antepone firejail a tu comando:
firejail /usr/bin/firefox # starting Mozilla Firefox
firejail /usr/bin/transmission-gtk # starting Transmission BitTorrent
firejail /usr/bin/vlc # starting VideoLAN Client
sudo firejail /etc/init.d/nginx start
Ejecuta firejail --list en una terminal para listar todos los sandboxes activos. Ejemplo:
$ firejail --list
1617:netblue:/usr/bin/firejail /usr/bin/firefox-esr
7719:netblue:/usr/bin/firejail /usr/bin/transmission-qt
7779:netblue:/usr/bin/firejail /usr/bin/galculator
7874:netblue:/usr/bin/firejail /usr/bin/vlc --started-from-file file:///home/netblue/firejail-whitelist.mp4
7916:netblue:firejail --list
Integra tu sandbox en tu escritorio ejecutando los siguientes dos comandos:
firecfg --fix-sound
sudo firecfg
El primer comando resuelve algunos errores de memoria compartida/namespaces de PID en el software PulseAudio anterior a la versión 9. El segundo comando integra Firejail en tu escritorio. Necesitarás cerrar sesión e iniciarla de nuevo para aplicar los cambios de PulseAudio.
Inicia tus programas de la manera a la que estás acostumbrado: menús del gestor de escritorio, gestor de archivos, lanzadores de escritorio.
La integración se aplica a cualquier programa soportado por defecto por Firejail. Hay más de 900 aplicaciones predeterminadas en la versión actual de Firejail, y el número aumenta con cada nueva versión.
Mantenemos la lista de aplicaciones en src/firecfg/firecfg.config (/etc/firejail/firecfg.config cuando está instalado).
La mayoría de las opciones de línea de comandos de Firejail se pueden pasar al sandbox mediante archivos de perfil.
Puedes encontrar los perfiles de todas las aplicaciones soportadas en etc/ (/etc/firejail/ cuando está instalado).
También mantenemos una lista de correcciones de perfiles para versiones anteriores en etc-fixes/.
Si mantienes perfiles de seguridad adicionales de Firejail en un repositorio público, por favor envíanos un enlace:
Usa este issue para solicitar nuevos perfiles:
También puedes usar esta herramienta para obtener una lista de las syscalls que necesita un programa:
firecfg crea enlaces simbólicos en /usr/local/bin, así que para eliminar firejail por completo, ejecuta lo siguiente antes de desinstalarlo:
sudo firecfg --clean
Consulta man firecfg para más detalles.
Nota: Los enlaces simbólicos rotos se ignoran al buscar un ejecutable en $PATH, por lo que desinstalar sin hacer lo anterior no debería causar problemas.
LANDLOCK
Landlock is a Linux security module first introduced in version 5.13 of
the Linux kernel. It allows unprivileged processes to restrict their
access to the filesystem. Once imposed, these restrictions can never
be removed, and all child processes created by a Landlock-restricted
processes inherit these restrictions. Firejail supports Landlock as an
additional sandboxing feature. It can be used to ensure that a sand‐
boxed application can only access files and directories that it was ex‐
plicitly allowed to access. Firejail supports populating the ruleset
with both a basic set of rules (see --landlock) and with a custom set
of rules.
Important notes:
- A process can install a Landlock ruleset only if it has either
CAP_SYS_ADMIN in its effective capability set, or the "No New
Privileges" restriction enabled. Because of this, enabling the
Landlock feature will also cause Firejail to enable the "No New
Privileges" restriction, regardless of the profile or the
--nonewprivs command line option.
- Access to the /proc directory is managed through the --land‐
lock.proc command line option.
- Access to the /etc directory is automatically allowed. To
override this, use the --writable-etc command line option. You
can also use the --private-etc option to restrict access to the
/etc directory.
To enable Landlock self-restriction on top of your current Firejail se‐
curity features, pass --landlock flag to Firejail command line. You
can also use --landlock.read, --landlock.write, --landlock.special and
--landlock.execute options together with --landlock or instead of it.
Example:
$ firejail --landlock --landlock.read=/media --landlock.proc=ro /usr/bin/mc
Una pequeña herramienta para imprimir estadísticas de perfiles. Compila e instala como de costumbre. La herramienta se instala en el directorio /usr/lib/firejail.
Ejecútala sobre los perfiles en /etc/profiles:
$ /usr/lib/firejail/profstats /etc/firejail/*.profile
No include .local found in /etc/firejail/noprofile.profile
Warning: multiple caps in /etc/firejail/tidal-hifi.profile
Warning: multiple caps in /etc/firejail/tqemu.profile
Warning: multiple caps in /etc/firejail/transmission-daemon.profile
Warning: multiple caps in /etc/firejail/trivalent.profile
Stats:
profiles 1342
include local profile 1341 (include profile-name.local)
include globals 1307 (include globals.local)
blacklist ~/.ssh 1201 (include disable-common.inc)
seccomp 1213
capabilities 1335
noexec 1214 (include disable-exec.inc)
noroot 1105
memory-deny-write-execute 320
restrict-namespaces 1048
apparmor 869
private-bin 817
private-dev 1172
private-etc 842
private-cache 865
private-lib 86
private-tmp 1036
whitelist home directory 662
whitelist var 975 (include whitelist-var-common.inc)
whitelist run/user 1305 (include whitelist-runuser-common.inc
or blacklist ${RUNUSER})
whitelist usr/share 760 (include whitelist-usr-share-common.inc
net none 452
dbus-user none 766
dbus-user filter 206
dbus-system none 970
dbus-system filter 13
Inicio rápido |
Seguridad avanzada del navegador |
Seguridad del navegador Tor |