Tutoriales

Cómo instalar SELinux para endurecer un servidor web Apache

Linux con seguridad mejorada o SELinux Responsable de implementar mecanismos de control de acceso obligatorios en las principales distribuciones de Linux, como sombrero de fieltro, RHELy Linux rocosoEstos mecanismos de control de acceso garantizan una mayor seguridad para todos los procesos y archivos en una distribución del sistema operativo Linux.

la manera SELinux El funcionamiento se puede dividir en tres modos:

  • hacer cumplir: Este modo significa SELinux La política está completamente implementada.
  • Tolerancia: usa este modo, no SELinux La política se aplica, sin embargo, SELinux Imprimir advertencias relacionadas.
  • desactivado: Este modo significa que no SELinux La política entra en vigor.

Cuando la aplicación web no se implementa de manera predeterminada apache directorio (registro o contenido), SELinux A menudo engorroso. Cuando intenta ejecutar/probar una aplicación web de este tipo, SELinux Tenderá a evitar que Apache acceda a registros y contenido no almacenado en el directorio predeterminado de Apache.

[ You might also like: How to Install SELinux to Harden Nginx Webserver ]

En este punto, la mayoría de los usuarios encontrarán SELinux No podía soportarlo e hice todo lo posible para desactivarlo. Sin embargo, una solución efectiva a este problema es crear políticas SELinux personalizadas para sus archivos y directorios. La ventaja de este enfoque es que si se pierde la configuración de contexto, ejecutar la restauración de contexto hará que su aplicación web vuelva a funcionar.

Esta guía abordará los siguientes desafíos de SELinux:

  • Se debe permitir que las aplicaciones web se ejecuten fuera del directorio predeterminado de Apache (/var/www/html).
  • Apache está bloqueado por SELinux al acceder a contenido externo /var/www/html.
  • Restricciones de acceso de lectura y escritura para aplicaciones web.
  • Las aplicaciones web escriben restricciones de acceso al cargar contenido desde un directorio específico.

Instalar el servidor web Apache en Linux

Este artículo requiere apache 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 apache2      [On Debian, Ubuntu and Mint]
$ sudo yum install httpd        [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo apk add apache2          [On Alpine Linux]
$ sudo emerge -a apache         [On Gentoo Linux]
$ sudo pacman -S apache         [On Arch Linux]
$ sudo zypper install apache2   [On OpenSUSE]    

espalda apache Install, puede habilitar, iniciar y verificar el estado con los siguientes comandos.

$ sudo systemctl enable apache2
$ sudo systemctl start apache2
$ sudo systemctl status apache2
OR
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
$ sudo systemctl status httpd

Instalar SELinux en Linux

Para los siguientes usuarios Debian y ubuntu distribución, o distribución de Linux Aplicar Armadura ya instalado, considere desinstalarlo primero, ya que también es una implementación del kernel de Linux, al igual que SELinuxAmbos actúan como módulos de seguridad de Linux y bloquearán el sistema.

una examinacion Aplicar Armadura estado, deténgalo, desinstálelo y reinicie el sistema.

$ systemctl status apparmor
$ sudo systemctl stop apparmor 
$ sudo apt remove apparmor 
$ sudo reboot  

podemos continuar ahora SELinux Instalar.

por RHEL– Basado en el sistema de distribución:

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

por Debian– Basado en el sistema de distribución:

$ 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

Para usuarios de Debian/Ubuntu, configure SELinux La operación en modo forzado genera el error «Error al cargar el módulo del kernel«durante un reinicio del sistema. Entonces podemos configurarlo para que se ejecute en modo permisivo.

$ sudo nano /etc/selinux/config  
Establecer el modo de licencia de SELinux
Establecer el modo de licencia de SELinux

Reinicie la máquina:

$ sudo reboot

Entonces el reetiquetado del sistema debería tener prioridad:

Reetiquetado de SELinux
Reetiquetado de SELinux

Después de reiniciar con éxito el sistema, verifique el estado de SELinux:

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

Endurecimiento de Apache con SELinux

Considere la estructura de directorios del siguiente proyecto de aplicación web:

Estructura del directorio del sitio web de Apache
Estructura del directorio del sitio web de Apache

Usando los tipos de contexto de Apache httpd_sys_content_t (archivos y directorios de solo lectura) en el directorio principal y todos los subdirectorios:

$ sudo semanage fcontext -a -t httpd_sys_content_t "/myapps(/.*)?"
Establecer el tipo de contexto de Apache SELinux
Establecer el tipo de contexto de Apache SELinux

Ignorar errores menores relacionados con el usuario sddm.

Usando los tipos de contexto de Apache httpd_log_t (generar y agregar archivos de registro) en el directorio de registro actual:

$ sudo semanage fcontext -a -t httpd_log_t "/myapps/logs(/.*)?"

Usando los tipos de contexto de Apache httpd_cache_t (para almacenamiento en caché) en el directorio de caché actual:

$ sudo semanage fcontext -a -t httpd_cache_t "/myapps/cache(/.*)?"

usar httpd_sys_rw_content_t (archivo y directorio de lectura y escritura) directorio de carga:

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/myapps/app1/html/uploads(/.

usar httpd_sys_rw_content_t (archivo y directorio de lectura y escritura) en archivo de configuración documento:

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/myapps/app1/html/config.php"

Aplicar lo anterior creado SELinux política, ejecutaremos:

$ sudo restorecon -Rv /myapps
Aplicar la política de SELinux
Aplicar la política de SELinux

Compruebe que se aplica el tipo de contexto:

$ ls -lZ /myapps
Verificar el tipo de contexto de SELinux
Verificar el tipo de contexto de SELinux

Con estas configuraciones, SELinux Puede proteger y fortalecer las aplicaciones web en ejecución apachePara entender mejor las existentes SELinux Política y contexto predeterminado, ejecute:

$ sudo semanage fcontext -l 

LEER  Cómo usar Podman en Kubernetes

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