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:
- Elasticsearch: Es speichert alle eingehenden Nachrichten und bietet eine Suchfunktion.
- MongoDB: Es wird für die Datenbank verwendet, speichert die Konfigurationen und Metainformationen.
- 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:
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:
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:
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:
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.
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.