Graylog mit Docker
# docker-compose.yml
services:
mongodb:
image: mongo:6
volumes:
- mongo-data:/data/db
opensearch:
image: opensearchproject/opensearch:2
environment:
OPENSEARCH_INITIAL_ADMIN_PASSWORD: Sicheres!Passwort123
discovery.type: single-node
plugins.security.disabled: true
volumes:
- os-data:/usr/share/opensearch/data
graylog:
image: graylog/graylog:6.0
environment:
GRAYLOG_PASSWORD_SECRET: 16zeichenminimum
GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
# SHA256 von "admin" - bitte ändern!
GRAYLOG_HTTP_EXTERNAL_URI: http://192.168.1.100:9000/
GRAYLOG_ELASTICSEARCH_HOSTS: http://opensearch:9200
GRAYLOG_MONGODB_URI: mongodb://mongodb:27017/graylog
ports:
- "9000:9000" # Web-UI
- "514:514/udp" # Syslog UDP
- "514:514/tcp" # Syslog TCP
- "12201:12201/udp" # GELF UDP
depends_on:
- mongodb
- opensearch
volumes:
mongo-data:
os-data:
docker compose up -d
# Web-UI: http://server:9000
# Login: admin / admin (ändern!)
Inputs konfigurieren
System → Inputs → Launch New Input:
Syslog UDP (für Router/Switches):
Port: 514
Bind Address: 0.0.0.0
Syslog TCP:
Port: 514
GELF UDP (für Anwendungen/Docker):
Port: 12201
Linux Syslog → Graylog senden
# rsyslog auf Linux-Servern
cat >> /etc/rsyslog.conf << 'EOF'
# Alle Logs nach Graylog
*.* @192.168.1.100:514 # UDP
# *.* @@192.168.1.100:514 # TCP
EOF
systemctl restart rsyslog
# GELF (besser: Metadaten, strukturiert)
# Für Docker-Container: GELF-Logging-Driver
# docker-compose.yml:
# logging:
# driver: gelf
# options:
# gelf-address: "udp://graylog:12201"
# tag: "mein-container"
Cisco/OPNsense → Graylog
Cisco IOS:
logging host 192.168.1.100
OPNsense:
System → Settings → Logging → Remote Syslog
IP: 192.168.1.100
Port: 514
Protocol: UDP
Streams und Alerts
Streams = Filterregeln die Nachrichten kategorisieren
Stream: Critical Errors
Regel: level <= 3 (syslog severity)
Stream: SSH-Logins
Regel: message CONTAINS "Accepted publickey"
Regel: message CONTAINS "Failed password"
Alert Condition auf Stream:
Wenn > 5 Nachrichten in 5 Minuten: Alert!
→ E-Mail / Slack
FAQ
Was ist der Unterschied zwischen Syslog und GELF?
Syslog: Standard-Format, von Netzwerkgeräten unterstützt, begrenzte Metadaten. GELF (Graylog Extended Log Format): JSON-basiert, beliebige Felder, besser für Anwendungen.
Fazit
Graylog vereint Logs von allen Netzwerkgeräten und Servern in einer durchsuchbaren Oberfläche – essentiell für Security und Troubleshooting.
Log-Management und SIEM für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.