Skip to main content

WIE MAN: Syslogd Linux- und Unix-Befehl - 2021

LINUX Logger command (March 2021).

Anonim

Sysklogd stellt zwei Systemdienstprogramme bereit, die Unterstützung für die Systemprotokollierung und Kernel-Nachrichtenüberfüllung bieten. Durch die Unterstützung von Internet- und Unix-Domänensockets kann dieses Dienstprogramm sowohl die lokale als auch die Remote-Protokollierung unterstützen.

Die Systemprotokollierung wird von einer Version von bereitgestelltsyslogd(8) abgeleitet aus den BSD-Bestandsquellen. Unterstützung für die Kernelprotokollierung wird von der bereitgestelltklogd(8) Dienstprogramm, mit dem die Kernelprotokollierung entweder eigenständig oder als Client von syslogd durchgeführt werden kann.

Syslogd bietet eine Protokollierungsart, die von vielen modernen Programmen verwendet wird. Jede protokollierte Nachricht enthält mindestens eine Uhrzeit und ein Hostnamenfeld, normalerweise auch ein Programmnamenfeld. Dies hängt jedoch davon ab, wie vertrauenswürdig das Protokollierungsprogramm ist.

Währendsyslogd Quellen wurden stark modifiziert ein paar Notizen sind in Ordnung. Zunächst wurde systematisch versucht, sicherzustellen, dass syslogd seinem standardmäßigen BSD-Standardverhalten folgt. Das zweite wichtige Konzept ist, dass diese Version von syslogd transparent mit der Version von syslog in den Standardbibliotheken interagiert. Wenn eine mit den gemeinsam genutzten Standardbibliotheken verknüpfte Binärdatei nicht ordnungsgemäß funktioniert, möchten wir ein Beispiel für das anomale Verhalten.

Die Hauptkonfigurationsdatei /etc/syslog.conf oder eine alternative Datei, die mit der-f Option, wird beim Start gelesen. Alle Zeilen, die mit der Raute beginnen (`` # '') und leere Zeilen, werden ignoriert. Wenn während der Analyse ein Fehler auftritt, wird die gesamte Zeile ignoriert.

Zusammenfassung

syslogd -ein Steckdose -d -f Konfigurationsdatei -h -l Hostliste -m Intervall -n -p Steckdose -r -s Domainliste -v -x

Optionen

-ein Steckdose

Mit diesem Argument können Sie zusätzliche Sockets angebensyslogd muss zu hören Dies ist erforderlich, wenn ein Daemon in einer chroot () - Umgebung ausgeführt werden soll. Sie können bis zu 19 zusätzliche Steckdosen verwenden. Wenn Ihre Umgebung noch mehr braucht, müssen Sie das Symbol erhöhenMAXFUNIX in der Quelldatei syslogd.c. Ein Beispiel für einen chroot () - Daemon wird von den Leuten von OpenBSD unter http:psionic.com/papers/dns.html beschrieben.

-d

Aktiviert den Debug-Modus. Mit diesem wird der Daemon nicht fortgesetztGabel(2) um sich in den Hintergrund zu setzen, aber gegenüber dem im Vordergrund zu bleiben und viel Debug-Informationen über das aktuelle tty zu schreiben. Weitere Informationen finden Sie im Abschnitt DEBUGGING.

-f Konfigurationsdatei

Geben Sie anstelle von eine alternative Konfigurationsdatei an /etc/syslog.conf, das ist die Standardeinstellung.

-h

Standardmäßig leitet syslogd keine Nachrichten weiter, die von Remote-Hosts empfangen werden. Wenn Sie diese Option in der Befehlszeile angeben, leitet der Log-Daemon alle empfangenen Remote-Nachrichten an die weitergeleiteten Hosts weiter, die definiert wurden.

-l Hostliste

Geben Sie einen Hostnamen an, der nur mit seinem einfachen Hostnamen und nicht mit dem fqdn protokolliert werden soll. Mehrere Hosts können mit dem Doppelpunkt (``: '') angegeben werden.

-m Intervall

Dassyslogd protokolliert regelmäßig einen Markierungszeitstempel. Der Standard Intervall zwischen zwei -- KENNZEICHEN -- Linien ist 20 Minuten. Dies kann mit dieser Option geändert werden. Einstellen der Intervall auf null schaltet es ganz aus.

-n

Vermeiden Sie das automatische Hintergrundbild. Dies ist insbesondere dann erforderlich, wenn diesyslogd wird gestartet und gesteuert vondrin(8).

-p Steckdose

Sie können anstelle von einen alternativen Unix-Domänensocket angeben / dev / log .

-r

Mit dieser Option kann die Einrichtung eine Nachricht vom Netzwerk über einen Internet-Domain-Socket mit dem Syslog-Dienst empfangen (siehe (5)). Standardmäßig werden keine Nachrichten vom Netzwerk empfangen.

Diese Option wurde in Version 1.3 des Pakets sysklogd eingeführt. Bitte beachten Sie, dass das Standardverhalten das Gegenteil von dem ist, wie sich ältere Versionen verhalten. Daher müssen Sie dies möglicherweise aktivieren.

-s Domainliste

Geben Sie einen Domänennamen an, der vor der Protokollierung entfernt werden soll. Mehrere Domänen können mit dem Doppelpunkt (``: '') angegeben werden. Bitte beachten Sie, dass keine Subdomains angegeben werden dürfen, sondern nur ganze Domains. Zum Beispiel wenn-s north.de ist angegeben und die Hostprotokollierung wird in satu.infodrom.north.de aufgelöst. Es wird keine Domäne gekürzt. Sie müssen zwei Domänen angeben:-s north.de:infodrom.north.de.

-v

Druckversion und beenden

-x

Namenssuche deaktivieren, wenn Remote-Nachrichten empfangen werden. Dadurch werden Deadlocks vermieden, wenn der Nameserver auf derselben Maschine ausgeführt wird, auf der der Syslog-Daemon ausgeführt wird.

Signale

Syslogd reagiert auf eine Reihe von Signalen. Sie können leicht ein Signal an sendensyslogd mit den folgenden:

kill -SIGNAL `cat / var / run / syslogd.pid`

Seufzend

Das lässtsyslogd Führen Sie eine Neuinitialisierung durch. Alle geöffneten Dateien werden geschlossen, die Konfigurationsdatei (Standardeinstellung ist /etc/syslog.conf ) wird neu gelesen und dieSyslog(3) Anlage wird erneut gestartet.

SIGTERM

Dassyslogd wird sterben.

SIGINT, SIGQUIT

Wenn das Debugging aktiviert ist, werden diese ignoriert, andernfallssyslogd wird sterben.

SIGUSR1

Debugging ein- / ausschalten. Diese Option kann nur verwendet werden, wennsyslogd wird mit dem gestartet-d Debug-Option.

SIGCHLD

Warten Sie auf Kinder, wenn einige von ihnen geboren wurden.

Unterschiede in der Konfigurationsdatei-Syntax

Syslogd verwendet für die Konfigurationsdatei eine etwas andere Syntax als die ursprünglichen BSD-Quellen. Ursprünglich wurden alle Nachrichten mit einer bestimmten Priorität und darüber an die Protokolldatei weitergeleitet.

Die folgende Zeile führte beispielsweise dazu, dass ALLE Ausgaben von Daemons, die die Daemon-Funktionen verwenden (Debug ist die niedrigste Priorität, sodass auch alle höheren übereinstimmen) / usr / adm / daemons :

# Beispiel syslog.conf daemon.debug / usr / adm / daemons

Bei dem neuen Schema bleibt dieses Verhalten das gleiche. Der Unterschied besteht in der Addition von vier neuen Spezifizierern, dem Sternchen (*) Platzhalterzeichen, das Gleichungszeichen (=), das Ausrufezeichen (!) und das Minuszeichen (-).

Das* Gibt an, dass alle Nachrichten für die angegebene Einrichtung an das Ziel gerichtet werden sollen. Beachten Sie, dass dieses Verhalten mit dem Festlegen einer Prioritätsstufe von Debuggen degeneriert ist. Benutzer haben angegeben, dass die Sternchen-Notation intuitiver ist.

Das= Platzhalter wird verwendet, um die Protokollierung auf die angegebene Prioritätsklasse zu beschränken. Dadurch können Sie zum Beispiel nur Debug-Meldungen an eine bestimmte Protokollquelle weiterleiten.

Zum Beispiel die folgende Zeile in syslog.conf würde Debug-Meldungen aus allen Quellen an die weiterleiten / usr / adm / debug Datei.

# Beispiel syslog.conf *. = Debug / usr / adm / debug

Das! wird verwendet, um die Protokollierung der angegebenen Prioritäten auszuschließen. Dies betrifft alle (!) Möglichkeiten, Prioritäten festzulegen.

In den folgenden Zeilen werden zum Beispiel alle Nachrichten der Einrichtungsmail mit Ausnahme der Nachrichten mit der Prioritätsinformation an die protokolliert / usr / adm / mail Datei. Und alle Nachrichten von news.info (einschließlich) an news.crit (ausgenommen) werden im protokolliert / usr / adm / news Datei.

# Beispiel für syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; news.! Krit / usr / adm / news

Sie können es intuitiv als Ausnahmespezifizierer verwenden. Die oben erwähnte Interpretation wird einfach umgekehrt. Das können Sie verwenden

mail.none

oder

mail.! *

oder

mail.! debuggen

Überspringen Sie jede Nachricht, die mit einer E-Mail-Funktion geliefert wird. Es gibt viel Platz, um damit zu spielen. :-)

Das- darf nur als Präfix für einen Dateinamen verwendet werden, wenn Sie die Synchronisierung der Datei nach jedem Schreibvorgang auslassen möchten.

Dies kann eine gewisse Akklimatisierung für Personen erfordern, die an das reine BSD-Verhalten gewöhnt sind, aber Tester haben angegeben, dass diese Syntax etwas flexibler ist als das BSD-Verhalten. Beachten Sie, dass diese Änderungen den Standard nicht beeinflussen solltensyslog.conf(5) Dateien. Sie müssen die Konfigurationsdateien speziell ändern, um das erweiterte Verhalten zu erhalten.

Unterstützung für die Fernprotokollierung

Diese Änderungen bieten Netzwerkunterstützung für die syslogd-Funktion. Netzwerkunterstützung bedeutet, dass Nachrichten von einem Knoten mit syslogd an einen anderen Knoten mit syslogd weitergeleitet werden können, auf dem sie tatsächlich in einer Festplattendatei protokolliert werden.

Um dies zu ermöglichen, müssen Sie das angeben-r Option in der Befehlszeile. Das Standardverhalten ist dassyslogd hört nicht auf das Netzwerk.

Die Strategie besteht darin, dass syslogd einen Unix-Domänensocket für lokal erzeugte Protokollnachrichten abhören soll. Durch dieses Verhalten kann syslogd mit dem in der Standard-C-Bibliothek gefundenen syslog zusammenarbeiten. Gleichzeitig überwacht syslogd den Standard-Syslog-Port auf Nachrichten, die von anderen Hosts weitergeleitet werden. Damit dies korrekt funktioniertDienstleistungen(5) Dateien (normalerweise in /usw ) muss folgenden Eintrag haben:

Syslog 514 / UDP

Wenn dieser Eintrag fehltsyslogd Remote-Nachrichten können weder empfangen noch gesendet werden, da der UDP-Port nicht geöffnet werden kann. Stattdessen, syslogd wird sofort sterben und eine Fehlermeldung ausblasen.

Um zu bewirken, dass Nachrichten an einen anderen Host weitergeleitet werden, ersetzen Sie die normale Dateizeile im syslog.conf Datei mit dem Namen des Hosts, an den die Nachrichten gesendet werden sollen, mit vorangestelltem @.

Zum Beispiel weiterleitenALLES Nachrichten an einen Remote-Host senden syslog.conf Eintrag:

# Beispiel für eine syslogd-Konfigurationsdatei, um # Meldungen an einen Remote-Host weiterzuleiten. *. * @hostname

Alles weiterleitenKernel Nachrichten an einen Remote-Host wäre die Konfigurationsdatei wie folgt:

# Beispielkonfigurationsdatei zum Weiterleiten aller # Kernel-Nachrichten an einen Remote-Host. kern. * @hostname

Wenn der Remote-Hostname beim Start nicht aufgelöst werden kann, weil auf den Namenserver möglicherweise nicht zugegriffen werden kann (er wird möglicherweise nach syslogd gestartet), müssen Sie sich keine Sorgen machen.Syslogd versucht, den Namen zehnmal aufzulösen, und beschwert sich dann. Eine andere Möglichkeit, dies zu vermeiden, besteht darin, den Hostnamen in einzufügen / etc / hosts .

