Ereignisprotokollierung mit Syslogd und Klogd unter Linux

Die Verwaltungsaufgaben in Linux sind in vielen Situationen aufgrund der Menge an Prozessen, Diensten und Rollen, die jede Sekunde ausgeführt werden, komplex. Dazu müssen wir Anmeldungen, die Installation von Anwendungen und nicht zu vergessen alle Ereignisse hinzufügen, die jede Anwendung in der verwalteten Verteilung registriert . Zum Glück für Administratoren und Kontroll- oder Revisionspersonal haben wir verschiedene Befehle entwickelt, um die Verwaltung und Kontrolle von Systemereignissen zu erleichtern, und daher konzentriert sich Solvetic auf zwei der wichtigsten Befehle für diesen Zweck. Syslog und Klogd.

Das Log ist wie ein Log, in dem Ereignisse, Fehler, Änderungen und Prozesse, die von Anwendungen oder dem Betriebssystem generiert werden, aufgezeichnet werden, um später diesen Datensatz lesen und feststellen zu können, welche Ereignisse aufgetreten sind, insbesondere bei Fehlern oder Schwachstellen. Die Log-Dateien auf einem Linux-System befinden sich im Verzeichnis /var/log.Das Linux-Log-System wird von zwei Daemons verwaltet:

SYSLOGDErzeugt die Systemprotokolle. Syslogd wird automatisch ausgeführt, wenn Sie ein Linux-System starten, und ist für das Speichern von Berichten über den Betrieb des Computers verantwortlich. Es empfängt Nachrichten von den verschiedenen Teilen des Systems, des Kernels und der Anwendungen, speichert sie an verschiedenen Orten, sowohl lokal als auch entfernt, nach Kriterien, die in der Konfigurationsdatei /etc/syslog.conf definiert sind.

KLOGDGenerieren Sie die Kernel-Logs. klogd leitet Kernel-Log-Meldungen an das System-Log weiter. Der Benutzer kann die Behandlung von Kernel-Nachrichten steuern, indem er die syslogd-Konfigurationsdatei bearbeitet. Diese klogd-Anwendungen sind besonders nützlich für Kernel-Entwickler.

1. Was ist und wie verwendet man Syslogd in Linux-Logs?


Mal sehen, was es ist und wie man Syslogd verwendet

Was ist Syslogd?Syslogd (Linux System Logging Utilities), ist ein Befehl, der uns eine Art von Protokoll gibt, das von vielen modernen Programmen verwendet wird. Dank Syslogd enthält jede protokollierte Nachricht mindestens eine Uhrzeit und ein Feld mit dem Hostnamen, was die Überwachungsaufgaben viel einfacher macht und einfacher zu analysieren.

Der Befehl Syslogd hat ein Standard-BSD-Verhalten und die neuen Versionen von Syslogd interagieren transparent mit der Version von Syslog, die in den Standardbibliotheken verfügbar ist binär.

Schritt 1
Die Hauptkonfigurationsdatei ist /etc/syslog.conf, und das Protokoll wird normalerweise mit Regeleinträgen angegeben. In jeder Zeile werden der Selektor (facility.priority) und die Aktion angegeben. Beachten Sie, dass bei modernen Linux-Distributionen der Syslogd-Befehl durch neue Syslog-Implementierungen wie rsyslog oder syslog-ng ersetzt wurde. Wenn wir also Syslogd verwenden möchten, können wir es mit dem folgenden Befehl installieren:

 apt install inetutils-syslogd 

VERGRÖSSERN

Schritt 2
Dort müssen wir den Buchstaben S eingeben, um den Download und die Installation von Syslogd zu bestätigen. Nach der Installation können wir zu seiner Konfigurationsdatei gehen, die sich im folgenden Pfad befindet /etc/syslog.conf:

 nano /etc/syslog.conf 

VERGRÖSSERN

Schritt 3
Dort finden wir alle Routen, die Syslogd verwendet, um die Informationen zu erfassen. Die allgemeine Syntax für Syslogd lautet wie folgt:

 syslogd [-a Socket] [-d] [-f Konfigurationsdatei] [-h] [-l Hostliste] [-m Intervall] [-n] [-p Socket] [-r] [-s Listendomäne] [-S] [-v] [-x] 
Schritt 4
Unter den verfügbaren Optionen haben wir:

Zusätzliche Steckdosen angebenDieses Argument ermöglicht es uns, die zusätzlichen Sockets anzugeben, auf die Syslogd hören soll, es wird verwendet, falls ein Daemon in einer chroot()-Umgebung ausgeführt wird. Es können bis zu 19 zusätzliche Steckdosen genutzt werden.

 -eine Steckdose 

