You are on page 1of 5

Asegurando el Servidor Apache 2.

Esta es una gua de configuraciones bsicas que pueden ser aplicadas al servidor web Apache2, todos
los comandos han sido probados bajo una plataforma LINUX lo que implica que el servidor debe tener
la suite LAMP para funcionar, la distribucin sobre la que se hicieron las pruebas es Ubuntu 14.04 LTS,
habiendo instalado previamente a LAMP todas las actualizaciones de seguridad en el mismo.
La versin de apache utilizada es Apache 2.4, cabe mencionar que las posibilidades de seguridad que
nos brinda este servidor web son muy extensas por lo que en este manual se dan los parmetros para
comenzar a implementar una seguridad efectiva en ese servidor, sin embargo, el usuario puede llegar
hasta donde sus necesidades lo requieran.
Paso 1. Debemos conocer cual es la versin de Apache que estamos ejecutando, esto lo hacemos con el
comando:
#apache2 -version
Paso 2. Agregaremos el nombre del servidor al archivo de configuracin apache2.conf, ubicado en
/etc/apache2/ , para tal efecto agregaremos la siguiente lnea:
ServerName localhost
localhost ser usado para efectos de nuestra clase, aqu debera utilizarse el FQDN del server
Paso 3. El servidor Apache 2.4 trae por defecto el Document Root /var/www/html, en este caso
cambiaremos la ruta a /var/www, esto se hace en el archivo de configuracin 000-default.conf, este
archivo se ubica en la ruta /etc/apache2/sites-available/, para hacer dicho cambio teclearemos los
siguientes comandos en nuestra consola:
#cd /etc/apache2/sites-available
#nano 000-default.conf
y substituiremos la lnea DocumentRoot /var/www/html
por DocumentRoot /var/www/
Una vez hecho este cambio, reiniciaremos el servicio apache con el comandos
# /etc/init.d/apache2 restart

Paso 4. Probaremos en nuestro navegar a escribir http://localhost, o bien http://ip_del_servidor, lo


siguiente que nos aparecer ser una imgen como la siguiente:
El servidor Web sigue funcionando, sin embargo
an est devolviendo informacin que podra ser
valiosa para un posible atacante de nuestro servicio,
esta informacin corresponde al sistema operativo
en el cul opera, la versin de Apache que tenemos
instalada y permite indexar o mostrar los directorios
que hay dentro del directorio /var/www. Esta
informacin debe limitarse, es aqu donde comienza
el proceso de asegurar el servidor web.

Paso 5. Ocultando los encabezados de Apache, los encabezados se refieren a toda la info desplegada en
la imgen anterior, para ocultarlos nos dirigiremos a la ruta /etc/apache2/conf-available y editaremos el
archivo security.conf; en este archivo buscaremos o agregaremos la siguiente lnea:
ServerTokens Prod
el efecto ser que no se muestre la versin de sistema operativo que estamos ejecutando.
Lo siguiente ser ocultar la versin de Apache, esto se consigue editando las siguientes lneas:
descomentarizamos ServerSignature Off
y comentarizarmos ServerSignature On
Una vez ms deberemos reiniciar nuestro servicio Apache.
Paso 6. Queda un ultimo paso, y es no permitir que se listen los directorios que contiene apache,
para esto en el mismo archivo security.comf descomentamos las siguientes lineas y agregamos lo que
sea necesario.
<Directory /var/www>
Options -Indexes -ExecCGI -FollowSymLinks
AllowOverride None
Order Deny,Allow
# Deny from all
</Directory>
-execcgi, bloquea el uso de cgis creados del lado del servidor, y -Followsymlinks Esta funcionalidad
puede posibilitar que un atacante, que tenga permisos de escritura sobre el DocumentRoot, y cree un
enlace simblico a archivos contenidos fuera del DocumentRoot para luego acceder a ellos a travs del
navegador, -Indexes, impide que se muestren los directorios que contiene el DocumentRoot.
Ahora solo queda reiniciar el servicio nuevamente.

Creamos un archivo llamado index.html en el DocumentRoot y al llamar a nuestro servidor en nuestro


