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