{"id":7800,"date":"2012-05-29T17:25:52","date_gmt":"2012-05-29T15:25:52","guid":{"rendered":"https:\/\/www.gambaru.de\/blog\/?p=7800"},"modified":"2019-10-06T01:26:20","modified_gmt":"2019-10-05T23:26:20","slug":"logcheck-uberwachung-von-logdateien-mit-regularen-ausdrucken","status":"publish","type":"post","link":"https:\/\/gambaru.de\/blog\/2012\/05\/29\/logcheck-uberwachung-von-logdateien-mit-regularen-ausdrucken\/","title":{"rendered":"Logcheck: \u00dcberwachung von Logdateien mit Regul\u00e4ren Ausdr\u00fccken"},"content":{"rendered":"<p>Letzte Woche hatte ich <a href=\"https:\/\/www.gambaru.de\/blog\/2012\/05\/20\/logwatch-der-loganalysierer-ein-beispiel-mit-lighttpd\/\">Logwatch vorgestellt<\/a>, dass bei mir auf dem Server seinen Dienst als Beobachter von Logdateien verrichtet. Wie so oft bei Linux gibt es nat\u00fcrlich eine Reihe von Alternativen. Darunter habe ich mir sp\u00e4ter <a href=\"http:\/\/logcheck.org\/\">Logcheck<\/a> genauer angeschaut.<br \/>\nDer gr\u00f6\u00dfte Unterschied nach der Installation ist das Benachrichtigungsintervall, das standardm\u00e4\u00dfig eine Stunde betr\u00e4gt. Die ganze Konfiguration befindet sich in <em>\/etc\/logcheck<\/em>. In der Datei <em>logcheck.conf<\/em> wird das allgemeine Verhalten festgelegt. In <em>logcheck.logfiles<\/em> definiert man hingegen die zu \u00fcberwachenden Logdateien. F\u00fcr einen Server sollte<\/p>\n<blockquote><p>REPORTLEVEL=\"server\"<\/p><\/blockquote>\n<p>eingestellt sein. F\u00fcr einen reinen Desktop-PC gen\u00fcgt hingegen \"workstation\" und f\u00fcr sicherheitskritische Systeme kann es auch \"paranoid\" sein.<br \/>\nLogcheck funktioniert nach einem simplen Prinzip. Je nach REPORTLEVEL werden die Regeln in <em>\/etc\/logcheck\/cracking.d\/<\/em> und <em>\/etc\/logcheck\/violations.d\/<\/em> abgearbeitet und auf die vorher definierten Logdateien angewendet. Treffen die dort formulierten Bedingungen zu wird entweder ein ATTACK- oder SECURITY-Alarm ausgel\u00f6st. In den entsprechenden Ignore-Ordnern f\u00fcr Paranoid, Server und Workstation befinden sich hingegen Regeln als <a href=\"http:\/\/de.wikipedia.org\/wiki\/Regul%C3%A4rer_Ausdruck\">Regul\u00e4re Ausdr\u00fccke<\/a>, die \"normale\" Eintr\u00e4ge herausfiltern.<br \/>\nAlles was weder unter ATTACK noch SECURITY f\u00e4llt ist dann ein sogenanntes SYSTEM-Ereignis, was z.B. auch der Download einer Datei vom FTP-Server sein kann.<br \/>\nVoreingestellt werden <em>\/var\/log\/syslog<\/em> und <em>\/var\/log\/auth.log<\/em> \u00fcberwacht. Um z.B. die Logdateien des vsftpd-Servers zu \u00fcberpr\u00fcfen, tr\u00e4gt man in <em>\/etc\/logcheck\/logcheck.logfiles<\/em> den Pfad zur Logdatei<\/p>\n<blockquote><p>\/var\/log\/vsftpd.log<\/p><\/blockquote>\n<p>ein. Schon nach kurzer Zeit erh\u00e4lt man Meldungen wie<\/p>\n<blockquote><p>Sun May 27 22:06:24 2012 [pid 2] CONNECT: Client \"123.123.123.123\"<\/p><\/blockquote>\n<p>Danach findet jedoch kein Download statt, dennoch wird eine E-Mail-Benachrichtigung verschickt. Diese Art von Meldungen lassen sich in <em>\/etc\/logcheck\/ignore.d.server\/vsftpd<\/em> als Regul\u00e4rer Ausdruck definieren. Daraufhin wird das Vorkommnis w\u00e4hrend der st\u00fcndlichen Auswertung ignoriert.<br \/>\n<strong>Regel<\/strong><\/p>\n<pre>^w{3} w{3} [ :[:digit:]]{11} [ :0-9]{4} [pid [0-9]+] CONNECT: Client \"[0-9]+.[0-9]+.[0-9]+.[0-9]+\"$<\/pre>\n<p>Dieser Regul\u00e4re Ausdruck nach dem POSIX-Standard passt genau auf die Zeile der Logdatei. Da ich ihn selbst geschrieben habe, verstehe ich zwar was damit gemeint ist. Wenn man hingegen vor fremden Regul\u00e4ren Ausdr\u00fccken steht, muss man sich oft erst einmal in die Materie einarbeiten und einige Knoten l\u00f6sen.<br \/>\nMir hat definitiv die schon vorhandene Konfiguration bei Logcheck geholfen. Weiterhin kann ich auch den englischen Wikipedia-Artikel zum Thema <a href=\"http:\/\/en.wikipedia.org\/wiki\/Regular_expression\">Regular Expressions<\/a> empfehlen. Ferner gibt es unter dem Suchbegriff \"regexp tester\" zahllose Seiten, die in Javascript, Flash oder Java eine Plattform anbieten um eigene Ausdr\u00fccke zu testen. Keine davon hat mich aber auf den ersten Blick vollkommen begeistert.<br \/>\nIch denke am einfachsten ist es, man schreibt den Regul\u00e4ren Ausdruck in eine Datei und testet ihn mit <code>egrep -f<\/code>, z.B.<\/p>\n<p><code>egrep -f meine_regeln \/var\/log\/vsftpd.log<\/code><\/p>\n<p><code><\/code><br \/>\nWird im Terminal eine Ausgabe angezeigt stimmt alles. Oft fange ich dabei erst einmal grob an, indem ich Sonderzeichen wie Punkte oder eckige Klammern escape und danach dann Wort f\u00fcr Wort und Zahl f\u00fcr Zahl alles ersetze. Ziel ist es die unerw\u00fcnschten Zeilen so genau wie m\u00f6glich mit Regul\u00e4ren Ausdr\u00fccken einzugrenzen.<br \/>\nLogcheck erfordert etwas Einarbeitungszeit, damit es sehr gut funktioniert. Gibt es nichts zu melden oder funktionieren die Ignore-Regeln bleibt Logcheck leise und meldet sich nur noch, wenn es wirklich was zu sagen gibt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Letzte Woche hatte ich Logwatch vorgestellt, dass bei mir auf dem Server seinen Dienst als Beobachter von Logdateien verrichtet. Wie so oft bei Linux gibt es nat\u00fcrlich eine Reihe von Alternativen. Darunter habe ich mir sp\u00e4ter Logcheck genauer angeschaut. Der gr\u00f6\u00dfte Unterschied nach der Installation ist das Benachrichtigungsintervall, das standardm\u00e4\u00dfig eine Stunde betr\u00e4gt. Die ganze &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gambaru.de\/blog\/2012\/05\/29\/logcheck-uberwachung-von-logdateien-mit-regularen-ausdrucken\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eLogcheck: \u00dcberwachung von Logdateien mit Regul\u00e4ren Ausdr\u00fccken\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[53,108,111,218],"_links":{"self":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7800"}],"collection":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/comments?post=7800"}],"version-history":[{"count":2,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7800\/revisions"}],"predecessor-version":[{"id":10682,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/posts\/7800\/revisions\/10682"}],"wp:attachment":[{"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/media?parent=7800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/categories?post=7800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gambaru.de\/blog\/wp-json\/wp\/v2\/tags?post=7800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}