Wie man Protokolldateien mit Graylog2 auf Debian 9 überwacht

Graylog ist ein kostenloses und quelloffenes Protokollverwaltungstool auf Basis von Java, Elasticsearch und MongoDB, mit dem Sie jedes Serverprotokoll von einem zentralen Standort aus sammeln, indizieren und analysieren können. Sie können die SSH-Logins und ungewöhnliche Aktivitäten zum Debuggen von Anwendungen und Protokollen mit Graylog einfach überwachen. Graylog bietet eine leistungsstarke Abfragesprache, Alarmierungsfunktionen, eine Verarbeitungspipeline zur Datentransformation und vieles mehr. Sie können die Funktionalität von Graylog durch eine REST-API und Add-ons erweitern.

Graylog besteht aus drei Komponenten:

  1. Elasticsearch: Es speichert alle eingehenden Nachrichten und bietet eine Suchfunktion.
  2. MongoDB: Es wird für die Datenbank verwendet, speichert die Konfigurationen und Metainformationen.
  3. Graylog-Server: Er empfängt und verarbeitet Nachrichten von verschiedenen Eingaben und stellt eine Weboberfläche für Analyse und Überwachung zur Verfügung.

In diesem Tutorial werden wir erklären, wie man Graylog2 auf dem Debian 9 Server installiert.

Voraussetzung

  • Ein Server mit Debian 9.
  • Mindestens 4 GB RAM.
  • Eine statische IP-Adresse 192.168.0.187 wurde auf Ihrem Server eingerichtet.

1 Installation der erforderlichen Pakete

Vor dem Start müssen Sie Java 8 und andere erforderliche Pakete auf Ihrem System installieren. Nicht alle erforderlichen Pakete sind im Standard-Repository von Debian 9 verfügbar, daher müssen Sie Debian Backports zur Liste der Paketquellen hinzufügen. Melden Sie sich zunächst mit dem Root-Benutzer an und erstellen Sie eine backport.list Datei:

nano /etc/apt/sources.list.d/backport.list

Füge die folgende Zeile hinzu:

deb http://ftp.debian.org/debian jessie-backports main

Speichern Sie die Datei, wenn Sie fertig sind, und aktualisieren Sie Ihr System mit dem folgenden Befehl:

apt-get update -y
apt-get upgrade -y

Sobald Ihr System auf dem neuesten Stand ist, installieren Sie alle Pakete mit dem folgenden Befehl:

apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y

Sobald alle erforderlichen Pakete installiert sind, können Sie mit der Installation von MongoDB fortfahren.

2 MongoDB installieren

MongoDB ist erforderlich, um die Konfiguration und die Metainformationen zu speichern. MongoDB ist im Standard-Repository von Debian 9 verfügbar, so dass Sie MongoDB installieren können, indem Sie einfach den folgenden Befehl ausführen:

apt-get install mongodb-server -y

Sobald MongoDB installiert ist, können Sie mit der Installation von Elasticsearch fortfahren.

3 Elastische Suche installieren

Elasticsearch fungiert als Suchserver, der alle vom Graylog-Server gesendeten Protokolle speichert und die Nachrichten anzeigt, wann immer Sie es wünschen. Elasticsearch ist im Standard-Repository von Debian 9 nicht verfügbar. Sie müssen das Elasticsearch-Repository zur Debian-Paketquelle hinzufügen.

Laden Sie zunächst den Schlüssel Elasticsearch GPG herunter und fügen Sie ihn mit dem folgenden Befehl hinzu:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -

Als nächstes erstellen Sie eine Elasticsearch Repo-Datei mit dem folgenden Befehl:

nano /etc/apt/sources.list.d/elasticsearch.list

Füge die folgende Zeile hinzu:

deb https://packages.elastic.co/elasticsearch/2.x/debian stable main

Speichern Sie die Datei, wenn Sie fertig sind, und aktualisieren Sie das Repository, indem Sie den folgenden Befehl ausführen:

