miércoles, 12 de febrero de 2014

Cómo Mejorar La Seguridad De Un Servidor Web Apache

Apache es uno de los servidores Web más utilizados y una parte vital cuando alojamos un website o un servicio Web. Este cuenta con varias herramientas que nos pueden ayudar a reforzar la resistencia de nuestro website a posibles ataques. En esta publicación vamos a ver algunas recomendaciones para reforzar la seguridad de nuestro servidor apache.
Todas las modificaciones se harán en el archivo de configuración de Apache 

 /etc/httpd/conf/httpd.conf.

1. Deshabilite la Firma o Banner de Apache
La Firma de Apache es el nombre de la aplicación junto con su versión que se muestran al momento de hacer un requerimiento Web. Esta información no es necesaria y puede ser utilizada por un atacante para violar la seguridad del servidor,
Se preguntarán ustedes ¿en que afecta esto?. Un breve ejemplo, supongamos que Apache versión 1.4 tiene una brecha de seguridad que es fácil de comprometer y fue solucionada en la versión 1.6, si usted no ha actualizado y el atacante conoce esta información, ya inmediatamente sabrá por donde atacar.

Para deshabilitar esto accedemos al archivo de configuración de Apache y modificamos los siguientes valores:
ServerSignature off
ServerTokens ProductOnly
2. Deshabilite el HTTP TRACE
HTTP TRACE es usado para devolver toda la información recibida. Puede ser modificado para que devuelva cookies HTTP robando la sesión HTTP. Puede ser utilizado para ataques de Cross Site Scripting o XSS, así que lo más recomendable es deshabilitarlo por cuestiones de seguridad. Modificamos lo siguiente en el archivo de configuración de Apache:
TraceEnable off
3. Confirme que Apache corre bajo el usuario y grupo Apache.
Es de vital importancia que nos aseguremos que apache corra bajo el usuario y grupo Apache. Unos de los errores más grandes que he visto es que lo dejan correr como Root y esto lleva a una seria brecha de seguridad. Para confirmarlo accedemos al archivo de configuración de Apache, verificamos o modificamos las siguientes directivas.
User  apache
Group apache
4. Deshabilite los módulos que no estén utilizando
Apache cuenta con varios módulos. Si queremos ver cuáles módulos nuestro servidor está corriendo podemos ejecutar el siguiente comando como root.
# grep –n LoadModule /etc/httpd/conf/httpd/conf
Aquí veremos un Listado con todos los módulos que Apache carga. Analice la lista y confirme cuales utiliza su servidor, los que no, simplemente comente la línea en el archivo de configuración.
5. Limite el tamaño de las solicitudes
Los ataques de Denial of Service (DOS) siempre son posibles cuando permitimos solicitudes de gran tamaño en nuestros servidor Apache. Apache cuenta con una directiva para limitar esto:
LimitRequestBody
Por defecto está ilimitada. Modifique este valor según sea la necesidad de su sitio web.
6. No permita que Apache acceda a Directorios fuera de su Raíz.
Permitirle a Apache que tenga acceso a directorios fuera de su raíz es dejar una gran brecha de seguridad, al menos que usted realmente necesite que Apache acceda a ellos. Para deshabilitar esto sólo tiene que modificar la entrada Directory de Document Root para que se vea como sigue:
Order Deny, Allow
Deny from all
Options None
AllowOverride None
7. Implemente Mod_Security
Uno de los Módulos más importante de Apache sin duda es Mod_Security. Este es un Firewall de aplicaciones web que puede manejar varias tareas incluyendo filtrado simple, filtrado de expresiones regulares, validación de la codificación de una URL, entre otras.
Mod_security es un tema amplio conjunto con su instalación, así que le voy a dedicar una publicación sólo a este módulo abundando un poco más sobre el tema y su instalación.
8. Restringir el acceso a ciertas carpetas por IP
Si queremos que nuestro portal web o una sección sean vistos desde una IP o segmento de red específico agregamos la siguiente entrada en la sección de Directory.
Options None
AllowOverride None
Order deny,allow
Deny from all
Allow from 192.168.1.5
Allow from 192.200.0.0/24
Aquí le estamos diciendo a Apache que sólo le permita el acceso a la carpeta indicada a la dirección y segmento de red especificado.
 9. Protéjase de Ataques DDOS
Si hay algo cierto es que no podemos protegernos del todo de un ataque DDOS. Aquí les muestro algunas directivas que podemos utilizar para protegernos un poco más de este tipo de ataques.
  • Timeout: Esta directiva indica el tiempo que el servidor esperará para que un evento termine antes de fallar. Su valor por defecto es de 300 segundos. Es bueno mantener este valor lo más bajo posible si nuestro sitio es constantemente blanco de este tipo de ataque. Ahora bien, este valor dependerá también de qué tipo de request recibe en su sitio.
  • MaxClients: Esta directiva nos permite configurar el número de conexiones que vamos a permitir simultáneamente. Las conexiones nuevas serán puestas en cola a partir del límite que configuremos.
  • KeepAliveTimeout: Es el tiempo máximo que el servidor esperará para un requerimiento posterior antes de cerrar la conexión.
  • LimitRequestFields: Nos ayuda a limitar el número de solicitudes de encabezados HTTP que aceptaremos de un cliente. Su valor por defecto es 100. Es recomendable que reduzcamos el valor si constantemente somos blancos de ataques DDOS.
  • LimitRequestFieldSize: Nos ayuda a limitar el tamaño de una solicitud de encabezado HTTP.
10. Actualice
Mantenga Apache siempre actualizado, y si su sitio Web usa PHP, manténgalo actualizado de igual forma para así garantizar que cuenta con los últimos parches de seguridad.
Aquí les deje algunas de las recomendaciones de seguridad más importantes para reforzar la seguridad de nuestro servidor Apache.

Fuente: Blog Capacity

No hay comentarios:

Publicar un comentario