¿Cómo defenderme ante un ataque web hive de

waltervargas.me
¿Cómo defenderme ante un ataque web hive
de anonymous?
Walter Vargas
2014-02-23
Puede Descargar este artículo en formato PDF
Introducción
Recientemente varios portales web del Gobierno Bolivariano de Venezuela han sido objetivos
de ataques del tipo web hive.
Este post esta orientado a todos aquellos sysadmin que se encuentren bajo una situación de
ataque a su sitio web. La combinación de el sistema operativo Debian GNU/Linux y el servidor
web Apache es el estándar de facto en la administración pública nacional para implementar la
arquitectura de portales web. Así que he enfocado este artículo bajo estos términos.
Defensa con mod_security
Requerimientos
1. Sistema operativo Debian/GNU Linux Wheezy
2. Servidor Web Apache
Instalación
Instalar el módulo mod_security es muy sencillo, basta con ejecutar el siguiente comando
en el interprete de ordenes del sistema operativo como el usuario root.
root@apache:~# apt-get install libapache2-modsecurity
1/3
waltervargas.me
Configuración
Verificar que el módulo esta activo
root@apache:~#
apachectl -M
| grep security
Crear dos archivos de configuración bajo el directorio /etc/modsecurity
Archivo /etc/modsecurity/modsecurity.conf
SecRuleEngine On
SecRequestBodyAccess On
SecRule REQUEST_HEADERS:Content-Type "text/xml" \
"phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML"
SecRequestBodyLimit 13107200
SecRequestBodyNoFilesLimit 131072
SecRequestBodyInMemoryLimit 131072
SecRequestBodyLimitAction ProcessPartial
SecRule MULTIPART_STRICT_ERROR "!@eq 0" \
"phase:2,t:none,log,allow,status:44,msg:’Multipart request body \
failed strict validation: \
PE %{REQBODY_PROCESSOR_ERROR}, \
BQ %{MULTIPART_BOUNDARY_QUOTED}, \
BW %{MULTIPART_BOUNDARY_WHITESPACE}, \
DB %{MULTIPART_DATA_BEFORE}, \
DA %{MULTIPART_DATA_AFTER}, \
HF %{MULTIPART_HEADER_FOLDING}, \
LF %{MULTIPART_LF_LINE}, \
SM %{MULTIPART_SEMICOLON_MISSING}, \
IQ %{MULTIPART_INVALID_QUOTING}, \
IQ %{MULTIPART_INVALID_PART}, \
IH %{MULTIPART_INVALID_HEADER_FOLDING}, \
IH %{MULTIPART_FILE_LIMIT_EXCEEDED}’"
SecPcreMatchLimit 15000
SecPcreMatchLimitRecursion 15000
SecResponseBodyAccess On
SecResponseBodyMimeType text/plain text/html text/xml
SecResponseBodyLimit 524288
SecResponseBodyLimitAction ProcessPartial
SecTmpDir /tmp/
SecDataDir /tmp/
SecAuditEngine RelevantOnly
2/3
waltervargas.me
SecAuditLogRelevantStatus "^(?:5|4(?!04))"
SecAuditLogParts ABIJDEFHZ
SecAuditLogType Serial
SecAuditLog /var/log/apache2/modsec_audit.log
SecArgumentSeparator &
SecCookieFormat 0
Archivo /etc/modsecurity/anonymous.conf
SecRule REQUEST_URI "we\s+are\s+anonymous" \
"phase:1,id:60,t:none,t:urlDecode,t:lowercase,drop"
SecRule REQUEST_URI "somos\s+anonymous" \
"phase:1,id:60,t:none,t:urlDecode,t:lowercase,drop"
Reiniciar y verificar
Reiniciar el servicio
root@apache:~# invoke-rc.d apache2 restart
Verificar usando los logs, debería ver el siguiente mensaje en los logs: ModSecurity: Access
denied with connection close
root@apache:~# tail -f /var/log/apache2/error.log
3/3