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
© Copyright 2024