{"id":2542,"date":"2016-11-29T11:51:16","date_gmt":"2016-11-29T10:51:16","guid":{"rendered":"https:\/\/www.boc.de\/watchguard-info-portal\/?p=2542"},"modified":"2024-09-03T09:38:05","modified_gmt":"2024-09-03T07:38:05","slug":"erweiterte-log-auswertung-mit-graylog","status":"publish","type":"post","link":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/2016\/11\/erweiterte-log-auswertung-mit-graylog\/","title":{"rendered":"Erweiterte Log-Auswertung mit graylog"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2552 alignleft\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-300x205.png\" alt=\"graylog-dashboard\" width=\"300\" height=\"205\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-300x205.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-768x525.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-1024x699.png 1024w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-800x546.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard-1200x820.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-dashboard.png 1303w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>WatchGuard bietet einen sehr leistungsstarken Logging- und Reporting-Server: den WatchGuard Dimension Server. Allerdings m\u00f6chte man manchmal die Auswertungen noch etwas spezifischer zusammenbauen. Nachdem WatchGuard die M\u00f6glichkeit bietet, die Logs zus\u00e4tzlich auf einen Syslog-Server zu schreiben, lag es nahe, dort anzusetzen. Auf der Suche nach einem Syslog-Server mit h\u00fcbschen Auswertungen bin ich \u00fcber <a href=\"https:\/\/www.graylog.org\/\">graylog <\/a>gestolpert. Graylog basiert auf einem Linux-Elasticsearch-Stack mit einem\u00a0h\u00fcbschen und leistungsf\u00e4higen Web-Frontend. Die Installation ist denkbar einfach, da es das ganze Paket\u00a0vorkonfiguriert f\u00fcr alle m\u00f6glichen Umgebungen gibt, beispielsweise EC2, OpenStack, Docker, als Chef, Puppet, Ansible, Vagrant-Script, nat\u00fcrlich als RPMs\/DEBs und tarball, oder eben auch als OVA-Template (f\u00fcr das ich mich entschieden habe). Ich habe also eine VM aus dem Template installiert. Die Hardware-Anforderungen f\u00fcr den Start sind \u00fcbersichtlich: 4 GB RAM und 20 GB HDD. (letzteres ist nat\u00fcrlich den eigenen Bed\u00fcrfnissen anpassbar).<\/p>\n<p><!--more--><\/p>\n<p>Zun\u00e4chst einmal ein m\u00f6gliches Ergebnis der Auswertungen: Ich habe auf der Firewall eine Policy eingerichtet, die Zugriffsversuche auf einige Zielports (z.B. 22, 23, 3389, 8443) monitort und anschlie\u00dfend die IP-Adressen auf die automatische tempor\u00e4re Blocklist der WatchGuard setzt. Wer versucht, per SSH oder Telnet\u00a0zuzugreifen und nicht aus den erlaubten IP-Ranges kommt, ist vermutlich b\u00f6se und kann daher 20min geblockt werden. Allerdings m\u00f6chte ich hierzu auch eine Auswertung haben. Ebenso\u00a0ist eine Auswertung \u00fcber Proxies und Applications m\u00f6glich:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2544 size-large alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-1024x699.png\" alt=\"graylog-blocked-sites\" width=\"800\" height=\"546\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-1024x699.png 1024w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-300x205.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-768x525.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-800x546.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites-1200x820.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-blocked-sites.png 1303w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3>Installation des graylog-Servers<\/h3>\n<p>Auf die Installation des graylog-Servers als OVA-Template gehe ich nicht weiter ein. Man sollte allerdings bedenken, dass der Server bitte HINTER der Firewall im Trusted Network stehen sollte, bei erh\u00f6hten Security-Bed\u00fcrfnissen gerne auch in einer DMZ mit gezielten Policies &#8211; der Server hat so einige Ports per default offen &#8211; eine MongoDB f\u00fcr config-Storage, den Elasticsearch Stack, etc. Zudem ist das Auswerte-Frontend in der Default-Installation auf Port 80 unverschl\u00fcsselt. (das kann und sollte man im Produktiven Einsatz definitiv auf https umstellen).<\/p>\n<p><strong>Zu beachten sind auch die Datenschutzbestimmungen f\u00fcr den Zugriff auf den Logserver und das Logging personenbezogener Daten &#8211;\u00a0im Gegensatz zur WatchGuard Dimension gibt es hier nicht die M\u00f6glichkeit einer Anonymisierung.<\/strong><\/p>\n<h3>Konfiguration des graylog-Servers<\/h3>\n<p>Zun\u00e4chst muss der Syslog-Server als Input auf dem graylog-Server aktiviert sein. Unter <strong>System =&gt; Inputs <\/strong>kann n\u00f6tigenfalls der appliance-syslog-udp Input aktiviert werden. Anschlie\u00dfend\u00a0wird in der WatchGuard unter <strong>Setup =&gt; Logging<\/strong> das Logging an den graylog-Server (syslog) aktiviert.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2546 size-large alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-1024x699.png\" alt=\"graylog-syslog-udp\" width=\"800\" height=\"546\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-1024x699.png 1024w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-300x205.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-768x525.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-800x546.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp-1200x820.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-syslog-udp.png 1303w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3>Definition der Extraktoren<\/h3>\n<p>Nachdem nun die Log-Nachrichten auf dem graylog-Server ankommen, k\u00f6nnen diese ausgewertet werden &#8211; allerdings m\u00fcssen die Log-Nachrichten noch geparst werden, um vern\u00fcnftige Schlagw\u00f6rter zu erhalten. Hierzu bietet graylog die M\u00f6glichkeit,\u00a0die bei Elastiksearch \u00fcblichen Methoden: JSON-Parser, GROK-Parser etc. Unter <strong>System =&gt; GROK patterns <\/strong>werden nun zus\u00e4tzliche Patterns eingerichtet:<\/p>\n<p><strong>WatchGuardFirewall<\/strong><\/p>\n<pre>firewall: %<span class=\"token punctuation\">{<\/span>NOTSPACE:UNWANTED<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:FWAction<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:src_interface<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:dst_interface<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:pckt_len<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:protocol<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:UNWANTED<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>NOTSPACE:ttl<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>IPV4:src_ip<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>IPV4:dst_ip<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>BASE10NUM:src_port<span class=\"token punctuation\">}<\/span> %<span class=\"token punctuation\">{<\/span>BASE10NUM:dst_port<span class=\"token punctuation\">}<\/span><\/pre>\n<p><strong>WatchGuardBlocking<\/strong><\/p>\n<pre>firewall: msg_id=\"3001-1001\" Temporarily blocking host %{IPV4:src_ip}<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2545 alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-1024x699.png\" alt=\"graylog-grok-patterns\" width=\"800\" height=\"546\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-1024x699.png 1024w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-300x205.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-768x525.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-800x546.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns-1200x820.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-grok-patterns.png 1303w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2556 alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-manage-extractors-300x80.png\" alt=\"graylog-manage-extractors\" width=\"300\" height=\"80\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-manage-extractors-300x80.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-manage-extractors.png 631w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Die nun definierten GROK Patterns m\u00fcssen noch als Extraktoren aktiviert werden, hierzu gibt es den Button <strong>Manage Extractors<\/strong> unter <strong>System =&gt; Inputs <\/strong>beim jeweiligen Input, also hier dem appliance-syslog-udp Input Stream.<\/p>\n<p>Die Extraktoren werden \u00fcber den Klick auf <strong>Add extractor =&gt; Get Started<\/strong>\u00a0, <strong>Load Message<\/strong> hinzugef\u00fcgt: Man w\u00e4hlt unter <strong>message<\/strong> mit <strong>Select extractor Type<\/strong> den Typ <strong>Grok pattern<\/strong> und stellt als Pattern mit %{PATTERN-NAME} die oben verwendeten Patterns ein, also beispielsweise %{WatchGuardBlocking}. Als letztes erstellt man den Extractor vom Typ <strong>Copy Input<\/strong>\u00a0mit dem verf\u00fcgbaren vordefiniertem Konverter <strong>Key = Value Pairs To Fields<\/strong>. \u00dcber <strong>Sort extracors<\/strong> mu\u00df ggf. die Reihenfolge korrigiert werden, der <strong>Key=Value Extractor<\/strong> mu\u00df als letzter Parser \u00fcber den Stream laufen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2558 alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-902x1024.png\" alt=\"graylog-extractors\" width=\"800\" height=\"908\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-902x1024.png 902w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-264x300.png 264w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-768x872.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-800x909.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors-1200x1363.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-extractors.png 1303w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Durch diese Extraktoren erhalte ich die entsprechend Felder zur Auswertung im graylog. beispielsweise src_ip, dest_ip, src_port, dest_port, oder auch die von der WatchGuard ab Version 11.12 gelieferte geo_src=&#8221;&#8230;&#8221; Information. Da diese bereits als key=value geliefert wird, wird sie vom key=value Extractor gefunden; die anderen Keys m\u00fcssen von den Grok-Extraktoren gefunden werden.<\/p>\n<h3>Erstellen der Graphen<\/h3>\n<p>Unter Search kann man nun im Log suchen &#8211; die Such-Queries werden dabei wie f\u00fcr Elastiksearch definiert: eine Suche nach dem entsprechenden Policy-Namen (hier Ports4Blocking) geht beispielsweise so:<\/p>\n<pre>message:*Ports4Blocking*<\/pre>\n<p>\u00dcber<strong> Quick values<\/strong> kann man nun den Graph erstellen und mit <strong>Add to dashboard<\/strong> auf ein Dashboard schieben.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-2559 alignnone\" src=\"https:\/\/www.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-1024x880.png\" alt=\"graylog-search-to-graph\" width=\"800\" height=\"688\" srcset=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-1024x880.png 1024w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-300x258.png 300w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-768x660.png 768w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-800x687.png 800w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph-1200x1031.png 1200w, https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-content\/uploads\/2016\/11\/graylog-search-to-graph.png 1299w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3>Fazit und Ausblick<\/h3>\n<p>Graylog ist ein sehr leistungsf\u00e4higer Syslog-Reporting-Server. Allerdings sollten die Gesamtkosten des Systems nicht untersch\u00e4tzt werden: obwohl\u00a0die Software Open Source ist, mu\u00df man doch mit einer erheblichen Einarbeitungszeit rechnen, bis man sich in die Gedankenwelt von Elasticsearch, Input-Streams, GROK-Filter, etc. eingearbeitet hat. Der Zeitaufwand f\u00fcr das obige Setup, einarbeiten in graylog und diesen Artikel d\u00fcrfte grob bei einem Manntag gelegen haben &#8211; und ich hatte bereits vorher einmal Erfahrung mit einem ELK (Elastiksearch + Kibana) Stack gesammelt.<\/p>\n<p>Weitere Optionen von graylog (vermutlich eine unvollst\u00e4ndige Liste), auf die ich hier (vorerst) nicht tiefer eingehe:<\/p>\n<ul>\n<li>weitere Konfigruation der Dashboards<\/li>\n<li>Benutzerverwaltung<\/li>\n<li>Redundanz und Erh\u00f6hung der Such-Performance durch aufbauen eines Elasticsearch Multi-Node-Clusters<\/li>\n<li>Multi-Value-Graphen<\/li>\n<li>Umstellung\u00a0von graylog auf https<\/li>\n<li>Absicherung des graylog-Servers (wie oben erw\u00e4hnt: bitte nur in der DMZ oder im Trusted Network verwenden)<\/li>\n<\/ul>\n<h3>Links und Referenzen<\/h3>\n<ul>\n<li>graylog:\u00a0<a href=\"https:\/\/www.graylog.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.graylog.org\/<\/a><\/li>\n<li>Dokumentation:\u00a0<a href=\"http:\/\/docs.graylog.org\/en\/2.1\/\" target=\"_blank\" rel=\"noopener\">http:\/\/docs.graylog.org\/en\/2.1\/<\/a><\/li>\n<li>GROK:\u00a0<a href=\"https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-grok.html\" target=\"_blank\" rel=\"noopener\">https:\/\/www.elastic.co\/guide\/en\/logstash\/current\/plugins-filters-grok.html<\/a><\/li>\n<li>Elasticsearch:\u00a0<a href=\"https:\/\/www.elastic.co\/de\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.elastic.co\/de\/<\/a><\/li>\n<li><a href=\"https:\/\/www.boc.de\/watchguard-info-portal\/produktinfos\/watchguard-dimension-server\/\" target=\"_blank\" rel=\"noopener\">Watchguard Dimension<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>WatchGuard bietet einen sehr leistungsstarken Logging- und Reporting-Server: den WatchGuard Dimension Server. Allerdings m\u00f6chte man manchmal die Auswertungen noch etwas spezifischer zusammenbauen. Nachdem WatchGuard die M\u00f6glichkeit bietet, die Logs zus\u00e4tzlich auf einen Syslog-Server zu schreiben, lag es nahe, dort anzusetzen. Auf der Suche nach einem Syslog-Server mit h\u00fcbschen Auswertungen bin ich \u00fcber graylog gestolpert. Graylog basiert auf einem Linux-Elasticsearch-Stack mit einem\u00a0h\u00fcbschen und leistungsf\u00e4higen Web-Frontend. Die &hellip; <a href=\"https:\/\/wordpress.boc.de\/watchguard-info-portal\/2016\/11\/erweiterte-log-auswertung-mit-graylog\/\" class=\"more-link\">Weiterlesen <span class=\"screen-reader-text\">Erweiterte Log-Auswertung mit graylog<\/span> <span class=\"meta-nav\">&raquo;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[362,3],"tags":[],"class_list":["post-2542","post","type-post","status-publish","format-standard","hentry","category-howto","category-watchguard-technischer-blog"],"_links":{"self":[{"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/posts\/2542"}],"collection":[{"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/comments?post=2542"}],"version-history":[{"count":15,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/posts\/2542\/revisions"}],"predecessor-version":[{"id":24518,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/posts\/2542\/revisions\/24518"}],"wp:attachment":[{"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/media?parent=2542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/categories?post=2542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.boc.de\/watchguard-info-portal\/wp-json\/wp\/v2\/tags?post=2542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}