Tutoriales

Cómo instalar SELinux para endurecer el servidor web Nginx

Para usuarios de Linux que ya han estado expuestos RHELbasado en distribuciones tales como RHEL, sombrero de fieltro, AlmaLinuxy Linux rocoso, SELinux No es un concepto nuevo para ellos, ya que en su mayoría está preinstalado en sus sistemas.

¿Por qué es importante SELinux?

SELinux o Linux con seguridad mejorada Es un sistema de seguridad de Linux que pertenece al acceso de roles.si has estado con RHELSegún la distribución, SELinux Es posible que haya intentado bloquear la mayoría de las acciones iniciadas por el usuario (especialmente la configuración basada en la web) hasta que casi (o con éxito) optó por deshabilitarla.

Sin embargo, deshabilite SELinux Esto se desaconseja enfáticamente ya que debilita la huella de seguridad de su servidor. Otra forma de deshabilitar SELinux es asegurarse de que su configuración se implemente correctamente.al entender SELinux configuración, podemos hacer que funcione bien con otros paquetes instalados de Linux.

[ You might also like: How to Password Protect Directory in Nginx Web Server ]

Este artículo nos guiará a través de la configuración básica que se puede lograr SELinux Porque no solo funciona bien con el servidor web Nginx, sino que también lo fortalece.

Instalar el servidor web Nginx en Linux

Este artículo requiere Nginx Instálelo en su distribución de sistema operativo Linux. Para diferentes administradores de paquetes de Linux, consulte las siguientes guías de instalación:

$ sudo apt install nginx      [On Debian, Ubuntu and Mint]
$ sudo yum install nginx      [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo apk add nginx          [On Alpine Linux]
$ sudo emerge -a nginx        [On Gentoo Linux]
$ sudo pacman -S nginx        [On Arch Linux]
$ sudo zypper install nginx   [On OpenSUSE]    

Una vez que se instala nginx, se pueden usar los siguientes comandos para habilitar, iniciar y verificar el estado.

$ sudo systemctl enable nginx
$ sudo systemctl start nginx
$ sudo systemctl nginx status

Instalar SELinux en Linux

En distribuciones de Linux como Debian, ubuntu, arco linuxy Mánzaroes posible que deba eliminar/desinstalar Aplicar Armadura antes de continuar con la instalación SELinux porque ellos son Módulo de seguridad de Linux Implementaciones de interfaz del kernel de Linux y, por lo tanto, no pueden coexistir al mismo tiempo.

$ sudo systemctl status AppArmor
$ sudo systemctl stop AppArmor
Comprobar el estado de AppArmor

Después de eliminarlo a través del administrador de paquetes de distribución de Linux, reinícielo antes de continuar con la instalación SELinux:

$ sudo apt remove --assume-yes --purge apparmor
$ sudo reboot

Para distribuciones basadas en RHEL:

$ sudo dnf makecache
$ sudo dnf install policycoreutils libselinux-utils libselinux libselinux-devel selinux-policy selinux-policy-devel

Para distribuciones basadas en Debian:

$ sudo apt update 
$ sudo apt install policycoreutils selinux-utils selinux-basics libselinux1 libselinux1-dev

Para sistemas openSUSE Leap y Tumbleweed:

$ sudo zypper refresh
$ sudo zypper install policycoreutils selinux-tools libselinux-devel libselinux1

Activar SELinux:

$ sudo selinux-activate
SELinux activo
SELinux activo

poner SELinux al modo permisivo para evitar cosas como «Error al cargar el módulo del kernel” durante el inicio del sistema Debian y ubuntu sistema.

$ sudo nano /etc/selinux/config  

Este modo solo imprimirá advertencias.

Establecer el modo de licencia de SELinux
Establecer el modo de licencia de SELinux

Reinicie la máquina:

$ sudo reboot

El cambio de marca del sistema debe tener lugar durante el inicio.

Reetiquetado de SELinux
Reetiquetado de SELinux

Después de que el sistema se reinicie correctamente, verifique SELinux estado:

$ sestatus
Comprobar el estado de SELinux
Comprobar el estado de SELinux

Endurecimiento de Nginx con SELinux

defecto, SELinux Etiqueta Nginx (más archivo y puerto) con httpd_t tipo de dominiopodemos decir SELinux para permitir Nginx Se ejecuta en modo permisivo (ilimitado). Sin embargo, Linux registrará todos los errores relacionados con SELinux.

$ semanage permissive -a httpd_t
Ejecución de Nginx en modo de licencia SELinux
Ejecución de Nginx en modo de licencia SELinux

superior Debian y ubuntuno te «desencadenes»El usuario sddm no está en el archivo de contraseñas» como su advertencia cosmética (menor).

Lo anterior se cumple SELinux La política se aplica no sólo a Nginx pero también php-fpm.

Comprobar si hay violaciones de SELinux

Ejecutaremos el comando:

$ sudo grep nginx /var/log/audit/audit.log | audit2allow -m nginx

No violar la política dará como resultado el siguiente resultado:

Comprobar si hay violaciones de SELinux
Comprobar si hay violaciones de SELinux

De lo contrario, un SELinux Se establecerá la política. La política generada no se puede heredar directamente, ya que solo ayuda a identificar configuraciones incorrectas de Nginx.

SELinux y PHP-FPM

Recuperar usando el siguiente comando PHP-FPM– Errores relacionados:

$ sudo grep -R php-fpm /var/log/audit/audit.log 

El paso final para fortalecer su servidor web Nginx es permitir que se ejecute en SELinux modo de ejecución: ‘

$ sudo semanage permissive -d httpd_t
Ejecución de Nginx en el modo de cumplimiento de SELinux
Ejecución de Nginx en el modo de cumplimiento de SELinux

Para documentación extensa SELinuxvea su página man:

$ man selinux

SELinux asegura Nginx Opere con estándares y políticas de seguridad ideales.

LEER  Cómo redirigir el error en serie (stderr) en bash

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba