|
ModSecurity es una aplicación open source cuya finalidad es la de detectar y prevenir posibles ataques en nuestro servidor web.El ModSecurity es un modulo para apache con el que incrementamos la seguridad del mismo y protegemos nuestras aplicaciones web de los más conocidos ataques. Existe una documentación bastante extensa sobre modsecurity en su página web, no obstante, os voy a detallar a grandes rasgos, como implementar éste modulo a nuestro apache. Por ejemplo es muy util para todos aquellos webmasters que usan aplicaciones free, como phpnuke, postnuke, slashcode, etc..
Lo primero que haremos será descargarnos el módulo de modsecurity, a día de hoy la ultima versión disponible es la 1.8.6.
wget -c http://www.modsecurity.org/download/mod_security-1.8.6.tar.gz
Una vez descargado el .tar.gz lo desempaquetamos.
tar zxvf mod_security-1.8.5.tar.gz
Examinando la documentación que contiene el modulo en cuestion lo primero que vemos es que hay documentacion para instalarlo bajo apache1 o apache2, en nuestro ejmplo usaremos apache1 con modulo dinámicos, por no tener que recompilar los fuentes del apache y dejar mucho limpito y rápido el binario httpd.
apxs -cia mod_security.c
apachectl stop
apachectl start
Con esto ya tenemos nuestro mod_security listo para ser usamos y se habrá añadido la linea “LoadModule security_module libexec/mod_security.so” en nuestro fichero de configuración del apache httpd.conf.
Una vez instalado y verificado que el apache levanta sin problemas, podemos empezar a configurarlo, existen muchos ejemplos, nosotros en Todo Linux tenemos reglas especificas para securizar el insecurizable phpnuke , por seguir con cosas generales os voy a poner un ejemplo de configuracion, dentro del httpd.conf, podeis poner lo siguiente:
# Only inspect dynamic requests
# (YOU MUST TEST TO MAKE SURE IT WORKS AS EXPECTED)
SecFilterEngine DynamicOnly
# Reject requests with status 403
SecFilterDefaultAction “deny,log,status:403″
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
# SecServerSignature “Microsoft-IIS/5.0″
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log
# You normally won’t need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug_log
# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply “text/html” as Content-Type
SecFilterSelective REQUEST_METHOD “!^GET$” chain
SecFilterSelective HTTP_Content-Type “!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)”
# Require Content-Length to be provided with
# every POST request
SecFilterSelective REQUEST_METHOD “^POST$” chain
SecFilterSelective HTTP_Content-Length “^$”
# Don’t accept transfer encodings we know we don’t handle
# (and you don’t need it anyway)
SecFilterSelective HTTP_Transfer-Encoding “!^$”
|