Previniendo ataques XSS (cross-site scripting) facilmente en un servidor apache

abril 5, 2013
admin

El dia de ayer se hizo una junta con las personas que estan auditando el lugar donde estoy trabajando y nos entregaron una larga lista de agujeros de seguridad dentro de nuestros sistemas, ya cubrí prácticamente todos los puntos referente mente a las bases de datos y me ofrecí a ayudar a reparar los puntos de uno de los servidores web que estaban marcados como críticos.

Previniendo ataques XSS

Al leer el reporte estos servidores son muy propensos a recibir un ataque que se llama “cross-site scripting” o “XSS” que debido a un mal desarrollo dentro de las paginas PHP son propensos a que puedan hacer referencia a un script externo (en el servidor del atacante) y ejecutarlo como si se encontrara dentro del servidor con todos los permisos de ejecución.

En la lista que me dieron, aparece mas de 400 puntos vulnerables dentro del código y corregirlo todo representa todo un desarrollo completo, asi que me puse a resolverlo desde un nivel de abstracción mas arriba y encontré que es posible parchar el servidor web apache para evitar que pueda recibir estos ataques.

Para hacer esto se instala un modulo extra en la configuración del servidor Apache, un modulo son bloques de código que se le puede agregar al servicio para agregarle características, este modulo se llama mod_security y se puede descargar de http://modsecurity.org

Previniendo ataques XSS

Previniendo ataques XSS

Para facilitar las cosas pondré el log que entregue en el control de cambios

Ver el resto de esta pagina …

Detalle de pruebas:

Se instaló el modulo para el servidor apache llamado “mod_security”

 

Primero se instaló las dependencias que ocupa este módulo, utilizando el repositorio oficial de CentOs
# yum install gcc make

# yum install libxml2 libxml2-devel httpd-devel pcre-devel curl-devel

Después se apago el servicio de apache httpd

Luego se descargó el módulo mod_security de la página oficial

# cd /usr/src

# wget http://www.modsecurity.org/download/modsecurity-apache_2.6.6.tar.gz

# tar xzf modsecurity-apache_2.6.6.tar.gz

# cd modsecurity-apache_2.6.6

# ./configure

# make install

# cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf

Después se descargó un archivo que contiene todas las reglas de seguridad que aplicara el modulo y que cumplen con todas las normas de seguridad definidas por OWASP

# cd /etc/httpd/

# wget http://downloads.sourceforge.net/project/mod-security/modsecurity-crs/0-CURRENT/modsecurity-crs_2.2.5.tar.gz

# tar xzf modsecurity-crs_2.2.5.tar.gz

# mv modsecurity-crs_2.2.5 modsecurity-crs

# cd modsecurity-crs

# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_config.conf

Luego se modificó el archivo de configuración del servicio de apache para agregar los parámetros para que inicialice el modulo y lea las reglas de seguridad
vi /etc/httpd/conf/httpd.conf

Se agrego esta línea con su debido comentario para identificar los cambios
LoadModule security2_module modules/mod_security2.so

Y al final del código se agrego esta condición, para que cargue las reglas de negocio de OWASP, esto se encuentra al final del archivo de configuración, junto con su respectivos comentarios

 

<IfModule security2_module>
    Include modsecurity-crs/modsecurity_crs_10_config.conf
    Include modsecurity-crs/base_rules/*.conf
</IfModule>

Luego se volvió a iniciar el servicio de apache

/etc/init.d/httpd restart

 

Después se realizó todas las pruebas de validación que la aplicación web se ejecutara correctamente

No comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *