Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-themen:allgemein:snort_promtail_loki_grafana_ids_log-monitoring-dokumentation

zurück # Snort – Promtail – Loki – Grafana: IDS/Log-Monitoring-Dokumentation

## Ăśbersicht

Dieses Dokument beschreibt die Einrichtung und Funktionsweise einer containerisierten IDS-Umgebung bestehend aus: - Snort (Intrusion Detection System) - Promtail (Log Collector) - Loki (Log Storage & Query) - Grafana (Visualisierung) mit besonderem Fokus auf die Filterung legitimer Verbindungen (z. B. SSH) aus der IDS-Ausgabe und der korrekten Übergabe an Loki.

—

## 1. Snort – Intrusion Detection

Container-Konfiguration: ```yaml snort:

build:
  context: ./snort
  dockerfile: Dockerfile
container_name: snort
network_mode: host
volumes:
  - ./snort/snort.conf:/etc/snort/snort.conf:ro
  - ./snort/rules:/etc/snort/rules
  - ./snort/logs:/var/log/snort
restart: unless-stopped
environment:
  - INTERFACE=enp0s31f6

```

Regeldatei (`local.rules`) mit Ausschluss vertrauenswĂĽrdiger Quellen und Ports: ```snort ipvar TRUSTED_SRC [127.0.0.1, 192.168.178.0/24, 172.18.0.0/16] portvar TRUSTED_PORTS [22, 80, 443, 3000, 3100, 389]

alert tcp !$TRUSTED_SRC any -> $HOME_NET !TRUSTED_PORTS (flags:S; msg:„[NMAP] TCP SYN Scan detected“; sid:1000002; rev:2;) … ``` Diese Regeln erlauben es, Angriffe nur dann zu melden, wenn sie von *nicht vertrauenswürdigen IPs* oder zu *nicht legitimierten Ports* erfolgen.

—

## 2. Promtail – Log Collector

Container-Konfiguration: ```yaml promtail:

image: grafana/promtail:2.9.4
container_name: promtail
volumes:
  - ./loki/config/promtail-config.yaml:/etc/promtail/config.yaml
  - ./snort/logs:/var/log/snort
command: -config.file=/etc/promtail/config.yaml
restart: unless-stopped
networks:
  - docker_backend

```

Konfigurationsdatei `promtail-config.yaml`: ```yaml server:

http_listen_port: 9080
grpc_listen_port: 0

positions:

filename: /tmp/positions.yaml

clients:

scrape_configs:

  1. job_name: snort

static_configs:

  1. targets:
    1. localhost

labels:

        job: snort
        __path__: /var/log/snort/alert

```

—

## 3. Loki – Log Aggregator

Container-Konfiguration: ```yaml loki:

image: grafana/loki:2.9.4
container_name: loki
ports:
  - "3100:3100"
volumes:
  - ./loki/config/loki-config.yaml:/etc/loki/config.yaml
  - ./loki/data:/loki
command: -config.file=/etc/loki/config.yaml
restart: unless-stopped
networks:
  - docker_backend

```

—

## 4. Grafana – Visualisierung

Container-Konfiguration: ```yaml grafana:

image: grafana/grafana
container_name: grafana
ports:
  - "3000:3000"
volumes:
  - grafana-storage:/var/lib/grafana
networks:
  - docker_backend
  - ldap-net
labels:
  - "traefik.enable=true"
  - "traefik.http.routers.grafana.rule=Host(`grafana.example.local`)"
  - "traefik.http.routers.grafana.entrypoints=websecure"
  - "traefik.http.routers.grafana.tls.certresolver=le"
  - "traefik.http.services.grafana.loadbalancer.server.port=3000"

```

Beispiel-Query für Zeitreihendiagramm (Panel 1): ```logql count_over_time({filename=„/var/log/snort/alert“} |= „ALERT“ [1m]) ```

Beispiel-Query für Live Log Stream (Panel 2): ```logql {filename=„/var/log/snort/alert“} ```

—

## 5. Besonderheiten

- Filterung legitimer Verbindungen (z. B. SSH auf Port 22, HTTPS auf 443, interne Quellen) erfolgt direkt in den Regeln. - Promtail & Loki übernehmen den Rest der Verarbeitung ohne Inhalt zu interpretieren. - Grafana nutzt Panel-Spezifische Queries für z. B. Live-Ansicht und Heatmaps. - Alle Regeln sollten in einer dedizierten Datei wie `local.rules` gepflegt werden, damit Systemupdates keine Einträge überschreiben.

— Lars.Weiss@gmail.com?l|Lars Weiß Lars Weiß 28.05.2025 13:43

it-themen/allgemein/snort_promtail_loki_grafana_ids_log-monitoring-dokumentation.txt · Zuletzt geändert: von lars