Firejail | Protege Sistemas Linux Aislando Sesiones de Usuario, Aplicaciones y Servidores

ARCHIVOS DE REGLAS DE FIREJAIL

AISLAR SESIONES DE TERMINAL

INTEGRAR FIREJAIL CON EL ENTORNO DE ESCRITORIO PARA AISLAR APLICACIONES GRÁFICAS

CREAR PERFIL PERSONALIZADO PARA INTEGRAR EL AISLAMIENTO DE BASH CON EL ENTORNO DE ESCRITORIO

AISLANDO UN SERVIDOR WEB NGINX

# myNginx.profile | Sandbox para Servidor Web NGINX

# Importar Reglas Comunes de Servidores
include /etc/firejail/server.profile
include /etc/firejail/disable-common.inc
include /etc/firejail/disable-programs.inc

# Aislamiento del Sistema de Archivos
private
private-dev
private-tmp
private
private-dev
private-tmp
whitelist /etc/nginx
whitelist /etc/ssl
whitelist /etc/hosts
whitelist /etc/resolv.conf
whitelist /etc/passwd
whitelist /etc/group

# Directorios Temporales para Nginx en Firejail
mkdir /tmp/nginx
mkdir /tmp/nginx/client-body
mkdir /tmp/nginx/proxy
mkdir /tmp/nginx/fastcgi
mkdir /tmp/nginx/uwsgi
mkdir /tmp/nginx/scgi

# Permitir Acceso al Contenido Web
whitelist /usr/share/nginx/html
whitelist /etc/nginx
whitelist /var/log/nginx
whitelist /var/lib/nginx
whitelist /etc/group
whitelist /usr/local/bin
read-only /etc/nginx

# Seguridad del entorno
noexec /tmp
seccomp
nonewprivs

# Red
netfilter
protocol unix,inet #,inet6 (Puedes usar IPv6 si lo necesitas)

# Variables de Entorno Mínimas
env PATH=/usr/sbin:/usr/bin
env LANG=C

# Usuarios y permisos
nogroups
# Desactivar Privilegios root Dentro del Sandbox si es Posible
noroot

# Proceso
restrict-namespaces
# Archivo /etc/nginx/nginx.conf Optimizado para Ejecución dentro de Firejail
# Evitando Dependencias del Sistema y Utilizando /tmp/nginx como Directorio de Escritura

# Nginx en Arch Linux usa el usuario http
# Modificar si utilizas otra versión o distribución de Linux.

# user http; <--- Descomentar Solo si Necesitas Ejecutar el Servidor Web con Privilegios Elevados como sudo o root.
worker_processes auto;
pid /tmp/nginx/nginx.pid;

events {
    worker_connections 1024;
    use epoll;
}

http {
    include mime.types;
    default_type application/octet-stream;

    aio off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    keepalive_timeout 65;
    types_hash_max_size 4096;
    server_tokens off;

    # Directorios Temporales Redirigidos a la Sandbox
    client_body_temp_path /tmp/nginx/client-body;
    proxy_temp_path /tmp/nginx/proxy;
    fastcgi_temp_path /tmp/nginx/fastcgi;
    uwsgi_temp_path /tmp/nginx/uwsgi;
    scgi_temp_path /tmp/nginx/scgi;

    # Logs dentro del Sandbox (persisten mientras dure la sesión)
    access_log /tmp/nginx/access.log;
    error_log  /tmp/nginx/error.log warn;

    # Configuración básica del servidor web
    server {
        listen 8080 default_server;
        #listen [::]:8080 default_server;

        server_name localhost;
        # /usr/share/nginx/html es la ruta para el contenido HTML que utiliza NGINX en Arch Linux
        # Cambiar por /var/www si es Necesario.
        root /usr/share/nginx/html;

        index index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

        # Deshabilitar Ejecución de Scripts (por seguridad si es necesario)
        location ~ \.php$ {
            return 403;
        }
    }
}

DESINSTALACIÓN LIMPIA DE FIREJAIL

Comments are closed