Tips Seguridad Servidor Apache2 – Hardening Secure Apache Web Server

El presente instructivo tiene como finalidad mostrar algunas recomendaciones de configuraciones que pueden ser aplicadas en servidor web apache2 para su protección. Estas recomendaciones son actualizadas constantemente.

El presente instructivo ha sido actualizado y es aplicado perfectamente a servidor Web Apache versión 2.4

Aplicaciones o configuraciones complementarias:

Recomendaciones a nivel de sistema operativo:

1. Es algo complicado establecer un estandar para el particionado de un servidor, siempre abrá variables que no dependerán de los administradores. A continuación un ejemplo de lo que podría ser un particionado típico para un servidor WEB:

Particionado base:

- /boot -> 500MB -> EXT4
- /swap -> 5GB 

Particionado LVM:

- /raiz -> 10 GB  -> EXT4
- /home -> 5GB -> EXT4
- /usr -> 5GB -> EXT4
- /usr/local -> 5GB -> EXT4 
- /opt/www -> 5GB -> EXT4
- /var/log -> 10GB -> EXT4
- /tmp  -> 5GB -> EXT4

2. Cambiar la ruta del directorio por defecto (/var/www/html) destinado por Apache(2.4) para alojar los website:

2.1 Crear una nuev a ruta:

admin@servidor:/$ sudo mkdir -p /opt/www/html

2.2 Efectuar cambios en Apache2:

Archivo configuración de Apache2 «/etc/apache2/apache2.conf»:

<Directory /opt/www/html/>
	Options -Indexes -FollowSymLinks -ExecCGI +SymLinksIfOwnerMatch
	AllowOverride None
	Require all granted
</Directory>

Archivo configuración del site «/etc/apache2/sites-enabled/000-default.conf»:

DocumentRoot /opt/www/html

3. Se recomienda efectuar cambios en las opciones de montaje del directorio «/opt», habilitando las siguientes opciones:

  • -nodev: Impide la interpretación de los dispositivos especiales o de bloques del sistema de archivos
  • -nosuid: Bloquea el funcionamiento de suid, y sgid bits. suid permite a los usuarios comunes ejecutar binarios con privilegios concedidos temporalmente
  • -noexec: No permite la ejecución de binarios que se encuentren en el sistema de archivos. Muy pendiente con el código o aplicativo que se utilizará con el servidor apache, ya que si tienen un binario, el mismo no podrá ser ejecutada

Ejemplo de una entrada en fstab:

/dev/mapper/VolGroup-lvsrv /opt   ext4   nodev,nosuid,noexec   0    2

Recomendaciones a nivel de aplicativo Apache 2.4
Configuración

Evita la búsquedas de DNS para que los nombres de host se pueden registrar

1. Editar archivo de configuración de apache2:

admin@servidor:/$ sudo vim /etc/apache2/apache2.conf


Efectuar el siguiente cambio:

HostnameLookups Off

2. Editar archivo de seguridad de apache:

admin@servidor:/$ sudo vim /etc/apache2/conf-enabled/security.conf

Ocultar la información de la versión del servidor

#Deshabilitar la firma de páginas web por el servicio Apache
ServerSignature Off

#No mostrar todos los datos del verbose mode en apache
ServerTokens Prod

Desactivar la petición HTTP de seguimiento

# Set to one of:  On | Off | extended
TraceEnable Off

Desactivar las Etags

#Desactivar las Etags
FileETag None

Restringir el acceso al Directorio Raiz Root directory(/)

 
  <Directory />
        Require all denied
        Options None
        AllowOverride None
   </Directory>

Descripción de las opciones:

  • – Options None –> No permitir ninguna de las características adicionales opcionales
  • – Order deny,allow –> Proceso de «negar» primero
  • – Deny from all –> Denegar cualquier solicitud al directorio raíz
  • – AllowOverride None –> Denegar el uso del archivo .htaccess

Para el caso de Apache 2.4 Restringir el acceso a los directorios «/usr/share» y «/var/www/html/»

3. Editar archivo de configuración de Apache2.4:

admin@servidor:/$ sudo nano /etc/apache2/apache2.conf

Efectuar los siguientes cambios:

  <Directory /usr/share>
       AllowOverride None
       Require all denied
  </Directory>

  <Directory /opt/www/html/>
       AllowOverride None
       Require all granted
  </Directory>

Para el caso de Apache 2.4, configurar el acceso al directorio seleccionado como DocumentRoot, en nuestro caso la aplicación estará disponible en la ruta: /opt/www/html