apt-get update -y

Als nächstes installieren Sie Elasticsearch, indem Sie den folgenden Befehl ausführen:

apt-get install elasticsearch -y

Sobald Elasticsearch installiert ist, müssen Sie die Hauptkonfigurationsdatei von Elasticsearch ändern:

nano /etc/elasticsearch/elasticsearch.yml

Nehmen Sie die folgenden Änderungen vor:

cluster.name: graylog
network.host: 192.168.0.187
discovery.zen.ping.timeout: 10s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.187:9300"]

Speichern und schließen Sie die Datei, wenn Sie fertig sind, dann starten Sie den Elasticsearch-Dienst und lassen Sie ihn beim Booten starten:

systemctl start elasticsearch
systemctl enable elasticsearch

Führen Sie nach einigen Sekunden die folgenden Schritte aus, um zu testen, ob die elastische Suche ordnungsgemäß läuft:

curl -XGET 'http://192.168.0.187:9200/_cluster/health?pretty=true'

Stellen Sie sicher, dass der Ausgang den Clusterstatus als „grün“ anzeigt:

{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 1,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 50.0
}

Sobald Elasticsearch installiert ist und einwandfrei funktioniert, können Sie mit dem nächsten Schritt fortfahren.

4 Graylog installieren

Graylog ist im Standard-Repository von Debian 9 nicht verfügbar, daher müssen Sie zuerst das Graylog 2-Repository herunterladen und installieren. Sie können dies tun, indem Sie den folgenden Befehl ausführen:

wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
dpkg -i graylog-2.2-repository_latest.deb

Sobald das Repository installiert ist, aktualisieren Sie das Repository und installieren Sie den Graylog-Server mit dem folgenden Befehl:

apt-get update -y
apt-get install graylog-server -y

Nach der Installation von Graylog müssen Sie ein Geheimnis festlegen, um die Benutzerkennwörter zu schützen, und auch ein Hash-Passwort (sha256) für den Root-Benutzer festlegen.

Erzeugen Sie zunächst password_secret mit dem folgenden Befehl:

pwgen -N 1 -s 96

Sie sollten die folgende Ausgabe sehen:

TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC

Als nächstes generieren Sie das Hash-Passwort für den root-Benutzer mit dem folgenden Befehl:

echo -n youradminpassword | sha256sum

Sie sollten die folgende Ausgabe sehen:

e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee

Hinweis: Merken Sie sich beide Passwortschlüssel, da beide Schlüssel in der server.conf konfiguriert werden müssen.

Als nächstes müssen Sie die Hauptkonfigurationsdatei des Graylog-Servers im Verzeichnis /etc/graylog/server/ ändern:

nano /etc/graylog/server/server.conf

Nehmen Sie die folgenden Änderungen vor:

is_master = true
node_id_file = /etc/graylog/server/node-id
########past-your-password-secret-here#########
password_secret = TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC
root_username = admin
#######past-your-root-hash-password-here##########
root_password_sha2 = e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee
root_timezone = UTC
plugin_dir = /usr/share/graylog-server/plugin
rest_listen_uri = http://0.0.0.0:9000/api/
rest_enable_cors = true
web_listen_uri = http://0.0.0.0:9000/
rotation_strategy = count
elasticsearch_max_docs_per_index = 20000000
elasticsearch_max_number_of_indices = 7
retention_strategy = delete
elasticsearch_shards = 4
elasticsearch_replicas = 1
elasticsearch_index_prefix = graylog
allow_leading_wildcard_searches = true
allow_highlighting = false
elasticsearch_cluster_name = graylog
elasticsearch_discovery_zen_ping_unicast_hosts = 192.168.0.187:9300
elasticsearch_http_enabled = false
elasticsearch_network_host = 0.0.00
elasticsearch_discovery_initial_state_timeout = 3s
elasticsearch_analyzer = standard
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
async_eventbus_processors = 2
lb_recognition_period_seconds = 3
alert_check_interval = 60
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
mongodb_threads_allowed_to_block_multiplier = 5
content_packs_dir = /usr/share/graylog-server/contentpacks
content_packs_auto_load = grok-patterns.json
proxied_requests_thread_pool_size = 32

