Introducción
La seguridad en Apache hoy en día es algo muy importante ya que es uno de los servidores web más conocidos y usados habitualmente.
Hemos querido realizar un conjunto de medidas que nos pueda ayudar a todos ser un poco menos vulnerable en el mundo de Internet.
Aparte de ello quería reunir las distintas prácticas que hace la gente y tenerlo centralizado para aquellos que quieran aprender.
Seguridad en Apache
En Debian/Ubuntu la mayor parte de los cambios se encuentran en el siguiente fichero: /etc/apache2/conf-enabled/security.conf
Ocultar la versión de apache
Con esta configuración evitamos mostrar la versión de nuestro Apache y además pasará a tener el nombre de producción es decir Apache.
ServerTokens Prod ServerSignature Off
Deshabilitar Trace
Si permitimos este método en Apache pueden realizar ataques de Cross Site Tracing y posibilidades de obtener la información de una cookie.
TraceEnable off
Deshabilitando Cabeceras
Antes de realizar los siguiente chequeos, te tienes que asegurar de que tienes el mod_headers activado. Para ello podemos ejecutar:
a2enmod headers
Después del reinicio podemos seguir añadiendo directivas de seguridad a /etc/apache2/conf-enabled/security.conf
NOTA: Hay que tener cuidado porque a veces aplicaciones nuestras dejan de funcionar por este control de cabeceras.
Deshabilitar ataques clickjacking
Header append X-FRAME-OPTIONS "SAMEORIGIN"
Deshabilitar XSS Attack
Header set X-XSS-Protection "1; mode=block"
Proteger las cookies con HTTPOnly Flag
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Deshabilitar ETag
Este parámetro, si está habilitado, nos permite obtener información acerca del número de inodos, proceso hijo …
FileETag None
Deshabilitar los métodos que no se usan
Al realizar esto solo permitiremos peticiones GET, POST y HEAD. Tenerlo en cuenta por si las aplicaciones utilizan algún método no establecido aquí.
<LimitExcept GET POST HEAD> deny from all </LimitExcept>
Limitar el tamaño de las peticiones
Por defecto apache no viene con limitaciones a nivel de cuerpo (LimitRequestBody 0), es recomendable limitar el tamaño de las peticiones HTTP. Esto dependerá del tamaño de ficheros que estemos subiendo entre otras cosas.
LimitRequestBody 204800 (~200 Megas)
Nota: Este parámetro de configuración lo podemos usar en VirtualHost, Configuración de Apache, .htaccess.
Desactivar listado de directorios
Generalmente se suele encontrar en /etc/apache2/apache2.conf, tener cuidado con apache 2.4 ya que viene por defecto sin signo. Pero no permite el listado ni seguir enlaces simbólicos.
Nota: Si usamos signos, se tiene que poner en cada una de las opciones ya que sino Apache te indicará un error.
<Directory /var/www/> Options -Indexes -FollowSymLinks AllowOverride None Require all granted </Directory>
Deshabilitar módulos que no se usarán
En Debian/Ubuntu tenemos un comando que nos puede dar una pista de los módulos que tenemos activos en el servidor
a2dismod
Este comando nos muestra una lista aparte de que nos diga si queremos deshabilitar algún módulo.
Por defecto la carga de estos módulo es mínima en Ubuntu 16.04.
Deshabilitar la ejecución CGI
En el caso de que no se necesite se puede deshabilitar ya que puede generar algún tipo de ataque. Tener cuidado si esto lo considera como incorrecta la sintaxis en versiones nuevas de Apache o deje de funcionar sitios webs.
-ExecCGI y -Includes
Generalmente lo configura en el directorio por defecto “/var/www/”.
Conclusión
Con estos parámetros nos aseguramos de cubrir ciertos aspectos que pueden ser aprovechados por los atacantes para obtener información sensible.
Recomiendo ver Securización HTTPS para tener al día nuestra configuración HTTPS (Me siento seguroooooo).
El siguiente punto que debemos aprender es la Configuración de seguridad en certificados Apache.