lcer00
Goto Top

Installation eines Logservers mit Loganalyzer als Debian-VM auf Hyper-V

Zuerst sei auf den schönen Beitrag von @aqui hier im Forum verwiesen, in dem die loganalyzer-installation bereits beschrieben ist: Netzwerk Management Server mit Raspberry Pi

Mein Ziel war es, einen Debian-Server als VM unter einem Windows 2012R2 Server mittels Hyper-V laufen zu lassen. Das Setup unterschiedet sich etwas vom Raspi face-smile. der Logserver solle Syslog-Nachrichten und SNMP-Traps aus dem Netzwerk entgegennehmen. Diese sollen über ein Webinterface verfolgt werden können.

Die folgende Anleitung ist das Ergebnis von 2 Tagen dauergoogeln. Zum Thema gibt es unzählige zum Teil sehr ausführliche Webseiten. Der Teufel steckt aber im Detail. Durch die verschiedenen Distributionen bzw. Versionen von Debian und rsyslog sind ältere Anleitungen nicht immer zutreffend und manchmal auch unnütz umständlich. Daher meine Motivation, noch eine Anleitung zu schreiben. Ich hoffe ich habe keine wesentlichen Punkte vergessen. Die enthaltenen Befehlsfolgen, Links und Codeausschnitte sind hoffentlich fehlerfrei angekommen.

Die Grundlagen zur Verwendung von Hyper-V und zur Installation eines Debian ohne graphische Oberfläche lasse ich hier aus. Die Installationsanweisungen verzichten hier auf sudo und erfolgen über den root Benutzer. Wer mag, kann das gerne ändern. Ebenso habe ich keine weiteren Maßnahen zum absichern des Systems gemacht. Eine Firewall sollte mindestens hinzugefügt werden. Interessante Links zum Thema habe ich im jeweiligen Abschnitt direkt angegeben.


back-to-topInstallation der VM


Zunächst läd man sich die aktuelle Netinstall-ISO herunter: https://www.debian.org/distrib/

debian-9.5.0-amd64-netinst.iso

Die VM wird in Hyper-V mit folgenden Parametern erstellt:
  • Generation 1
  • Festplattentyp VHDX mit 32GB

Im Anschluss habe ich den Arbeitspeicher zunächst auf 2048MB festgelegt (nicht dynamisch).

Zunächst sollte man die Debian-Installation an die virtuelle Umgebung anpassen:

Dazu wird das Paket hyperv-daemons installiert.

https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/s ...
https://docs.microsoft.com/de-de/windows-server/virtualization/hyper-v/B ...
https://msdn.microsoft.com/de-de/library/dn798297(v=ws.11).aspx

apt-get install hyperv-daemons

Im Anschluss erledigt man die Netzwerkkonfiguration, im einfachsten Fall über den DHCP-Server face-smile
  • DHCP-Lease in DHCP-Reservierung konvertieren
  • ggf. statischen DNS-Eintrag erstellen
... das geht aber besser!

back-to-topPaketinstallation

Die Grundlage des Logservers sind folgende Pakete:
  • rsyslog (bereits im Debian enthalten) als Syslog
  • snmptrapd zum Entgegennehmen der SNMP-Traps
  • mysql-server als Datenbank zum Speichern der Syslog-Einträge und zur Benutzerverwaltung des Webinterfaces
  • apache2 als webserver
  • loganalyzer als Webinterface

ein paar Links zum Thema
http://lab4.org/wiki/Rsyslog_mit_MySQL_als_zentraler_Logserver
https://tecadmin.net/setup-rsyslog-with-mysql-and-loganalyzer/
https://tecadmin.net/setup-loganalyzer-with-rsyslog-and-mysql/
https://loganalyzer.adiscon.com/doc/install.html

back-to-topInstallation des MYSQL-Servers

apt-get install mysql-server
Im Anschluss testet man die Installation mit:
mysql -u root -p
Wenn hier keine Fehlermeldung kommt, läuft alles.

Im Anschluss wird das mysql-Modul dür rsyslog installiert:
apt-get install rsyslog-mysql
Hier wird auch das Zugriffspassword für den Benutzer "rsyslog" festgelegt. Bitte merken für später! Ich habe hier mal GEHEIM2 benutzt.

