1. Home
  2. Linux
  3. Server Anwendungen
  4. Graylog Logmanagement
  5. Graylog: Setup Graylog-Server mit OpenSearch (Single Node)

Graylog: Setup Graylog-Server mit OpenSearch (Single Node)

Graylog Server in Verbindung mit OpenSearch ist eine leistungsstarke Kombination für Log-Management und -Analyse. Graylog ist eine Open-Source-Plattform für die zentrale Protokollierung, die es ermöglicht, große Mengen an Protokolldaten effizient zu sammeln, zu speichern und zu analysieren. Die Integration mit OpenSearch, einem Open Source Such- und Analysetool, erweitert die Fähigkeiten von Graylog durch erweiterte Suchfunktionen, Skalierbarkeit und eine leistungsstarke Analyse-Engine. Diese Kombination bietet eine umfassende Lösung für Organisationen, um ihre Logdaten zu verwalten, zu durchsuchen und Einblicke in Echtzeit zu erhalten, was für die Sicherheitsanalyse, die Überwachung der Systemleistung und die Behebung von Problemen in IT-Systemen von entscheidender Bedeutung ist.

Installation

Die Installationsanleitung für Graylog 5.2 unter Debian 11 wurde von der Graylog-Herstellerseite übernommen. Hier eine Zusammenfassung und Auszüge aus den Konfigurationsdateien. Zum Zeitpunkt der Installation war dies die aktuellste Version. Debian 12 wird noch nicht unterstützt.

MongoDB

Graylog 5.2 is compatible with MongoDB 5.x-6.x.

$ sudo apt install gnupg
$ wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
$ echo "deb http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt update
$ sudo apt install -y mongodb-org
$ sudo systemctl daemon-reload
$ sudo systemctl enable mongod.service
$ sudo systemctl restart mongod.service
$ sudo systemctl --type=service --state=active | grep mongod

OpenSearch

$ curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo apt-key add -
$ echo "deb https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/opensearch-2.x.list
$ sudo apt update
$ sudo apt list -a opensearch
$ sudo apt install opensearch

Graylog Konfiguration für OpenSearch

$ sudo vi /etc/opensearch/opensearch.yml

Für einen Single Node übernehmen Sie folgende Konfigurationsparameter. Nicht vorhandene Parameter müssen angelegt werden:

cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
# /etc/opensearch/opensearch.yml
cluster.name: graylog
node.name: ${HOSTNAME} 
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: 0.0.0.0
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-config", ".plugins-ml-connector", ".plugins-ml-model-group", ".plugins-ml-model", ".plugins-ml-task", ".plugins-ml-conversation-meta", ".plugins-ml-conversation-interactions", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".ql-datasources", ".opendistro-asynchronous-search-response*", ".replication-metadata-store", ".opensearch-knn-models", ".geospatial-ip2geo-data*"]
node.max_local_storage_nodes: 3
discovery.type: single-node
action.auto_create_index: false
plugins.security.disabled: true

Aktualisieren Sie die Xms- und Xmx-Einstellungen mit der Hälfte des installierten Systemspeichers, wie im folgenden Beispiel mit 4 GB Systemspeicher gezeigt:

$ sudo vi /etc/opensearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms2g
-Xmx2g

Konfigurieren Sie die Kernelparameter:

$ sudo sysctl -w vm.max_map_count=262144
$ sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf

Graylog

$ wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb
$ sudo dpkg -i graylog-5.2-repository_latest.deb
$ sudo apt update
$ sudo apt install graylog-server

Graylog Konfiguration

Fügen Sie die Parameter password_secret und root_password_sha2 hinzu, da diese obligatorisch sind und Graylog ohne sie nicht gestartet werden kann. Sie müssen in den Formaten angegeben werden, die von den beiden folgenden Befehlen zurückgegeben werden:

$ < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Um eine Verbindung zu Graylog herstellen zu können, sollten Sie http_bind_address auf den öffentlichen Hostnamen oder eine öffentliche IP-Adresse für den Rechner setzen, mit dem Sie eine Verbindung herstellen können.

In Graylog 5.2 muss die elasticsearch_hosts-Einstellung manuell angepasst werden, um eine durch Kommata getrennte Liste von URIs zu einem oder mehreren gültigen Elasticsearch/OpenSearch-Knoten zu enthalten. Für mein Setup könnte das so aussehen wie im Auszug aus der Konfigurationsdatei:

# /etc/graylog/server/server.conf
is_leader = true
node_id_file = /etc/graylog/server/node-id
password_secret = dpBCTn97IhvVOuF8DsSPLwxxOhGmA-n7oL6V3BZIp-HwcCRO7UvhNEn4PPHueF4E96wXPW-bGYAXIqWHGudrGMByFY4bTMbg
root_password_sha2 = 4ac2d86e5904a79e99cba5eebfd7ec7701d231e9b1f3cd931668d66238d8227f
root_timezone = Europe/Berlin
bin_dir = /usr/share/graylog-server/bin
data_dir = /var/lib/graylog-server
plugin_dir = /usr/share/graylog-server/plugin
http_bind_address = 192.168.178.66:9000
stream_aware_field_types=false
elasticsearch_hosts = http://127.0.0.1:9200
disabled_retention_strategies = none
allow_leading_wildcard_searches = false
allow_highlighting = false
output_batch_size = 500
output_flush_interval = 1
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30
processbuffer_processors = 5
outputbuffer_processors = 3
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking
message_journal_enabled = true
message_journal_dir = /var/lib/graylog-server/journal
lb_recognition_period_seconds = 3
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
$ sudo systemctl daemon-reload
$ sudo systemctl enable graylog-server
$ sudo systemctl start graylog-server
$ sudo systemctl --type=service --state=active | grep graylog

Von entscheidender Bedeutung für eine erfolgreiche Korrelation von Logfiles aus verschiedenen Quellen ist eine synchronisierte Zeit. Stellen Sie sicher, dass alle Quellen und der Graylog-Server mit der gleichen Zeitquelle synchronisiert sind, dass die Synchronisation funktioniert und dass die richtigen Zeitzonen eingestellt sind. Eine Liste allgemein gültiger Zeitzonen finden Sie hier:
https://www.joda.org/joda-time/timezones.html

Login

Der Standardbenutzer ist admin und das Passwort ist das, das Sie oben zur Erzeugung des SHA256-Hashes verwendet haben.

Damit haben Sie eine rudimentäre, lauffähige Installation, die noch ohne SSL-Verschlüsselung läuft und alle notwendigen Komponenten auf einem Host installiert hat. Zum Testen in einer Testumgebung ausreichend, aber nicht für den produktiven Einsatz empfohlen.

Um die WebGUI des Servers zu öffnen, muss der Port 9000 angegeben werden:

http://192.168.178.66:9000

Bitte beachten Sie, dass es sich hierbei lediglich um eine Proof-of-Concept-Installation handelt. Wichtige Sicherheitseinstellungen fehlen. Verwenden Sie diese Installation nur zu Evaluierungs- und Dokumentationszwecken!

Updated on 7. Januar 2024

Was this article helpful?