Speichern und schließen Sie die Datei, wenn Sie fertig sind, dann starten Sie den Graylog-Dienst und lassen Sie ihn beim Booten starten:

systemctl start graylog-server
systemctl enable graylog-server

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

5 Firewall konfigurieren

Standardmäßig überwacht das Graylog-Webinterface den Port 9000, daher müssen Sie den Port 9000 über die UFW-Firewall zulassen. Die UFW-Firewall ist in Debian 9 nicht installiert. Daher müssen Sie es zuerst installieren. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

apt-get install ufw -y

Sobald UFW installiert ist, aktivieren Sie es, indem Sie den folgenden Befehl ausführen;

ufw enable

Als nächstes erlauben Sie Port 9000 durch die UFW-Firewall, indem Sie den folgenden Befehl ausführen:

ufw allow 9000

Sie können den Status der UFW-Firewall jederzeit überprüfen, indem Sie den folgenden Befehl ausführen.

ufw status

Sobald die Firewall konfiguriert ist, können Sie mit dem nächsten Schritt fortfahren.

6 Zugriff auf die Graylog-Webschnittstelle

Das Graylog-Webinterface lauscht auf Port 9000. Öffnen Sie nun Ihren Webbrowser und geben Sie die URL http://192.168.0.187:9000 ein, Sie sollten den folgenden Bildschirm sehen:

Graylog Interface

Melden Sie sich mit dem Benutzernamen „admin“ und dem Passwort, das Sie unter root_password_sha2 auf server.conf konfiguriert haben, an. Sie sollten den folgenden Bildschirm sehen:

Graylog beim Start

Als nächstes müssen Sie die Eingabe hinzufügen, um die Syslog-Nachricht über die UDP zu empfangen. Um die Eingabe hinzuzufügen, klicken Sie auf System -> wählen Sie Inputs -> Syslog UDP -> klicken Sie auf Neue Eingabetaste starten, Sie sollten den folgenden Bildschirm sehen:

Eingangsquelle in Graylog hinzufügen

Füllen Sie alle Details wie Titel, Port, Bind-Adresse und schließlich klicken Sie auf die Schaltfläche Speichern, Sie sollten den folgenden Bildschirm sehen:

Detail der Protokollquelle

Nun erhält der Graylog-Server die Systemprotokolle über den Port 8514 vom Client oder Server.

Auf dem Client-System müssen Sie rsyslog so konfigurieren, dass es Meldungen an den Graylog-Server sendet. Sie können dies tun, indem Sie die Datei rsyslog.conf bearbeiten:

nano /etc/rsyslog.conf

Füge die folgenden Zeilen hinzu:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 8514
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @192.168.0.187:8514;GRAYLOGRFC5424

Speichern Sie die Datei und starten Sie den rsyslog-Dienst neu, um diese Änderungen zu übernehmen:

systemctl restart rsyslog

Als nächstes können Sie auf dem Graylog-Server unter „Graylog Sources“ das ssh-Protokoll mit fehlgeschlagenen Anmeldeversuchen im folgenden Bildschirm sehen.

Überwachen von Anmeldeversuchen mit Graylog

Fazit

Herzlichen Glückwunsch! Sie haben den Graylog-Server unter Debian 9 erfolgreich installiert und konfiguriert und können nun die Protokolle und die Analyse der Systemprotokolle von der zentralen Stelle aus sehen. Sie können Graylog auch anpassen und eine andere Art von Protokollen nach Ihren Bedürfnissen versenden. Weitere Informationen erhalten Sie auf der Graylog-Dokumentationsseite http://docs.graylog.org/en/2.2/pages/getting_started.html. Bei Fragen können Sie mich gerne kommentieren.

Das könnte Dich auch interessieren …