back-to-topInstallation des Webservers

apt-get install apache2 php php-mysql
Hier ist nicht viel zu sagen.

back-to-topInstallation von Loganalyzer

Leider ist das Debian-Paket loganalyzer ist für Debian 9 Stable (Stretch) (noch?) nicht verfügbar. Für andere Distributionen wäre es direkt über apt-get installierbar. siehe https://packages.debian.org/jessie/loganalyzer

Daher muss es manuell geladen werden. Zunächst identifiziert man den aktuellen Downloadlink unter https://loganalyzer.adiscon.com/download/

http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz

Im Anschluss wird die Datei heruntergeladen, entpackt und in das Webserververzeichnis kopiert:
cd /usr/src
wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz
tar xzf loganalyzer-4.1.6.tar.gz
cp -r loganalyzer-4.1.6/src/ /var/www/html/loganalyzer
chown -R www-data:www-data /var/www/html/loganalyzer

Die weiteren Schritte erfolgen mittels Webinterface. Falls man (wegen meiner DHCP-IP-Lösung oben face-smile) die IP Adresse nicht parat hat, kann man sie sich anzeigen lassen:
ip address

Das Webinterface ruft man mittels http://ip/loganalyzer/ auf. Kritisch sind hier die Schritte 3 und 7:

  • Step 3 - Benutzerdatenbank in mysql neu erstellen
Hier ist das Psaswort aus dem Schritt (apt-get install rsyslog-mysql - siehe oben) anzugeben!
loganalyzer-step3

  • Step 7 - Syslog Datanbank angeben
Hier darf nicht direkt auf das syslog (Einstellung Diskfile / Syslog) verwiesen werden. Der Zugriff durch den Webserver-Benutzer (www-data) auf /var/log/syslog wird fehlschlagen! Stattdessen stellt man folgendes ein:
loganalyzer-step7

Am Schluss landet man auf der aktiven Monitoring-Seite von loganalyzer.

back-to-topWenn hier was schiefgeht
Man kann die gerade erstellte Konfiguration einfach löschen und nochmal von vorne anfangen:
rm /var/www/html/loganalyzer/config.php

Die Konfiguration des SQL-Servers kann man wie folgt überprüfen:
mysql -u root -p
show databases;

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| Syslog             |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
MariaDB [(none)]> use Syslog;
MariaDB [Syslog]> show tables;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
| logcon_charts          |
| logcon_config          |
| logcon_dbmappings      |
| logcon_fields          |
| logcon_groupmembers    |
| logcon_groups          |
| logcon_savedreports    |
| logcon_searches        |
| logcon_sources         |
| logcon_users           |
| logcon_views           |
+------------------------+
Die Datenbank heißt also Syslog, die Datenbanktabelle SystemEvents. Achtung Gross-und Kleinschreibung beachten!

back-to-topInstallation von snmptrap

apt-get install snmp snmptrapd

back-to-topKonfiguration von snmptrap

Die Konfigurationsdatei ist /etc/snmp/snmptrapd.conf
Damit alle SNMP-Traps der SNMP-Communityt public im syslog landen muss dies mittels authCommunity log public angegeben werden.
#
# EXAMPLE-trap.conf:
#   An example configuration file for configuring the Net-SNMP snmptrapd agent.
#
###############################################################################
#
# This file is intended to only be an example.
# When the snmptrapd agent starts up, this is where it will look for it.
#
# All lines beginning with a '#' are comments and are intended for you  
# to read.  All other lines are configuration commands for the agent.

#
# PLEASE: read the snmptrapd.conf(5) manual page as well!
#
#authCommunity log,execute,net private 
authCommunity log public
#
## send mail when get any events
#traphandle default /usr/bin/traptoemail -s smtp.example.org foobar@example.org
#
## send mail when get linkDown
#traphandle .1.3.6.1.6.3.1.1.5.3 /usr/bin/traptoemail -s smtp.example.org foobar@example.org
Im Anschluss wird snmptrapd neu gestarted:
service snmptrapd restart

back-to-topKonfiguration von rsyslog

