Búsqueda de sitios web

Configuración de un servidor Apache seguro en Ubuntu 24.04


En esta guía completa, lo guiaremos a través del proceso de configuración de un servidor Apache seguro en Ubuntu 24.04. Ya sea que esté configurando un sitio web personal o una plataforma comercial, seguir estos pasos garantizará que su servidor no solo sea funcional sino también seguro. Recuerde reemplazar "myweb.linuxconfig.org" con su propio dominio a lo largo de este tutorial.

En este tutorial aprenderás:

  • Cómo actualizar y mejorar tu sistema Ubuntu
  • Pasos para instalar y configurar Apache
  • Configuración de firewall para la seguridad
  • Creación de un sitio web de muestra y configuración de hosts virtuales
  • Habilitación e inicio del servicio Apache
  • Probando la configuración de Apache
  • Protección de Apache con el certificado SSL Let's Encrypt
  • Fortalezca su servidor Apache para mejorar la seguridad

Guía paso a paso

  1. Actualizar y mejorar el sistema: Comience por actualizar los índices de paquetes y actualizar su sistema a la última versión. Esto garantiza que tenga todos los parches de seguridad y dependencias más recientes.

    sudo apt update
    sudo apt upgrade
    
  2. Instalar Apache: A continuación, instale el servidor web Apache2. Apache es un software de servidor web gratuito y de código abierto que impulsa gran parte de la web.

    sudo apt install apache2
    
  3. Configuración del firewall: configure el firewall para permitir el tráfico HTTP y HTTPS. Además, habilite SSH si planea administrar su servidor de forma remota.

    sudo ufw allow http
    sudo ufw allow https
    sudo ufw allow OpenSSH
    sudo ufw enable
    
  4. Los comandos sudo ufw allow http y sudo ufw allow https se utilizan para permitir el tráfico HTTP y HTTPS entrante, respectivamente, que son esenciales para servir páginas web y comunicaciones web seguras. El comando sudo ufw allow OpenSSH es para abrir el puerto SSH, lo que permite la gestión remota segura del servidor. Por último, sudo ufw enable activa el firewall UFW, aplicando las reglas especificadas para controlar el tráfico del servidor.

  5. Crear sitio web de muestra: Cree un directorio para su sitio web y agregue un archivo de index.html de muestra. A continuación, cambie la propiedad al usuario del servidor web (www-data).

    mkdir -p /var/www/html/myweb
    echo "Setting Up a Secure Apache Server on Ubuntu 24.04" > /var/www/html/myweb/index.html
    chown -R www-data:www-data /var/www/html/myweb/
    
  6. El comando mkdir -p /var/www/html/myweb crea un nuevo directorio llamado 'myweb' en la ruta '/var/www/html', que se utiliza normalmente para almacenar contenido web. El comando echo se utiliza para crear un archivo HTML simple llamado 'index.html' dentro de este directorio, que contiene el texto "Configuración de un servidor Apache seguro en Ubuntu 24.04". Por último, chown -R www-data:www-data /var/www/html/myweb/ cambia la propiedad del directorio 'myweb' y su contenido al usuario y grupo 'www-data', que es el usuario predeterminado para el servidor web Apache, lo que garantiza los permisos adecuados para las operaciones del servidor web.

  7. Configuración de host virtual: Cree un archivo de host virtual para su dominio. Esto permite a Apache responder a las solicitudes de su dominio. No olvide habilitar el sitio y, opcionalmente, deshabilitar el sitio predeterminado.

    sudo nano /etc/apache2/sites-available/myweb.conf
    
    Insert the following configuration:
    <VirtualHost *:80>
        ServerAdmin admin@myweb.linuxconfig.org
        ServerName myweb.linuxconfig.org
        DocumentRoot /var/www/html/myweb
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    

    A continuación, habilite el sitio y, opcionalmente, deshabilite el sitio predeterminado

    sudo a2ensite myweb
    sudo a2dissite 000-default
    
  8. El comando sudo a2ensite myweb se utiliza para habilitar el sitio 'myweb' en Apache. Este comando crea un enlace simbólico del archivo de configuración del sitio desde el directorio 'sites-available' al directorio 'sites-enabled', activando así la configuración del sitio. Por el contrario, el comando sudo a2dissite 000-default deshabilita el sitio predeterminado proporcionado por Apache. Esto se logra eliminando el enlace simbólico para la configuración '000-default' del directorio 'sites-enabled', lo que impide que Apache cargue la configuración predeterminada.

  9. Iniciar y habilitar Apache: habilite el servicio Apache para que se inicie en el arranque y, a continuación, reinicie el servicio para aplicar los cambios.

    sudo systemctl enable apache2
    sudo systemctl restart apache2
    
  10. El comando sudo systemctl enable apache2 se utiliza para garantizar que el servicio Apache2 se inicie automáticamente al arrancar el sistema. Esto crea una configuración persistente que vincula el servicio Apache2 con el proceso de arranque del sistema. Después de esto, se emplea el comando sudo systemctl restart apache2 para reiniciar el servicio Apache2. Esto es necesario para aplicar cualquier cambio reciente realizado en la configuración de Apache o para iniciar el servicio después de la instalación o las actualizaciones. Al reiniciar el servicio, se garantiza que Apache se ejecute con las configuraciones más recientes.

  11. Pruebe su configuración de Apache: Pruebe su configuración accediendo a su sitio web. Puedes usar un navegador o herramientas de línea de comandos como wget para ver si tu sitio se está publicando correctamente.

    wget myweb.linuxconfig.org
    

  12. Protección de Apache con Let's Encrypt: Opcional: Proteja su sitio con un certificado SSL gratuito de Let's Encrypt. Esto proporciona encriptación para su sitio web, protegiendo los datos de sus visitantes.

    sudo apt install certbot python3-certbot-apache
    sudo certbot --apache
    

    El comando sudo apt install certbot python3-certbot-apache instala 'certbot' y su complemento Apache en el sistema. 'Certbot' es una herramienta gratuita y automatizada diseñada para obtener certificados SSL de Let's Encrypt, una autoridad de certificación gratuita. El plugin de Apache, 'python3-certbot-apache', se utiliza específicamente para configurar certificados SSL en servidores Apache. Después de la instalación, se ejecuta el comando sudo certbot --apache. Esto ejecuta 'certbot' con el complemento Apache, que no solo obtiene el certificado SSL de Let's Encrypt, sino que también configura automáticamente Apache para usar este certificado, habilitando HTTPS en el servidor.

  13. Pruebe el sitio web de SSL seguro: En este punto, el servidor web Apache2 debería redirigir automáticamente cualquier solicitud HTTP al puerto HTTPS. Pruebe su sitio web y confirme que se ejecuta en un puerto http SSL seguro.

  14. Refuerce la seguridad de Apache: Por último, fortalezca su instalación de Apache modificando el archivo de configuración de Apache. Esto incluye la deshabilitación de las solicitudes de seguimiento, la ocultación de la versión de Apache y la desactivación de las firmas del servidor.

    sudo nano /etc/apache2/apache2.conf

    Agregue o modifique las siguientes líneas:

    TraceEnable Off
    ServerTokens Prod
    ServerSignature Off
    

    Las directivas de configuración de Apache TraceEnable Off, ServerTokens Prod y ServerSignature Off son importantes para mejorar la seguridad del servidor. TraceEnable Off deshabilita el método de solicitud HTTP TRACE, lo que evita posibles ataques de seguimiento entre sitios (XST). ServerTokens Prod limita la cantidad de información (específicamente, la versión del servidor y el tipo de sistema operativo) que se envía en los encabezados de respuesta del servidor, lo que reduce la exposición de la información a posibles atacantes. ServerSignature Off restringe aún más la fuga de información al eliminar la versión del servidor de las páginas de error y los documentos generados por el servidor. En conjunto, estas configuraciones son cruciales para oscurecer los detalles del servidor que, de otro modo, podrían ser explotados por los atacantes en la elaboración de ataques dirigidos.

    Además de las directivas de configuración TraceEnable Off, ServerTokens Prod y ServerSignature Off, puede considerar agregar la siguiente configuración para mejorar aún más la seguridad y el rendimiento del servidor Apache. Puede agregar a la sección .htaccess, httpd.conf o VirtualHost:

    Header always set X-Content-Type-Options "nosniff": Este encabezado evita que los navegadores realicen un rastreo de tipo MIME, lo que puede reducir la exposición a ataques de descarga no autorizada.

    Header always set X-Frame-Options "SAMEORIGIN": Esta configuración evita el clickjacking al indicar al navegador que no permita que la página se muestre en un marco a menos que se solicite desde el mismo origen.

    Header always set X-XSS-Protection "1; mode=block": Esto habilita el filtro Cross-Site Scripting (XSS) integrado en los navegadores web más recientes y le indica que bloquee las respuestas que contienen ataques detectados.

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1: Esta línea deshabilita los protocolos SSL/TLS más antiguos y menos seguros (SSLv3, TLSv1 y TLSv1.1) y solo permite protocolos más seguros, lo que reduce el riesgo de ataques de degradación de protocolo.

    SSLCipherSuite HIGH:!aNULL:! MD5: Establece un conjunto de cifrado sólido para las conexiones SSL/TLS, que define los algoritmos de cifrado utilizados.

    La adición de esta configuración mejora la seguridad general al mitigar varias vulnerabilidades web comunes y garantizar que la comunicación con su servidor permanezca cifrada y segura. Recuerde reiniciar Apache después de realizar estos cambios para aplicarlos.

    Guarde y salga, luego reinicie Apache

    sudo systemctl restart apache2
    

Conclusión

Siguiendo estos pasos, ha configurado con éxito un servidor Apache seguro en Ubuntu 24.04. Esta configuración proporciona una base sólida para alojar su sitio web, lo que garantiza tanto la funcionalidad como la seguridad. Recuerde mantener su servidor actualizado y revisar periódicamente su configuración de seguridad para mantener una presencia web robusta y segura.

Artículos relacionados: