Skip to content

Firewalld (webserver)

Objetivos

  • Instalar y configurar un servidor web en RHEL 9.
  • Permitir el acceso a los puertos 80 (HTTP) y 443 (HTTPS) usando firewalld.
  • Verificar que el servidor web funcione correctamente.

Entorno Inicial

  • Usuario: student
  • Máquina: servera
  • Herramientas utilizadas: Shell Bash y utilidades básicas de Linux.

Pasos del Laboratorio

Prerequisitos

  1. Inicio de sesión

    • Inicia sesión en la máquina servera desde bastion como el usuario student utilizando la llave privada proporcionada:
    ssh student-#-servera
    

Paso 1: Validación de webserver

  1. Validar que el servicio de firewalld esté instalado, iniciado y habilitado:
    dnf install firewalld -y
    systemctl is-active firewalld || echo "Start firewalld" && systemctl start firewalld
    systemctl is-enabled firewalld || echo "Enable firewalld" && systemctl enable firewalld
    
  2. Validar si existe un servicio con el o los puertos y protocolos deseados:
    firewall-cmd --get-services |xargs -n1 |grep http
    
    Salida similar:
    http
    http3
    https
    wbem-http
    wbem-https
    
  3. Obtener información de servicio http:
    firewall-cmd --info-service=http
    
    Salida similar:
    http
        ports: 80/tcp
        protocols:
        source-ports:
        modules:
        destination:
        includes:
        helpers:
    
    Notar que contiene el puerto y protocolo requerido: 80/tcp.
  4. Obtener información de servicio http3:
    firewall-cmd --info-service=http3
    http3
        ports: 443/udp
        protocols:
        source-ports:
        modules:
        destination:
        includes:
        helpers:
    
    Notar que NO contiene el puerto (443) y protocolo (TCP) requerido, contiene: 443/udp (UDP).
  5. Obtener información de servicio https:
    firewall-cmd --info-service=https
    https
        ports: 443/tcp
        protocols:
        source-ports:
        modules:
        destination:
        includes:
        helpers:
    
    Notar que contiene el puerto y protocolo requerido, contiene: 443/tcp.
  6. Consultar cada servicio, no será necesario mientras más familiarizados estamos con el sistema operativo, pero es una práctica sugerida el validar la definición de los servicios antes de aplicar esta configuración.
  7. Hemos identificado los nombres de los servicios que se deben de permitir. Procedemos a habilitarlos en tiempo de ejecución.
    firewall-cmd --add-service=http --add-service=https # Varios servicios
    firewall-cmd --add-service=http # Solo 1 servicio
    
  8. Puede instalar, habilitar e iniciar el webserver y realizar pruebas:
    dnf install httpd mod_ssl -y 
    systemctl enable --now httpd
    echo "OK firewalld" > /var/www/html/test-firewalld.html
    
  9. Desde otro sistema puede ejecutar:
    curl http://IP_SISTEMA_CON_FIREWALLD/test-firewalld.html
    
    Salida:
    OK firewalld
    
    curl -k https://IP_SISTEMA_CON_FIREWALLD/test-firewalld.html
    
    Salida:
    OK firewalld
    
  10. Implementar cambios de forma permanente.
    firewall-cmd --runtime-to-permanent
    
  11. Validar cambios.
    firewall-cmd --reload
    

Resultados Esperados

  • El servidor tiene acceso por medio de firewalld tanto en el puerto 80/tcp como por el puerto 443/tcp.