Debug-Modus aktivierendieses Argument aktiviert den Debug-Modus, der Syslog im Vordergrund hält und somit viele Debug-Informationen in das aktuelle tty schreibt.

 -D

KonfigurationsdateiDieses Argument gibt eine alternative Konfigurationsdatei anstelle der Standarddatei /etc/syslog.conf an.

 -f Konfigurationsdatei 

Weiterleitung von Nachrichten aus der Ferne blockierenDieser Parameter verhindert, dass Syslogd Nachrichten weiterleitet, die es von entfernten Hosts empfängt.

 -h

Netzwerknamen definierenDank dieses Parameters kann ein Hostname angegeben werden, der nur mit seinem einfachen Hostnamen und nicht mit dem FQDN registriert werden muss.

 -l hostlist (Liste der Hosts) 

Zeitintervall definierenDurch Verwendung dieses Parameters können wir das zu verwendende Zeitintervall angeben, standardmäßig beträgt der Wert 20 Minuten.

 -m Intervall 

Vermeiden Sie die Ausführung von SyslodgDieser Parameter verhindert, dass Syslogd im Hintergrund ausgeführt wird.

 -n

Domain-Socket setzenEs erlaubt uns, einen alternativen Unix-Domain-Socket anstelle von /dev/log anzugeben

 -p Buchse

Netzwerknachrichten zulassenMit dieser Option kann die Installation Nachrichten vom Netzwerk über einen Internetdomänen-Socket mit dem Syslog-Dienst empfangen.

 -R

Domainnamen definierenDieser Parameter gibt einen Domänennamen an, der vor der Anmeldung entfernt werden muss.

 -s Domainliste 

Registrierung aktivierenAusführliche Protokollierung aktivieren,

 -S

Aktuelle Version aktivierenSehen Sie sich die aktuelle Version von Syslogd an.

 -v 

VERGRÖSSERN

Schritt 5
Beim Ausführen einer der verfügbaren Optionen können wir alle Aufgaben sehen, die intern ausgeführt werden:

VERGRÖSSERN

2. Signale in Syslogd Linux-Logs

Schritt 1
Syslogd kann auf eine Reihe von Signalen reagieren. Eine Option, um ein Signal an Syslogd zu senden, besteht darin, Folgendes auszuführen:

 kill -SIGNAL 'cat /var/run/syslogd.pid' 
Schritt 2
Wenn dieses Signal ausgeführt wird, werden verschiedene Komponenten wie z. Somit ist Syslogd eine praktische Lösung, um Linux-Ereignisse zu analysieren.

SEUFZENDMit dieser Option kann Syslogd einen Neustartprozess durchführen, bei dem alle geöffneten Dateien geschlossen, die Konfigurationsdatei erneut gelesen und die Syslog-Installation erneut gestartet wird.

SIGTERMDer Dienst läuft ab.

SIGINT, SIGQUITWenn Debugging aktiviert ist, werden diese ignoriert, ansonsten läuft Syslogd ab.

SIGUSR1Aktivieren oder deaktivieren Sie das Debuggen.

SIGCHLDWarten Sie auf die neuen Nachrichten.

3. Konfigurieren Sie die Linux-syslogd-Datei


Syslogd verwendet in seiner Konfigurationsdatei eine etwas andere Syntax als die traditionelle ursprüngliche BSD-Quelldatei. Die syslogd-Konfiguration erfolgt über die Datei /etc/syslogd.conf. Durch diese Datei wird angegeben, wohin die verschiedenen Nachrichten geroutet werden sollen. Sie können Zeilen leer lassen oder ganze Zeilen mit dem Zeichen "#" kommentieren

Damit Syslog Remote-Verbindungen akzeptiert, müssen wir den Parameter -r . hinzufügen

 SYSLOGD_OPTIONS = "-r -m 0" 
Normalerweise belegt syslogd Port 514. Wir müssen überprüfen, ob die Firewall ihn nicht blockiert, um zu testen, auf welchem ​​​​Port es läuft. Vom Terminal aus schreiben wir den folgenden Code
 grep syslog / etc / services 
In den Dienstprotokollen in dieser Zeile können wir sehen, dass die Protokolle "mail, cron, info" in das Nachrichtenverzeichnis gehen
 * .info; mail.none; authpriv.none; cron.none / var / log / Nachrichten 
Wir werden versuchen, mit dem folgenden Befehl eine Nachricht an alle Protokolle zu senden
 grep "Testnachricht" / var / log / * 
In diesem Fall können wir sehen, dass mehrere Protokolle mit verweigerten Berechtigungen sind und daher nicht geschrieben werden können.