navegador debera verse de la siguiente forma:

Como puede observarse ya no se muestra ninguna informacin del servidor.


Paso 7. Instalar mod_evasive, este modulo permitir bloquear un posible ataque de denegacin de
servicio, este es un mdulo muy bsico y se recomienda el uso de mod_security para garantizar la
eficiencia de seguridad del servidor.
Nos iremos a /home/usuario
y crearemos una carpeta nueva, en mi caso descargas, ingresaremos a esta carpeta
y teclearemos
apt-get install libapache2-mod-evasive
Crearemos el directorio donde se almacenarn los logs del mdulo
# mkdir /var/log/mod_evasive
Asignamos los permisos correspondientes a la carpeta de logs
#chown www-data:www-data /var/log/mod_evasive/
la configuracin del mdulo se muestra en la ruta /etc/apache2/mods-available/evasive.conf
y nos muestra un archivo con algo similar a lo siguiente:
<ifmodule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir /var/log/mod_evasive
DOSEmailNotify EMAIL@DOMAIN.com
DOSWhitelist 127.0.0.1
</ifmodule>
a continuacin explico la funcin de cada una de ellas

DOSHashTableSize
Cuanto ms grande sea el tamao de la tabla de Hash, ms memoria requerir, pero el rastreo de Ips
ser ms rpido.
Es til aumentar su tamao si nuestro servidor recibe una gran cantidad de peticiones, pero as mismo
la memoria del servidor deber ser tambin mayor.
DOSPageCount
Nmero de peticiones a una misma pgina para que una IP sea aadida a la lista de bloqueo
, dentro del intervalo de bloqueo en segundos especificado en el parmetro DOSPageInterval
DOSSiteCount
Igual que DOSPageCount, pero corresponde al nmero de peticiones al sitio en general, usa el
intervalo de segundos especificado en DOSSiteInterval.
DOSPageInterval
Intervalo en segundos para el parmetro umbral de DOSPageCount.
DOSSiteInterval
Intervalo en segundos para el parmetro umbral DOSSiteCount.
DOSBlockingPeriod
Periodo de bloqueo para una IP si se supera alguno de los umbrales anteriores.
El usuario recibir un error403 (Forbidden) cuando sea bloqueado, si el atacante lo sigue intentando,
este contador se resetear automticamente, haciendo que siga ms tiempo bloqueada la IP.
DOSEmailNotify
Direccin de correo electrnico que recibir informacin sobre los ataques.
DosWhitelist
Podemos especificar una IP o rango que ser excluido del rastreo por mod_evasive.
Verificamos que nuestro modulo este en funcionamiento
sudo a2enmod evasive
y al recibir el mensaje de afirmativo, reiniciaremos nuestro apache.
lo probaremos con el comando test.pl que viene dentro del tar.gz y que esta en la carpeta donde lo
descargamos
perl test.pl
Con esto ya tendramos un protector de ataques DoS a apache funcionando. No obstante, puede ser de
utilidad el siguiente comando, que nos indicar el nmero de peticiones al puerto 80 por cada IP en el
momento que lo ejecutemos:
netstat -plan|grep :80 | awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -n

Si solo queremos ver las establecidas:


netstat -plan|grep :80 | grep ESTABLISHED | awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -n
Paso 8. vitar un Cross-site, bsicamente esto consiste en reducir el riesgo de que un tercero pueda
realizar una inyeccin de cualquier lenguaje script, VBscript, java Script. etc., para esto habilitamos el
modulo rewrite de Apache2 editando el archivo de configuracin de cada virtualhost o de nuestro
/etc/apache2/sites-available/000-default.conf
y agregamos las siguientes lineas entre las etiquetas <VirtualHost:80>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* [F]
</IfModule>
Estos son 8 pasos bsicos para asegurar nuestro servidor web, a lo largo del tiempo iremos
incrementando mas elementos a este manual para que la seguridad de nuestro servidor sea eficiente.
Manual elaborado por
Pablo Yela
Fuentes: www.pabloyela.wordpress.com
http://seguridad.informaticopymes.com/medidas-para-asegurar-el-servidor-web-apache/

You might also like