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
Login
Der Standardbenutzer ist admin
und das Passwort ist das, das Sie oben zur Erzeugung des SHA256
-Hashes verwendet haben.
Um die WebGUI des Servers zu öffnen, muss der Port 9000 angegeben werden:
http://192.168.178.66:9000