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.
Tabla de Contenidos
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
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
Reinicie la máquina:
$ sudo reboot
Entonces el reetiquetado del sistema debería tener prioridad:
Después de reiniciar con éxito el sistema, verifique el estado de SELinux:
$ sestatus
Endurecimiento de Apache con SELinux
Considere la estructura de directorios del siguiente proyecto de aplicación web:
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(/.*)?"
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
Compruebe que se aplica el tipo de contexto:
$ ls -lZ /myapps
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