Mit normalsyslogds würden Sie syslog-loops erhalten, wenn Sie Nachrichten, die von einem fernen Host an denselben Host (oder komplizierter) an einen dritten Host, der ihn an den ersten zurücksendet, empfangen haben, versenden. In meiner Domain (Infodrom Oldenburg) haben wir versehentlich eine und unsere Datenträger mit der gleichen einzigen Nachricht gefüllt. :-(

Um dies zu vermeiden, werden keine Nachrichten, die von einem entfernten Host empfangen wurden, an einen anderen (oder denselben) entfernten Host gesendet. Wenn es Szenarien gibt, in denen dies keinen Sinn macht, schreiben Sie mir (Joey) bitte eine Zeile.

Wenn sich der Remote-Host in derselben Domäne wie der Host befindet,syslogd Läuft am, wird nur der einfache Hostname protokolliert und nicht der gesamte FQDN.

In einem lokalen Netzwerk können Sie einen zentralen Protokollserver bereitstellen, um alle wichtigen Informationen auf einem Computer zu speichern. Wenn das Netzwerk aus verschiedenen Domänen besteht, müssen Sie sich nicht beschweren, wenn Sie vollständig qualifizierte Namen anstelle von einfachen Hostnamen protokollieren. Möglicherweise möchten Sie die Strip-Domain-Funktion verwenden-s dieses Servers. Sie können das sagensyslogd Um mehrere Domänen außer der Domäne zu entfernen, in der sich der Server befindet, werden nur einfache Hostnamen protokolliert.

Verwendung der-l Option gibt es auch die Möglichkeit, einzelne Hosts als lokale Computer zu definieren. Auch dies führt dazu, dass nur die einfachen Hostnamen und nicht die FQDNs protokolliert werden.

Der UDP-Socket, der zum Weiterleiten von Nachrichten an Remote-Hosts oder zum Empfangen von Nachrichten von diesen verwendet wird, wird nur geöffnet, wenn er benötigt wird. In Releases vor 1.3-23 wurde es jedes Mal geöffnet, jedoch nicht zum Lesen bzw. Weiterleiten geöffnet.

Ausgabe an Named Pipes (FIFOs)

Diese Version von syslogd unterstützt die Protokollierung der Ausgabe in Named Pipes (Fifos). Eine FIFO-Datei oder eine Named Pipe kann als Ziel für Protokollnachrichten verwendet werden, indem dem Dateinamen ein Pipy-Symbol (`` | '') vorangestellt wird. Dies ist praktisch zum Debuggen. Beachten Sie, dass das FIFO mit dem Befehl mkfifo erstellt werden muss, bevor syslogd gestartet wird.

Die folgende Konfigurationsdatei leitet Debug-Nachrichten vom Kernel an einen FIFO weiter:

# Beispielkonfiguration zum Weiterleiten von Kernel-Debugging-Meldungen NUR an / usr / adm / debug, wobei es sich um eine # named-Pipe handelt. kern. = debug | / usr / adm / debug

Installationsbedenken

Bei der Installation dieser Version von syslogd ist wahrscheinlich eine wichtige Überlegung von Bedeutung. Diese Version von syslogd hängt von der korrekten Formatierung der Meldungen durch die Funktion syslog ab. Die Funktion der syslog-Funktion in den gemeinsam genutzten Bibliotheken hat sich irgendwo in der Region von libc.so.4. 2-4 .n geändert. Die spezifische Änderung bestand darin, die Nachricht vor dem Übertragen an die E-Mail mit dem Nulltermin zu beenden / dev / log Steckdose. Die ordnungsgemäße Funktion dieser Version von syslogd hängt von der Nullterminierung der Nachricht ab.

Dieses Problem tritt normalerweise auf, wenn alte statisch verknüpfte Binärdateien auf dem System verwendet werden. Bei Binärdateien, die alte Versionen der Syslog-Funktion verwenden, werden leere Zeilen protokolliert, gefolgt von der Nachricht, wobei das erste Zeichen in der Nachricht entfernt wird. Durch das Verknüpfen dieser Binärdateien mit neueren Versionen der gemeinsam genutzten Bibliotheken wird dieses Problem behoben.

Beidesyslogd(8) und dieklogd(8) kann entweder von init (8) aus gestartet oder als Teil der Sequenz rc. * Gestartet werden. Wenn von init die Option gestartet wird -n muss gesetzt sein, andernfalls werden Tonnen von Syslog-Daemons gestartet. Das ist weildrin(8) hängt von der Prozess-ID ab.

Sicherheitsbedrohungen

Es besteht die Möglichkeit, dass der syslogd-Dämon als Verbindungskanal für einen Denial-of-Service-Angriff verwendet wird. Vielen Dank an John Morrison ([[email protected]]), der mich auf dieses Potenzial aufmerksam gemacht hat. Ein Rogue-Programm (mer) kann den syslogd-Daemon sehr leicht mit syslog-Meldungen überfluten, was dazu führt, dass die Protokolldateien den gesamten verbleibenden Speicherplatz im Dateisystem belegen. Durch die Aktivierung der Protokollierung über die inet Domain-Sockets wird ein System natürlich Risiken außerhalb von Programmen oder Einzelpersonen auf dem lokalen Computer ausgesetzt.

Es gibt eine Reihe von Methoden zum Schutz einer Maschine:

  1. Implementieren Sie die Kernel-Firewall, um zu begrenzen, welche Hosts oder Netzwerke Zugriff auf den 514 / UDP-Socket haben.
  2. Die Protokollierung kann an ein isoliertes oder nicht-Root-Dateisystem gerichtet werden, das, wenn es gefüllt ist, die Maschine nicht beeinträchtigt.
  3. Das ext2-Dateisystem kann verwendet werden, das so konfiguriert werden kann, dass ein bestimmter Prozentsatz eines Dateisystems auf die Verwendung durch root beschränkt wird.HINWEIS Dies setzt voraus, dass syslogd als nicht-root-Prozess ausgeführt wird. AUCH HINWEIS Dies verhindert die Verwendung der Remote-Protokollierung, da syslogd nicht an den 514 / UDP-Socket binden kann.
  4. Das Deaktivieren von Inet-Domain-Sockets begrenzt das Risiko für den lokalen Computer.
  5. Führen Sie Schritt 4 aus, und wenn das Problem weiterhin besteht und nicht einem Schurkenprogramm / Daemon untergeordnet ist, erhalten Sie eine Länge von ca. 1 Meter (4 Meter) der Suckerrute * und sprechen Sie mit dem betreffenden Benutzer. Suckerstab def. 3/4, 7/8 oder 1 Zoll. Stab aus gehärtetem Stahl, an beiden Enden Außengewinde. Primäre Verwendung in der Erdölindustrie in West-North Dakota und an anderen Standorten, um Öl aus Ölquellen zu saugen. Sekundäre Verwendungen sind für den Bau von Viehfutterpartien und für den Umgang mit gelegentlichen widerspenstigen oder kriegerischen Individuen.

Debuggen

Wenn das Debuggen mit aktiviert ist-d Option dannsyslogd wird sehr wortreich sein, wenn man viel von dem schreibt, was es auf stdout tut. Immer wenn die Konfigurationsdatei erneut gelesen und analysiert wird, wird eine Tabelle angezeigt, die der internen Datenstruktur entspricht. Diese Tabelle besteht aus vier Feldern:

Nummer

Dieses Feld enthält eine Seriennummer, die mit Null beginnt. Diese Nummer steht für die Position in der internen Datenstruktur (d. H. Dem Array). Wenn eine Zahl ausgelassen wird, kann in der entsprechenden Zeile ein Fehler auftreten /etc/syslog.conf .

Muster

Dieses Feld ist schwierig und repräsentiert die interne Struktur genau. Jede Spalte steht für eine Einrichtung (sieheSyslog(3)). Wie Sie sehen, gibt es noch einige Einrichtungen, die für die frühere Nutzung frei stehen. Jedes Feld in einer Spalte stellt die Prioritäten dar (sieheSyslog(3)).

Aktion

Dieses Feld beschreibt die bestimmte Aktion, die ausgeführt wird, wenn eine Nachricht empfangen wird, die dem Muster entspricht. Beziehen Sie sich auf diesyslog.conf(5) Manpage für alle möglichen Aktionen.

Argumente

Dieses Feld zeigt zusätzliche Argumente für die Aktionen im letzten Feld. Bei der Dateiprotokollierung ist dies der Dateiname für die Protokolldatei. Für die Benutzerprotokollierung ist dies eine Liste von Benutzern. Für die Remote-Protokollierung ist dies der Hostname des Rechners, an dem die Anmeldung erfolgen soll. Für die Konsolenprotokollierung ist dies die verwendete Konsole. Für das Protokollieren von Daten ist dies das angegebene Format. Wand hat keine zusätzlichen Argumente.

Siehe auch

Logger(1), Syslog(2), (5)

Mitarbeiter

Syslogd wurde aus BSD-Quellen entnommen, Greg Wettstein ([[email protected]]) führte den Port für Linux durch, Martin Schulze ([[email protected]]) behebte einige Fehler und fügte einige neue Funktionen hinzu.Klogdwurde ursprünglich von Steve Lord ([[email protected]]) geschrieben. Greg Wettstein hat wesentliche Verbesserungen vorgenommen.

Dr. Greg WettsteinEnjellic Systementwicklung

Abteilung für Onkologieforschung Computing FacilityRoger Maris Cancer CenterFargo, ND[[email protected]]

Stephen TweedieAbteilung für ComputerwissenschaftenEdinburgh University, Schottland[[email protected]]

Juha Virtanen[[email protected]]

Shane Alderton[[email protected]]

Martin SchulzeInfodrom Oldenburg[[email protected]]

Wichtig: Verwenden Sie die Mann Befehl ( % Mann ), um zu sehen, wie ein Befehl auf Ihrem Computer verwendet wird.

In Verbindung stehende Artikel

  • sysklogd - Linux-Befehl - Unix-Befehl
  • Rwall - Was ist Rwa?