Securización básica de Apache WEB SERVER
Aplica modificaciones esenciales para mejorar la seguridad de tu servidor web

Para asegurar y aislar completamente dos VirtualHosts en Apache2, de manera que los visitantes de un VirtualHost no puedan acceder al directorio del otro, puedes seguir estas mejores prácticas:

1. Configuración de Permisos de Archivos y Directorios

  • Asegúrate de que los directorios raíz de cada VirtualHost tengan permisos restrictivos.

  • Los archivos y directorios deben ser propiedad del usuario y grupo correctos, y los permisos deben ser 755 para directorios y 644 para archivos.

  • Ejemplo:


    chown -R www-data:www-data /var/www/virtualhost1
    chmod -R 755 /var/www/virtualhost1

2. Uso de DocumentRoot Separados

  • Cada VirtualHost debe tener un DocumentRoot separado y no debe haber superposición entre los directorios.

  • Ejemplo:


    <VirtualHost *:80>
        ServerName dominio1.com
        DocumentRoot /var/www/dominio1
        <Directory /var/www/dominio1>
            AllowOverride None
            Require all granted
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName dominio2.com
        DocumentRoot /var/www/dominio2
        <Directory /var/www/dominio2>
            AllowOverride None
            Require all granted
        </Directory>
    </VirtualHost>

3. Restricción de Acceso entre VirtualHosts

  • Usa directivas <Directory> para restringir el acceso a los directorios de cada VirtualHost.

  • Asegúrate de que no haya acceso cruzado entre los directorios.

  • Ejemplo:


    <VirtualHost *:80>
        ServerName dominio1.com
        DocumentRoot /var/www/dominio1
        <Directory /var/www/dominio1>
            AllowOverride None
            Require all granted
        </Directory>
        <Directory /var/www/dominio2>
            Require all denied
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName dominio2.com
        DocumentRoot /var/www/dominio2
        <Directory /var/www/dominio2>
            AllowOverride None
            Require all granted
        </Directory>
        <Directory /var/www/dominio1>
            Require all denied
        </Directory>
    </VirtualHost>

4. Uso de open_basedir en PHP (si aplica)

  • Si estás usando PHP, configura open_basedir en cada VirtualHost para restringir el acceso a los archivos fuera del directorio raíz del VirtualHost.

  • Ejemplo:


    <VirtualHost *:80>
        ServerName dominio1.com
        DocumentRoot /var/www/dominio1
        <Directory /var/www/dominio1>
            AllowOverride None
            Require all granted
            php_admin_value open_basedir /var/www/dominio1
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName dominio2.com
        DocumentRoot /var/www/dominio2
        <Directory /var/www/dominio2>
            AllowOverride None
            Require all granted
            php_admin_value open_basedir /var/www/dominio2
        </Directory>
    </VirtualHost>

5. Uso de Módulos de Seguridad

  • Habilita y configura módulos de seguridad como mod_security y mod_evasive para proteger contra ataques comunes.

  • mod_security puede ayudar a prevenir inyecciones SQL, XSS, etc.

  • mod_evasive puede ayudar a prevenir ataques DDoS.

6. Configuración de SSL/TLS

  • Si es posible, configura SSL/TLS para cada VirtualHost para asegurar la comunicación entre el cliente y el servidor.

  • Usa certificados SSL válidos y considera la implementación de HSTS (HTTP Strict Transport Security).

7. Uso de SELinux o AppArmor (si aplica)

  • Si tu sistema lo soporta, usa SELinux o AppArmor para restringir aún más el acceso a los archivos y directorios.

  • Configura políticas específicas para cada VirtualHost.

8. Monitoreo y Logs

  • Configura logs separados para cada VirtualHost para monitorear el acceso y detectar cualquier actividad sospechosa.

  • Ejemplo:


    <VirtualHost *:80>
        ServerName dominio1.com
        DocumentRoot /var/www/dominio1
        ErrorLog /var/log/apache2/dominio1_error.log
        CustomLog /var/log/apache2/dominio1_access.log combined
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName dominio2.com
        DocumentRoot /var/www/dominio2
        ErrorLog /var/log/apache2/dominio2_error.log
        CustomLog /var/log/apache2/dominio2_access.log combined
    </VirtualHost>

9. Actualizaciones y Parches

  • Mantén Apache2 y todos los módulos actualizados con las últimas versiones y parches de seguridad.

10. Firewall y Restricciones de Red

  • Configura un firewall (como ufw o iptables) para restringir el acceso a los puertos necesarios.

  • Considera el uso de VLANs o subredes separadas si los VirtualHosts deben estar completamente aislados a nivel de red.

Siguiendo estas prácticas, puedes asegurar y aislar completamente los dos VirtualHosts en tu servidor Apache2, minimizando el riesgo de que los visitantes de un VirtualHost accedan al directorio del otro.

Securización básica de Apache WEB SERVER
Shopicardiacom, S.L., David Casas 15 febrero, 2025
Share/Comparte post
Archivar
Identificarse to leave a comment


Más de 3600 NAS QNAP cifrados por Ransom
El pasado día 25 de enero, sobre las 16h se empezaron a notificar incidencias