Hier sind etwas größere Umbauten nötig, damit die Sache übersichtlich bleibt und wir gewünscht funktioniert. Rsyslog verwendet verschiedene Schreibweisen für die Konfiguration. https://www.rsyslog.com/doc/v8-stable/configuration/conf_formats.html#wh ... Benötigt wird das advanced format .

Bei der Installation von rsyslog-mysql wurde die Datei /etc/rsyslog.d/mysql.conf erzeugt. Hier müssen die Zeilen auskommentiert werden. Alternativ kann man die Datei auch löschen!
### Configuration file for rsyslog-mysql
### Changes are preserved

# $ModLoad ommysql
# *.* :ommysql:localhost,Syslog,rsyslog,GEHEIM2
Der Ladebefehl für das Modul und die Aktion werden dann in der eigentlichen rsyslog-Konfigurations eingefügt, aber etwas abweichend!

Wichtig ist hier die Reiehenfolge der Einträge. siehe: https://www.rsyslog.com/doc/v8-stable/concepts/multi_ruleset.html
Zuerst werden alle Module geladen. Dann werden die Rulesets definiert. Erst danach werden die Rulesets an die Eingabemodule (imudp und imtcp) mittels input(type= gebunden! Die Regeln für die lokalen Syslogereignisse folgen ganz unten.


#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging  
module(load="imklog")   # provides kernel logging support  
#module(load="immark")  # provides --MARK-- message capability  

module(load="ommysql")  
module(load="imudp")  
module(load="imtcp")  

ruleset(name="nonlocal"){  
        # Bintec Filter - überflüssige Meldungen werden verworfen
        :msg, startswith, " DHC6: Updating IPv6-prefix" stop  
        :msg, startswith, " DHC6: Adding virtual IPv6-prefix" stop  
        :msg, startswith, " DHC6: Removing virtual IPv6-prefix" stop  
        :msg, startswith, " NAT: denied incoming session on ifc 30010001" stop  
        :msg, startswith, " NDISC: <Telekom>: Got Router Advertisement with prefix" stop  
        # MYSQL-logging
        action(type="ommysql" server="127.0.0.1" db="Syslog" UID="rsyslog" PWD="GEHEIM2")  
}

input(type="imudp" port="514" ruleset="nonlocal")  
input(type="imtcp" port="514" ruleset="nonlocal")  



###########################
#### GLOBAL DIRECTIVES ####
###########################


#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############


# snmptrapd-Augaben immer an mysql senden
:syslogtag, contains, "snmptrapd" :ommysql:127.0.0.1,Syslog,rsyslog,GEHEIM2  
:msg, contains, "NET-SNMP" :ommysql:127.0.0.1,Syslog,rsyslog,GEHEIM2  

# Lokale Ereignisse erst ab *.warn in die mysql-Datenbank schreiben.
*.warn :ommysql:127.0.0.1,Syslog,rsyslog,GEHEIM2

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#

mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err

#
# Some "catch-all" log files.  
#
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                         :omusrmsg:*

Ich habe die Filter zum Verwerfen nicht relevanter Meldungen meines Bintec-Routers in der rsyslog.conf als Beispiel drin gelassen. Das kann man anpassen. Bitte insbesondere die Leerzeichen beim startwith filter beachten. Zur Not ist es besser contains anstelle von startwith zu verwenden.

Die Konfiguration trennt das systemeigene Syslog vom mysql-Syslog. Auch das kann man anders lösen. Die Verwendung der Rulesets macht sinn, da dann nicht alle lokalen Syslogmeldungen durch die Filter müssen, und das ganze etwas performanter wird.

Zum Schluss muss noch rsyslog neu gestartet werden:
service rsyslog restart

So. Das sollte dann laufen. Ich hoffe, es hilft jemandem.

Grüße

lcer

Content-Key: 387586

Url: https://administrator.de/contentid/387586

Ausgedruckt am: 19.03.2024 um 05:03 Uhr

Mitglied: Mailwasher
Mailwasher 09.08.2019 um 15:41:47 Uhr
Goto Top
Weiß einer, wie ich in das Log noch das Kern.log dazu bekomme? Also dass es mir auch so auf der Website angezeigt wird.
über eine Antwort wäre ich sehr Dankbar.