ngx_lua_waf
ngx_lua_waf es un cortafuegos de aplicaciones web basado en ngx_lua desarrollado cuando me uní por primera vez a Fun Travel.
El código es sencillo, y la intención original del desarrollo es usar simplicidad, alto rendimiento y ligereza.
Ahora es de código abierto y cumple con la licencia del MIT. Contiene nuestras reglas de filtrado. Si tienes alguna sugerencia o quieres hacer el fa, no dudes en mejorarlo conmigo.
Usos:
Prevenir ataques web como inyección SQL, inclusión local, desbordamiento parcial, pruebas de fuzzing, xss, SSRF, etc Evitar fugas de archivos como SVN/copia de seguridad Previene ataques con herramientas de pruebas de estrés como ApacheBench Bloquear herramientas comunes de hacking de escaneo, escáneres Bloquear solicitudes de red inusuales Bloquear el permiso de ejecución PHP del directorio adjunto de imágenes Evitar la subida de webshell
Instalación recomendada:
Se recomienda usar lujit2.1 para soporte de lua
ngx_lua si es una versión 0.9.2 o posterior, se recomienda cambiar la función de filtro normal a ngx.re.find, y la eficiencia de emparejamiento se multiplicará por tres veces.
Instrucciones de uso:
Se asume que la ruta de instalación nginx es: /usr/local/nginx/conf/
Descarga el ngx_lua_waf en el directorio de conferencia, descomprime y ponle el nombre waf
Añádelo en la sección http de nginx.conf
Configura el directorio de reglas WAF en config.lua (normalmente en el directorio waf/conf/)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
Si el camino absoluto cambia, debe modificarse en consecuencia
Luego reinicia nginx
Detalles del perfil:
RulePath = "/usr/local/nginx/conf/waf/wafconf/" --directorio de almacenamiento de reglas Registro de ataques = "apagado" --Para habilitar el registro de información de ataque, necesitas configurar logdir logdir = "/usr/local/nginx/logs/hack/" --directorio de almacenamiento de registros, que debe ser creado por el propio usuario y requiere el permiso de escritura del usuario nginx UrlDeny="on" --si bloquear el acceso a la URL Redirect="on" --si redirigir tras la intercepción CookieMatch = "encendido" --Si bloquear ataques a cookies postMatch = "on" --si bloquear un ataque posterior whiteModule = "on" --si activar la lista blanca de URL black_fileExt={"php","jsp"} --Rellena el tipo de sufijo de archivo que no se puede subir ipWhitelist={"127.0.0.1"} --lista blanca de IP, múltiples IPs separadas por comas ipBlocklist={"1.0.0.1"} --lista negra de IP, múltiples IPs separadas por comas CCDeny="on" --Si se habilita la intercepción de ataques cc (requiere que el segmento HTTP de nginx.conf se incremente lua_shared_dict límite de 10 m; ) CCrate = "100/60" --Configura la frecuencia de ataque de control de control en segundos. --Por defecto, la misma dirección IP solo puede solicitar la misma dirección 100 veces por minuto html=[[Por favor, vete~~]] --Contenido de advertencia, personalizable entre paréntesis Nota: No use comillas dobles para diferenciar las mayúsculas y mayúsculas
Comprueba si las normas están en vigor
Tras el despliegue, puedes probar el siguiente comando:
Nota: Por defecto, la máquina no filtra en la lista blanca, y puedes ajustar la configuración de config.lua tú mismo
Las representaciones son las siguientes:
Actualizaciones de las reglas:
Teniendo en cuenta el problema de caché de los regulares, las reglas dinámicas afectan al rendimiento, así que no uso cosas como diccionarios de memoria compartida ni Redis para la gestión dinámica.
Las actualizaciones de reglas pueden colocarse en otros servidores, y las reglas pueden actualizarse descargándolas regularmente a través de la tarea crontab, y la recarga nginx entrará en vigor. Para garantizar el alto rendimiento de NGX LUA WAF.
Solo graba el registro de filtros, no actives el filtrado, solo añade un -- comentario delante de check en el código, si necesitas filtrar, viceversa
Algunas notas:
Las reglas de filtrado pueden ajustarse según tus necesidades bajo wafconf, y cada regla debe ser envuelta o dividida con |
Las reglas ARGS obtienen parámetro para filtrar Las URLs son reglas que solo solicitan URLs filtradas en GET Las publicaciones son una regla de filtrado solo en solicitudes de publicación La lista blanca es una lista blanca, y las URLs que contiene coinciden para que no esté filtrada user-agent es una regla de filtrado para user-agent
El filtrado de Get y de publicaciones está activado por defecto; si necesitas activar el filtrado de cookies, edita la parte waf.lua cancelar - comentar
El formato del nombre del archivo de registro es el siguiente: Nombre de Host Web _sec.log
|