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 . 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.
Zunächst läd man sich die aktuelle Netinstall-ISO herunter: https://www.debian.org/distrib/
Die VM wird in Hyper-V mit folgenden Parametern erstellt:
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
Im Anschluss erledigt man die Netzwerkkonfiguration, im einfachsten Fall über den DHCP-Server
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
Im Anschluss testet man die Installation mit:
Wenn hier keine Fehlermeldung kommt, läuft alles.
Im Anschluss wird das mysql-Modul dür rsyslog installiert:
Hier wird auch das Zugriffspassword für den Benutzer "rsyslog" festgelegt. Bitte merken für später! Ich habe hier mal GEHEIM2 benutzt.
Hier ist nicht viel zu sagen.
Daher muss es manuell geladen werden. Zunächst identifiziert man den aktuellen Downloadlink unter https://loganalyzer.adiscon.com/download/
Im Anschluss wird die Datei heruntergeladen, entpackt und in das Webserververzeichnis kopiert:
Die weiteren Schritte erfolgen mittels Webinterface. Falls man (wegen meiner DHCP-IP-Lösung oben ) die IP Adresse nicht parat hat, kann man sie sich anzeigen lassen:
Das Webinterface ruft man mittels http://ip/loganalyzer/ auf. Kritisch sind hier die Schritte 3 und 7:
Am Schluss landet man auf der aktiven Monitoring-Seite von loganalyzer.
Die Konfiguration des SQL-Servers kann man wie folgt überprüfen:
Die Datenbank heißt also Syslog, die Datenbanktabelle SystemEvents. Achtung Gross-und Kleinschreibung beachten!
Damit alle SNMP-Traps der SNMP-Communityt public im syslog landen muss dies mittels authCommunity log public angegeben werden.
Im Anschluss wird snmptrapd neu gestarted:
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!
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.
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:
So. Das sollte dann laufen. Ich hoffe, es hilft jemandem.
Grüße
lcer
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 . 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.
Inhaltsverzeichnis
Installation 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
- DHCP-Lease in DHCP-Reservierung konvertieren
- ggf. statischen DNS-Eintrag erstellen
Paketinstallation
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
Installation des MYSQL-Servers
apt-get install mysql-server
mysql -u root -p
Im Anschluss wird das mysql-Modul dür rsyslog installiert:
apt-get install rsyslog-mysql
Installation des Webservers
apt-get install apache2 php php-mysql
Installation 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/loganalyzerDaher 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 ) 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
- Step 7 - Syslog Datanbank angeben
Am Schluss landet man auf der aktiven Monitoring-Seite von loganalyzer.
Wenn 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 |
+------------------------+
Installation von snmptrap
apt-get install snmp snmptrapd
Konfiguration von snmptrap
Die Konfigurationsdatei ist /etc/snmp/snmptrapd.confDamit 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
service snmptrapd restart
Konfiguration 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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 387586
Url: https://administrator.de/contentid/387586
Ausgedruckt am: 19.11.2024 um 11:11 Uhr
1 Kommentar