Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Panel de Control Grafana para el WAF de Apache-Nginx ModSecurity OWASP (GUI)


Mod security es uno de los mejores WAF's (firewall para aplicaciones web) que existen, pero carece de modo gráfico lo que dificulta visualizar fácilmente los falsos positivos y las reglas aplicadas. Mediante el registro (log) en formato JSON podemos visualizar de forma gráfica todos los eventos gracias a Grafana.

 


 

ModSecurity, el WAF más extendido en la actualidad, implementa las reglas de seguridad de OWASP, Open Web Application Security Project, un proyecto de código abierto dedicado a determinar y combatir las causas que hacen que el software sea inseguro, ofreciendo protección genérica para cualquier aplicación en las siguientes categorías de ataques, entre otras:

  • Protección HTTP – detectando anomalías y violaciones del protocolo HTTP.
  • Listas negras en tiempo real – utilizando bases de datos de reputación de terceros.
  • Ataques de denegación de servicio (DoS, DDoS) – protección frente a ataques de HTTP Flooding y Slow HTTP DoS.
  • Ataques genéricos de aplicación – detectando vulnerabilidades comunes en las aplicaciones web.
  • Detección de bots, crawlers, scanners y otros agentes de actividad sospechosa.
  • Integración con Antivirus para escanear la subida de archivos a través de la aplicación.
  • Protección frente a malware y troyanos.
  • Identificación de defectos de aplicación · alertando de errores de configuración en aplicación o de cumplimiento de estándares.

Falsos positivos y ModSecurity WAF

Es inevitable, se producen falsos positivos cuando se usa un WAF. No es algo que afecte únicamente a ModSecurity.

La eficacia de un WAF depende del valor y aplicación de sus reglas de seguridad, al tratarse de reglas que por naturaleza son «genéricas» o «comunes» es posible que se produzcan falsos positivos en su aplicación dependiendo del escenario de cada aplicación web.

Todos los firewall de aplicaciones web van a generar falsos positivos de vez en cuando, especialmente en el despliegue inicial, actualizaciones de reglas de seguridad o actualizaciones en la aplicación web.

Supervisar, solucionar, implementar y comprobar nuevas reglas para gestionar los falsos positivos  es muy importante.

 

Una de las pocas herramientas que permite visualizar es un script en Python llamado modsecurity-parser:






 Para poder visualizar los registros haremos uso de Loki y Promtail, para luego visualizarlos con Grafana:

La plantilla JSON de Grafana para ModSecurity WAF OWASP CRS Log for Apache/NGINX está disponible en:




La instalación de Loki y Promtail está disponible en otra entrada del blog así como añadir el datasource de Loki a Grafana.

Configuración Loki (/etc/loki/config.yml)


# This is a complete configuration to deploy Loki backed by the filesystem.
# The index will be shipped to the storage via tsdb-shipper.

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_server_max_recv_msg_size: 104857600  # 100 Mb
  grpc_server_max_send_msg_size: 104857600  # 100 Mb

ingester:
  chunk_encoding: snappy

ingester_client:
  grpc_client_config:
    max_recv_msg_size: 104857600  # 100 Mb
    max_send_msg_size: 104857600  # 100 Mb

querier:
  max_concurrent: 8


common:
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: inmemory
  replication_factor: 1
  path_prefix: /var/lib/loki

#new
query_range:
  parallelise_shardable_queries: true
  cache_results: true
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
  - from: 2024-10-28
    store: tsdb
    object_store: filesystem
    schema: v13
    index:
      prefix: index_
      period: 24h

storage_config:
  filesystem:
    directory: /var/lib/loki/chunks

limits_config:
   reject_old_samples: true
   reject_old_samples_max_age: 168h
   retention_period: 360h
   max_query_series: 100000
   max_query_parallelism: 24
   split_queries_by_interval: 15m
   max_global_streams_per_user: 100000
   per_stream_rate_limit: "3MB"
   per_stream_rate_limit_burst: "15MB"


Configuración de Promtail (/etc/promtail/config.yml)

server:
  http_listen_port: 9080
  grpc_listen_port: 0
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://localhost:3100/loki/api/v1/push
scrape_configs:


# Modsecurity Log

  - job_name: modsec
    pipeline_stages:
         - tenant:
             value: sysmid-sensitive
         - json:
             expressions:
               request:
             source: transaction
         - json:
             expressions:
               headers:
             source: request
         - json:
             expressions:
               Host:
             source: headers
         - labels:
             Host: Host
    static_configs:
      - targets:
        - localhost
        labels:
          job: modsec
          __path__: /var/log/modsec/modsec_audit.log


Configuración ModSecurity (apache o Nginx):

SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus "^(?:5|4(?!04))"

SecAuditLogParts ABFHJKZ

SecAuditLogType Serial
SecAuditLogFormat JSON
SecAuditLog /var/log/modsec/modsec_audit.log

 

SecAuditLogParts:

Section Description
A Audit log header (mandatory)
B Request headers
C Request body
D Reserved
E Response body
F Response headers
G Reserved
H Audit log trailer, which contains additional data
I Compact request body alternative (to part C), which excludes files
J Information on uploaded files
K Contains a list of all rules that matched for the transaction
Z Final boundary (mandatory)


Fuentes:

https://medium.com/@jieshiun/%E5%A6%82%E4%BD%95%E5%9C%A8-ubuntu-22-04-%E9%80%8F%E9%81%8E-grafana-loki-%E4%BE%86%E5%88%86%E6%9E%90-modsecurity-%E7%9A%84%E6%97%A5%E8%AA%8C-b22513a6fadf

https://portfoliodb.hslu.ch/files/fd545d6d-acab-442a-9254-c842ddacf0c1


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.