Es wäre zu ermitteln, ob eine Änderung der Genehmigungen nach unseren Bedürfnissen erforderlich ist oder nicht. Die Protokolle haben mehrere Prioritätsstufen der Nachrichten (von der niedrigsten bis zur höchsten Priorität:

Fehler-, Fehler- und Warnprotokolle

 Debug, Info, Hinweis, Warnung, Warnung, Fehler, Fehler, Crit, Alert, Emerg und Panic 

Protokolle des NachrichtentypsProtokolle verschiedener Nachrichtentypen

 auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, sicherheit, syslog, user, uucp 
Die wichtigsten sind
  • var / log / Messages: Hier finden wir die Logs, die mit Prioritätsinfo (Information), Hinweis (Benachrichtigung) oder Warnung (Warnung) eintreffen.
  • /var/log/kern.log: Hier werden die von klogd generierten Kernel-Logs gespeichert.
  • /var/log/auth.log: Dieses Protokoll zeichnet die Anmeldungen im System auf, die Zeiten, zu denen wir su machen usw. Fehlversuche werden in Zeilen mit Informationen über den ungültigen Schlüsseltyp oder die ungültige Anmeldung aufgezeichnet.
  • /var/log/dmesg: die vom Kernel beim Systemstart erzeugten Informationen werden in dieser Datei gespeichert.

Diese Protokolldateien sammeln ständig Informationen an, sodass sie irgendwann viel Platz beanspruchen können. Um dieses Problem zu lösen, können wir sie komprimieren oder sichern, wenn dies wirklich erforderlich ist. Einige Änderungen, die Sie beachten sollten, sind:

Verwendung von WildcardsEs wird je nach Verwendung (ob vor oder nach dem Trennzeichen `. ') als Platzhalter für alle oben genannten Prioritäten und Dienste verwendet.

 "*" (Sternchen) = 

Priorität nicht markierenZeigt an, dass es keine definierte Priorität für den Dienst der ausgewählten Leitung gibt.

 "": (Leerzeichen, Leerzeichen, Null) 

Wählen Sie verschiedene DiensteErmöglicht Ihnen, mehrere Dienste mit derselben Prioritätsstufe auf derselben Leitung anzugeben.

 "," (Essen) 

Steuern Sie verschiedene NachrichtenErmöglicht das Weiterleiten von Nachrichten von verschiedenen Diensten und Prioritäten an denselben Empfänger.

 ";" (Semikolon) 

Wählen Sie die NachrichtenprioritätEs gibt uns die Möglichkeit, nur Nachrichten mit der genau angegebenen Priorität zu speichern.

 "=" (Gleich) 

4. Was ist und wie verwendet man Klogd in Linux-Logs?

Was ist KlodKlogd (Kernel Log Daemon) ist ein System-Daemon, der entwickelt wurde, um Nachrichten vom Linux-Kernel abzufangen und zu protokollieren. Die Funktion des Klogd-Befehls konzentriert sich auf die Erfassung mehrerer Kernel-Instanzen wie die Quelle, Priorisierung und Auflösung von Kernel-Adressen.

In Linux-Umgebungen haben wir zwei Hauptquellen für Kernel-Registrierungsinformationen, wie zum Beispiel:

  • Das /proc-Dateisystem
  • Die syscall-Schnittstelle (sys_syslog)
Der Befehl Klogd wurde entwickelt, um die bequemste Informationsquelle für die Anzeige der Informationen auszuwählen. Um dies zu erreichen, überprüft er zunächst das Vorhandensein eines / proc-Dateisystems, das eingehängt ist, falls vorhanden, das / proc file / kmsg wird als Quelle für Kernel-Log-Informationen verwendet. Falls das proc-Dateisystem nicht gemountet ist, verwendet Klogd einen Systemaufruf, um Kernel-Nachrichten zu erhalten. Falls die Kernel-Nachrichten über den syslogd-Daemon umgeleitet werden, kann der Klogd-Daemon seit seiner Version 1.1 Kernel-Nachrichten priorisieren innerhalb.

Wenn eine Nachricht vom Kernel empfangen wird, liest der Klogd-Daemon die zugewiesene Prioritätsstufe und weist ihr die Prioritätsstufe basierend auf der Syslog-Nachricht zu. Bei Verwendung von Klogd wird es auch möglich sein, die Anzeige von Kernel-Meldungen in der Systemkonsole zu ändern, in einem gemeinsamen Kernel ist der Standard-Log-Level der Konsole auf 7 gesetzt, also alle Meldungen mit einer niedrigeren Prioritätsstufe auf 7 (höchste Priorität) ) wird auf der Konsole angezeigt. Nachrichten der Prioritätsstufe 7 gelten als "Debugging"-Nachrichten und werden daher nicht auf der Konsole angezeigt, um die anderen Kernel-Ereignisse nicht mit Informationen zu überhäufen.

Klogd verfügt über eine Funktion namens Kernel Address Resolution, bei der, wenn der Kernel einen internen Fehlerzustand erkennt, automatisch ein allgemeines Schutzfehlerprotokoll aktiviert wird. Dies ist Teil des GPF-Behandlungsverfahrens, bei dem der Kernel einen Statusbericht druckt, der den Status des Prozessors angibt, wenn der Fehler generiert wird. In diesem Ergebnis sehen wir Details wie den Inhalt der Mikroprozessorregister, den Inhalt der den Kernel-Stack und eine Überwachung der Funktionen, die vor dem Fehler gelaufen sind.

Das Lösen der numerischen Adressen aus den Schutzfehlerergebnissen kann manuell oder über das ksymoops-Programm erfolgen, das in den Kernel-Quellen enthalten ist. Der Befehl Klogd unterstützt das Problem der Diagnose von Schutzfehlern in aktuellen ladbaren Kernelmodulen.

Schritt 1
Wie Syslogd wurde Klog in aktuellen Distributionen durch dynamischere Befehle ersetzt, daher werden wir für seine Installation Folgendes ausführen. Dort geben wir den Buchstaben S ein, um den Download und die Installation zu bestätigen.

 apt install busybox-syslogd 

VERGRÖSSERN

Schritt 2
Die Klod-Syntax lautet wie folgt:

 klogd [-cn] [-d] [-f fname] [-iI] [-n] [-o] [-p] [-s] [-k fname] [-v] [-x] [-2 ] 
Schritt 3
Diese Optionen sind:

Log-Level definierenDieser Parameter definiert die Standardprotokollierungsstufe für Konsolennachrichten auf n.

 -c nein 

Debug-ModusDiese Option aktiviert den Debugging-Modus.

 -D 

Protokollnachrichtenfile protokolliert Nachrichten unter dem angegebenen Dateinamen anstelle der Syslog-Installation.

 -F 

Identifizieren Sie laufende Daemonsidentifiziert den aktuell laufenden klogd-Daemon. Beide Schalter steuern das Laden/Neuladen von Symbolinformationen.

 -i -ich 

Stoppen Sie klogd im HintergrundVerhindern Sie, dass Klodd im Hintergrund läuft.

 -n 

Vollständiges Lesen von NachrichtenpuffernDiese Option ermöglicht es Klogd, alle in den Kernel-Nachrichtenpuffern gefundenen Nachrichten zu lesen und aufzuzeichnen.

 -oder 

Systemaufruf erzwingenZwingt den Befehl Klogd, die Systemaufrufschnittstelle für Kernel-Nachrichtenpuffer zu verwenden.

 -S 

Siehe Klod-VersionDrucken Sie die Klogd-Version.

 -v 

VERGRÖSSERN

Schritt 4
Wenn wir alle Ereignisse nach dem Login lesen möchten, führen wir Folgendes aus:

 klogd -o -f ./krnl.msg 
Schritt 5
Danach kann auf den Inhalt dieser Datei zugegriffen werden:

VERGRÖSSERN

5. Klod-Signale unter Linux


Der Klogd-Befehl kann auf acht (8) Signale reagieren, die sind: SIGHUP, SIGINT, SIGKILL, SIGTERM, SIGTSTP, SIGUSR1, SIGUSR2 und SIGCONT. Die Signale SIGINT, SIGKILL, SIGTERM und SIGHUP ermöglichen es dem Daemon, die Kernel-Log-Quellen herunterzufahren und den Prozess korrekt zu beenden, während die Signale SIGTSTP und SIGCONT verwendet werden, um das Kernel-Log zu starten und zu stoppen.

Schritt 1
Wenn wir beispielsweise das Dateisystem /proc aushängen möchten, müssen wir die folgenden Befehle ausführen:

 # kill -TSTP pid # umount / proc # kill -CONT pid
Schritt 2
Einige Dateien, die mit Klogd verwendet werden können, sind:

  • /proc/kmsg: ist die Quelldatei für klogd-Kernel-Nachrichten
  • /var/run/klogd.pid: ist die Datei, die die Prozess-ID von klogd enthält
  • /boot/System.map, /System.map, /usr/src/linux/System.map – Dies sind die Standardspeicherorte für Kernel-Systemzuordnungen.

Wie wir sehen, haben wir diese beiden nützlichen und wesentlichen Befehle für eine korrekte und vollständige Verwaltung von Kernel-Ereignissen in Linux.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave