====== Systemprotokolle (Logdateien) in Linux (Syslog)====== [[linux:Linux]] und andere Unix-basierte Systeme glänzen durch ausführliche und anpassbare Systemprotokolle. Zur Fehlerdiagnose sind diese Logs meist die erste Anlaufstelle. Diese Seite basiert auf dem Standard syslog (daemons: syslogd, klogd), es existiert ein verbesserter Nachfolger unter dem Namen [[software:syslog-ng]]. Bei modernen Distributionen wird das logging von [[software:systemd]] übernommen und diese Seite ist daher nicht anwendbar. ===== Links ===== * [[software:syslog-ng]] * [[software:rsyslog]] [[http://linuxhelp.blogspot.com/2005/09/system-logging-explained-in-linux.html|System Logging explained in Linux]] ===== vorhandene Systemprotokolle im /var/log ===== Im Verzeichnis /var/log befinden sich die wichtigen Systemprotokolle. ^ Dateiname in /var/log ^ Bedeutung / Quelle ^ | aptitude | | | auth.log | | |boot | | |bootstrap.log | | |btmp | | |daemon.log | | |debug | | |dmesg | | |dpkg.log | | |faillog | | |fsck | | |kern.log | Meldungen des Kernels | |lastlog | | |lpr.log | | |mail.err | | |mail.info | | |mail.log | | |mail.warn | | |messages | | |news | | |syslog | Meldungen der Prioritäten warning und error| |user.log | | |uucp.log | | |vsftpd.log | | |wtmp | | Bei Systemen die nicht gerade erst neuinstalliert wurden, finden sich auch Dateien wie ''syslog.0'' und ''syslog.1.gz'' . Ältere Protokolle werden nach einger gewissen Zeit "rotiert", also zuerst umbenannt (''syslog.0'') und später gepackt (archiviert. Einige Programme ([[apache:Apache]], ...) legen auch Unterverzeichnisse an. ===== Grundlagen ===== ==== Prioritäten ==== Die Prioritäten sind nach nach ansteigender Wichtigkeit geordnet. ^ Priorität ^ Bedeutung ^ |debug |Debugging Informationen zu laufenden Prozessen | |info |Normale Informationsmeldungen von Programmen | |notice |Standardmeldungen, aber wichtiger als nur Informationscharakter | |warn |Standardwarungen (das System oder die Ressource konnte z. B. die Aufgabe nicht ausführen) | |err |Meldungen bestehen aus Fehlerzuständen | |crit |Fatale Fehler | |alert |bezeichnet einen ernstzunehmenden Fehler, die sofortige Aufmerksamkeit verlangen | |emerg |Notfall, kurz vor einer Kernel-panic (z.B. bei Treiberabsturz) und/oder System nicht länger verfügbar | :!: Die Aliase "error", "panic", und "warning" sind veraltet. ==== Facility ==== Eine "Facility" ist eine Einrichtung die einem eigenen Subsystem (Untersystem) entspricht. Es gibt 13 vordefinierte Subsysteme: ''auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user'' und ''uucp''. Zusätzlich kann man noch ''local0'' bis ''local7'' für eigene Programme definieren (wie unten im Beispiel). ^ Facility ^ Bedeutung ^ |auth| eine Sicherheitsfunktion, die Benutzerauthentifizierung in verschiedenen Diensten wie ftp, login usw verfolg. (Im Wesentlichen verfolgt die auth-Funktion jede Benutzeraktion, die in denen Benutzernamen und ein Passwort verlangt wird, um sich einzuloggen oder die Ressourcen des Zielrechners zu benutzen.) | |authpriv | eine Sicherheitsfunktion, die Sicherheits-/Autorisierungmeldungen verfolgt | |daemon |verfolgt Systemdämon Meldungen | |user | verschiedene user-level Meldungen | |kern | verfolgt Kernel Meldungen | |ftp | verfolgt Meldungen vom ftp-System | |cron | verfolgt Meldungen vom cron-System. | |lpr | verfolgt Meldungen des Druckersystems | |mark | Sollte man nicht benutzen, zu internen zwecken (Meldung wenn nichts passiert ist) | |mail | verfolgt Meldungen des Mail-Systems | |news | verfolgt Meldungen des News Systems | |security |dasselbe wie auth | |syslog | für von Syslog generierte Nachrichten | |uucp | verfolgt Meldungen des UUCP Systems | ==== eigenes Log-file ==== Standardmäßig wird ins syslog (''/var/log/syslog'') protokolliert, man kann aber eigene Log-Dateien für z.B. für den DHCP-Server anlegen lassen. Dazu muss man grundsätzlich - den Daemon (Dienst) auf eine Facility konfigurieren (das muss er natürlich unterstützen!) - syslogd konfigurieren - und beide Daemons neustarten. Am Beispiel des DHCP-Servers "[[netzwerke:dhcp#konfiguration_von_dhcp3-server_unter_linux|DHCP3]]" konfigurieren wir nun unter [[linux:Linux]] unser eigenes Logfile. Zuerst muss die Zeile log-facility local7; in der Konfigurationsdatei (''/etc/dhcp3/dhcpd.conf'') eingetragen werden. Für diese „facility“ mit dem Schlüsselwort local7 muss man in der Datei ''/etc/syslog.conf'' einen Eintrag anlegen. local7.* /var/log/dhcpd.log Der Stern sorgt dafür, dass Nachrichten mit allen Prioritäten im Log-file gesichert werden. Danach sollte man die Log-Datei mit touch /var/log/dhcpd.log anlegen lassen. Letztendlich muss man den syslog- und DHCP3-Daemon zur Übernahme der Änderungen in der angegebenen Reihefolge neustarten: - sudo /etc/init.d/sysklogd restart - sudo /etc/init.d/dhcp3-server restart Die erste Ausgaben in der Log-Datei bezeugen die erfolgreiche Funktion. Siehe ''man syslog.conf'' für weitere Informationen. Die Konfiguration von [[software:syslog-ng#Konfiguration]] sieht natürlich anders aus. ===== LogHost ===== Als LogHost wird ein spezieller Server bezeichnet, der für andere Rechner die Logdateien führt. Dies kann bei Festplattenlosen Thin-clients oder generell zur Erhöhung der Sicherheit sinnvoll sein. Eine einzige Zeile in ''/etc/syslog.conf'' reicht: *.* @remote_host Wenn man ganz clever sein will, kann man den remote_host als Dummy aufsetzen und den Verkehr auf dem Weg abhören. Aus Sicherheitsgründen sollte dann aber [[software:syslog-ng]] benutzt werden. Dieser kommuniziert über TCP und kann mit Zertifikaten umgehen. Der originale syslog-daemon schickt die Log-einträge per UDP und der Log-host kann auch nicht die Herkunft verifizieren. ==== Links ==== * [[http://linuxhelp.blogspot.com/2005/09/enabling-centralized-logging-in-linux.html|Enabling centralized logging in Linux]] * [[http://www.oreilly.de/catalog/netsechacksger/chapter/hack59.html|Loghost]] ===== logger ===== Mit dem Programm logger kann man syslog oder [[software:syslog-ng]] Nachrichten übergeben. logger TEXT Zusätzlich kann man mit * **Kategorie und Priorität** (z.B. user und notice) logger -p user.notice TEXT * und den **"Tag"** (für einen Dienst) angeben: logger -p user.notice -t TAG TEXT