Diese Dokumentation beschreibt die vollständige Einrichtung von Suricata, EveBox und GeoIP2 in einer Docker-basierten Umgebung – inklusive automatischer GeoIP-Aktualisierung und Logrotation.
Stand: 2025-07-08
Alle relevanten Dateien befinden sich in:
/opt/docker/suricata/opt/docker/suricata/config/suricata.yaml/usr/share/GeoIP/*.mmdb (im Container)/var/log/geoipupdate.logContainer für Suricata und EveBox via Docker Compose:
docker-compose.yml (gekürzt & anonymisiert):
services: suricata: image: jasonish/suricata:latest volumes: - ./config:/etc/suricata - ./geoip:/usr/share/GeoIP:ro networks: - docker_backend command: -i eth0 evebox: image: jasonish/evebox:latest ports: - "5636:5636" volumes: - ./evebox-data:/var/lib/evebox networks: - docker_backend
GeoIP-Daten (GeoLite2-*.mmdb) wurden manuell heruntergeladen und in das Volume /opt/docker/suricata/geoip gelegt.
Suricata erwartet standardmäßig:
geoip-database: /usr/share/GeoIP/GeoLite2-Country.mmdb
Container-Check:
docker exec -it suricata bash suricata --build-info | grep -i geoip ls -l /usr/share/GeoIP/*.mmdb
Skript: /usr/local/bin/update-geoip.sh
#!/bin/bash LOGFILE="/var/log/geoipupdate.log" DATABASE_DIR="/opt/docker/suricata/geoip" mkdir -p "$DATABASE_DIR" cd "$DATABASE_DIR" wget -q -O GeoLite2-Country.mmdb "https://example.com/GeoLite2-Country.mmdb" wget -q -O GeoLite2-City.mmdb "https://example.com/GeoLite2-City.mmdb" wget -q -O GeoLite2-ASN.mmdb "https://example.com/GeoLite2-ASN.mmdb" chown root:root GeoLite2-*.mmdb chmod 644 GeoLite2-*.mmdb echo "$(date): GeoIP update complete." >> "$LOGFILE"
Cronjob aktivieren:
sudo crontab -e
Eintragen:
0 3 * * * /usr/local/bin/update-geoip.sh
/etc/logrotate.d/geoipupdate:
/var/log/geoipupdate.log {
weekly
rotate 4
compress
missingok
notifempty
create 644 root root
}
Test:
logrotate --debug /etc/logrotate.d/geoipupdate logrotate -f /etc/logrotate.d/geoipupdate
EveBox Web-UI erreichbar unter:
https://<deine-domain>:5636
⚠️ Hinweis: Die Meldung Failed to open GeoIP verschwindet nach korrektem Mount und Neustart.