Tips Seguridad Servidor WEB – 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.

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. Cambiar el directorio por defecto donde es alojada los website en apache. Por defecto Apache 2.4 crea un directorio “/var/www/html” en el cual es colocado los website o páginas a servir, es recomendable cambiarlos o crear uno nuevo, ejemplo /opt/www/html o /srv/www/html.

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

2. Se recomienda efectuar cambios a nivel de fstab de las opciones de montaje del directorio “/srv”, 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 nano /etc/apache2/apache2.conf


Efectuar el siguiente cambio:

HostnameLookups Off

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

2. Editar archivo de seguridad de apache:

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

Efectuar los siguientes cambios:

    #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
3. Editar archivo de seguridad de apache:

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

Efectuar los siguientes cambios:

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

Desactivar las Etags
4. Editar archivo de seguridad de apache:

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

Efectuar los siguientes cambios:

    #Desactivar las Etags
    Header unset ETag
    FileETag None

Restringir el acceso al Directorio Raiz Root directory(/)

5. Editar archivo de configuración de Apache:

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

Efectuar los siguientes cambios:

 
  <Directory />
        Order deny,allow
        Deny from all
        Options None
        AllowOverride None
   </Directory>

Nota: Las opciones “Order deny,allow” y “Deny from all” pueden ser sustituidas en apache 2.4 por “Require all denied”

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/”
6. 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 /srv/>
       AllowOverride None
       Require all denied
  </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
7. Editar archivo de configuración de Apache2.4:

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

Efectuar los siguientes cambios:

  <Directory /opt/www/html>
        Options -Indexes -FollowSymLinks -ExecCGI +SymLinksIfOwnerMatch
        AllowOverride None
        Require all denied
  </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

Mitigar los Ataques DoS HTTP Lentos (SLOW DOS ATTACKS)
8. 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

9. 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

10. Desactivar el modulo status:

admin@servidor:/$ sudo a2enmod status

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

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

12. 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

13. 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 {} \;

Enlaces:
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

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s