Este módulo nos va a aportar la capacidad de filtrar accesos web a nivel de aplicación (capa 7) y normalmente se convina con el módulo de mod_proxy.
Introducción
Al instalar el paquete nos encontramos que vamos a cargar dos paquetes:
libapache-mod-security - Tighten web applications security for Apache
mod-security-common - Tighten web applications security - common files
En nuestra configuración al instalarlo se modificará el fichero modules.conf para cargar el mod_sec.
Configuración
Pasamos a definir las reglas de nuestro httpd.conf
SecFilterSelective "\'" log,deny-> Aquí estamos escapando la comilla simple, y siempre que aparezca como argumento este caracter se genera un log y se deniega el acceso.
Las opciones que podemos incluir como argumentos a las directrices son: (Log, deny, nolog, allow, satus, redirect, exec o pause).
Indicar que si ponemos el carácter de comillas como %27 también se aplica esta regla.
Al igual ocurre con otro tipo de cadenas, como // lo sustituye por una sola /, y reemplaza %00 por espacios.
SecAuditEngine RelevantOnly-> mandamos a los logs las actividades sospechosas, podríamos ponerOnen vez deRelevantOnlyy guardaríamos en los logs todo Cookies, POST, GETS,…SetFilterScanOutput On-> Filtra la información que devuelve nuestro servidor.SetFilterSelectiveOutput "/var/log/sulog" log,deny-> Logea y deniega el acceso a un directorio o ruta.SecFilter "\?" log,redirect:http://www.google.com-> En el caso de que se ponga una interrogación, se logea y se redirige a google.SecFilter "cmd=" log,exec:/usr/local/bin/mail_aviso.pl-> En el caso de que encuentre ese patrón, ejecuta la ruta absoluta del script definido.SecFilterScanPOST On-> el sistema examina los POST que se lancen.
- SecFilter "delete[[:space:]]+from"
- SecFilter"insert[[:space:]]+into"
SecFilter "select-+from"-> Eliminamos ataques de inyección de SQL.SecFilterEngine On-> decimos que se active el filtrado del módulo mod_security;SerFilterCheckURLEncoding On-> Fuerza al browser a usar la codificación de la URL.
Otras reglas o ejemplos que merecen comentarse, se basan en analizar las cabeceras del navegador, esto se apoya en la directiva de Location:
Location puede ser cualquier cabecera que mete el server y las cabeceras que se analizan en el cliente y podemos pasar varios o filtrar varios separados por pipes”|”.
Entre otros están: REMOTE_ADDR | REMOTE_HOST | POST_PLAYLOAD | COOKIES_NAMES | COOKIES_VALUES | QUERY_STRING| ARGS (argumentos pasados) | TIME | REQUEST,… para más información de todas las opciones: Modsecurity-manual Documentation”
SecFilterSelective REQUEST_URI "Error_login.php" chainSelecFilterSelective ARG_user "user$" exec:/usr/local/bin/mail_aviso.sh-> REQUEST_URI es la página a la que nos redirige cuando hemos fallado el acceso en nuestro ejemplo, entonces con CHAIN enlazamos con otra regla y si el ARG_user es igual al valor de user (variable) entonces se ejecuta el script definido en la regla.SetFilterSelective "HTTP_USER_AGENT | REMOTE_HOST" "^$" deny,status:500-> Los campos de la cabecera HTTP_USER_AGENT y REMOTE_HOST no pueden ser vacíos (por si nos hacen un telnet al puerto 80, o usan netcat), en dicho caso deniega la página y dice error 500 dando a entender que el sistema se ha caído.
Espero haya sido de utilidad
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.

Core Networks
Oracle University