4. Editar archivo de configuración de Apache2.4:

admin@servidor:/$ sudo vim /etc/apache2/apache2.conf

Efectuar los siguientes cambios:

  <Directory /opt/www/html>
        Options -Indexes -FollowSymLinks -ExecCGI +SymLinksIfOwnerMatch
        AllowOverride None
        Require all granted
  </Directory>

Descripción de las opciones:

  • -Indexes –> desactivar la opción por defecto de listar todo el contenido del directorio «DocumentRoot»
  • -FollowSymLinks –> desactivar la opción por defecto de seguir los enlaces simbolicos
  • -ExecCGI –> evitar la ejecución de CGI en el «DocumentRoot»
  • +SymLinksIfOwnerMatch –> El servidor sólo seguirá vínculos simbólicos para los que el archivo o directorio de destino pertenezca al mismo identificador de usuario que el vínculo

Desactivar la escucha por IPV6

5. Editar archivo de configuración de puertos de Apache2.4:

admin@servidor:/$ sudo vim /etc/apache2/ports.conf

Efectuar el siguiente cambio:

Listen 0.0.0.0:80

En caso de Utilizar SSL:

<IfModule ssl_module>
        Listen 0.0.0.0:443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 0.0.0.0:443
</IfModule>

Mitigar los Ataques DoS HTTP Lentos (SLOW DOS ATTACKS)
6. Activar el módulo «reqtimeout»

admin@servidor:/$ sudo a2enmod reqtimeout
Enabling module reqtimeout.
 To activate the new configuration, you need to run:
  service apache2 restart

7. Activar el módulo headers

admin@servidor:/$ sudo a2enmod headers
Enabling module headers.
 To activate the new configuration, you need to run:
  service apache2 restart

8. Desactivar el modulo status:

admin@servidor:/$ sudo a2dismod status

9. Para que cualquier cambio tenga efecto, es necesario reiniciar el servicio:

admin@servidor:/$ sudo /etc/init.d/apache2 restart

10. Revisar los permisos del código que se colocará en el servidor Web

admin@servidor:/web/httpd$ find /web/httpd/htdocs -perm 777 -type f

11. Cambiar permisos del código, en éste caso PHP que se colocará en el servidor Web

admin@servidor:/web/httpd$ find /web/httpd/htdocs -type f -name '*.php' -exec chmod 644 {} \;

12. Asegurar las cabeceras de respuestas HTTP del servidor. Editar archivo de configuración Apache:

admin@servidor:/$ sudo vim /etc/apache2/apache2.conf

Incluir la siguiente información:

Header set X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection 1;mode=block
Header set X-Content-Type-Options nosniff
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

13.- Efectuar prueba:

admin@servidor:/$ curl -I http://IP_server/
HTTP/1.1 200 OK
Date: Tue, 17 Mar 2020 23:44:32 GMT
Server: Microsoft-IIS/5.0
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1;mode=block
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=UTF-8

Donde:

Header set X-Frame-Options SAMEORIGIN
El encabezado X-Frame-Options ( RFC ) protege a los visitantes contra ataques de clickjacking. SAMEORIGIN: Si una página padre es para el mismo dominio que la página del sitio, la página del sitio puede incluirse en el iFrame.

Header set X-XSS-Protection 1;mode=block
Permite la protección contra un XSS reflejado. 1 habilita la protección. mode=block le dice al navegador que bloquee la respuesta si detecta un ataque en lugar de desinfectar el script.

Header set X-Content-Type-Options nosniff
La opción nosniff impide que Google Chrome e Internet Explorer intenten detectar el tipo de contenido de una respuesta distinta de la que el servidor declara

Header always set Strict-Transport-Security «max-age=31536000; includeSubDomains»
HSTS permite decirle formzar el uso de HTTPS sobre HTTP.

Enlaces:
Asegurando las cabeceras de respuestas HTTP en servidores web Apache y NGINX
Upgrading to 2.4 from 2.2
Apache Security Tips
SCG WS Apache
Apache Web Server Hardening Security
ApacheHardening
Apache Web Server Security & Hardening Tips for Administrator
CommonMisconfigurations
Secure Configuration Guide
Cómo encontrar vulnerabilidades de servidor Web con Nikto Scanner
Apache Web Server Hardening & Security Guide
Aumentar la velocidad de la web con htaccess
Secure Apache from Clickjacking with X-FRAME-OPTIONS

Una respuesta a “Tips Seguridad Servidor Apache2 – Hardening Secure Apache Web Server”

Deja un comentario