Despliegue de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2023/2024
LAMP es el acrónimo usado para describir un sistema de infraestructura de Internet que usa las siguientes herramientas:
En esta prática vamos a utilizar el sistema operativo Fedora.
Fedora es una sistema operativo de código abierto basado en Linux, que es mantenido por la comunidad y que está patrocinado por Red Hat.
dnf
dnf
(Dandified Yum) es un gestor de paquetes
para distribuciones GNU/Linux badadas en RPM (Red Hat Package
Manager). dnf
es la evolución de yum
Yellowdog Updater, Modified.
Para actualizar los paquetes del sistema podemos utilizar cualquiera de estos comandos:
En en gestor de paquetes dnf
, las opciones
update
y upgrade
realizan la misma acción.
Podemos utilizar una versión abreviada.
Si sólo queremos actualizar un paquete del sistema podemos utilizar:
Para limpiar los archivos temporales de un repositorio que haya sido
eliminado o deshabilitado podemos utilizar la opción
clean
.
Para obtener un listado de los paquetes que están instalados en el sistema y los paquetes que están disponibles en los repositorios para instalar, podemos utilizar cualquiera de estos dos comandos:
Ejemplo:
Instalamos el paquete del servidor web Apache.
Después de la instalación del servidor hay que iniciar el servicio.
Y habilitar el servicio para que se inicie automáticamente después de cada reinicio.
Ahora podemos comprobar el estado del servicio para verificar que se está ejecutando.
Instalamos el paquete de MySQL Server.
Después de la instalación del servidor hay que iniciar el servicio.
Y habilitar el servicio para que se inicie automáticamente después de cada reinicio.
Ahora podemos comprobar el estado del servicio para verificar que se está ejecutando.
Instalamos el intérprete de PHP con el comando:
Podemos comprobar que PHP se ha instalado correctamente ejecutando el siguiente comando:
Instalamos la extensión de PHP para conectar con MySQL.
Después de la instalación es necesario reiniciar el servicio de Apache para que se apliquen los cambios.
SELinux (Security-Enhanced Linux) es un módulo de seguridad que está integrado en el kernel de Linux. Actualmente, se incluye en muchas distribuciones Linux como Fedora, Red Hat Enterprise Linux (RHEL) y CentOS entre otras.
Control de Acceso Discrecional
La política de acceso estándar en los sistemas UNIX es conocida como el Control de Acceso Discrecional o DAC (Discretionary Access Control), y se basa en restringir el acceso a los objetos del sistema (archivos, directorios, procesos, etc.) en función del usurio, el grupo y los permisos de acceso (lectura, escritura y ejecución).
El Control de Acceso Discrecional o DAC tiene el inconveniente de que no permite crear políticas de seguridad más específicas.
Control de Acceso Obligatorio y Control de Acceso Basado en Roles
SELinux, incluye políticas de Control de Acceso Obligatorio o MAC (Mandatory Access Control) y Control de Acceso Basado en Roles o RBAC (Role-Based Access Control).
En SELinux, cada objeto (archivos, directorios, procesos, etc.) tiene un contexto de seguridad (SELinux context) que se utiliza para aplicar políticas de seguridad y definir reglas de acceso.
El contexto de seguridad está formado por los campos: usuario, rol,
tipo y nivel de seguridad, y siguen la siguiente estructura
usuario_u:rol_r:tipo_t:nivel
. Donde:
usuario_u
: Indica el usuario al que pertenece el
objeto. Ejemplo: unconfined_u
se utliza
para un usuario que no está restringido por políticas de seguridad más
estrictas.
rol_r
: Indica el rol del usuario, que define el
conjunto de permisos y acciones que el usuario o el proceso pueden
realizar. Ejemplo: object_r
se utiliza
para archivos y directorios.
tipo_t
: Define el tipo del objeto, lo que determina
las políticas de seguridad aplicables a ese objeto.
Ejemplo: httpd_sys_content_t
será el tipo
de contexto que necesitamos configurar en el directorio
/var/www/html
.
nivel
: Indica el nivel de seguridad, que se utiliza
en sistemas con múltiples niveles de seguridad.
Ejemplo: s0
será el nivel de seguridad más
bajo.
Para seguir profundizando en este tema se recomienda la lectura del documento Uso de SELinux de la página oficial de Red Hat.
El comando sestatus
nos permite conocer cuál es el
estado de SELinux.
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
/var/www/html
En Fedora es necesario
cambiar recursivamente el tipo de contexto de seguridad SELinux de todos los
archivos y directorios que hay dentro del directorio
/var/www/html/
y configurarlo como
httpd_sys_content_t
, para que el servidor web Apache pueda
acceder a ellos de forma segura.
Una vez que hemos modificado el tipo de contexto podemos comprobar
que se ha realizado de forma correcta utilizando el parámetro
-Z
del comando ls
.
Cannot allocate memory
Si durante la instalación obtiene el siguiente mensaje de error:
[Errno 12] Cannot allocate memory
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Es posible que necesite incrementar la cantidad de memoria de RAM de la instancia.
Una posible solución es detener de forma temporal los servicios que estén haciendo un uso intensivo de memoria RAM. Una vez que detenga los servicios puede volver a intentar realizar la instalación y si la operación termina con éxito, puede volver a iniciar los servicios que había detenido.
Access denied
Revisa la configuración del tipo contexto de seguridad de SELinux del contenido
que hay en el directorio /var/www/html
. Recuerda que tiene
que estar configurado como httpd_sys_content_t
.
Esta
página forma parte del curso
Despliegue de Aplicaciones
Web de José Juan Sánchez
Hernández y su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.