Syslogd Linux a Unix Command

Sysklogd poskytuje dva systémové nástroje, které poskytují podporu pro protokolování systému a zachycení zpráv o jádře. Podpora obou internetových a unixových doménových soketů umožňuje tento balíček nástrojů podporovat jak lokální, tak vzdálené protokolování.

Systémové protokolování je poskytováno verzí syslogd (8) odvozené od BSD zdrojů. Podpora protokolování jádra poskytuje nástroj klogd (8), který umožňuje protokolování jádra buď samostatně, nebo jako klient syslogd.

Syslogd poskytuje druh logování, který využívá mnoho moderních programů. Každá zaznamenána zpráva obsahuje alespoň časové pole a pole hostitele, obvykle také pole s názvem programu, ale to závisí na tom, jak je protokolovací program důvěryhodný.

Zatímco zdroje syslogd byly silně změněny, některé poznámky jsou v pořádku. Především se systematicky pokoušel zajistit, aby systém syslogd dodržoval standardní standardní chování BSD. Druhým důležitým pojmem je, že tato verze syslogd interaguje transparentně s verzí syslog, která se nachází ve standardních knihovnách. Pokud nefunguje binární propojení se standardními sdílenými knihovnami, chtěli bychom si představit příklad anomálního chování.

Hlavní konfigurační soubor /etc/syslog.conf nebo alternativní soubor, který je zadán s volbou -f , se čte při spuštění. Všechny řádky začínající znakem hash (`` # '') a prázdné řádky jsou ignorovány. Pokud dojde během procesu analýzy k chybě, ignoruje se celý řádek.

Synopse

syslogd [ -a socket ] [ -d ] [ -f konfigurační soubor ] [ -h ] [ -l seznam hostitelů ] [ -m interval ] [ -n ] [ -p soket ] [ -r ] [ -s domainlist ] v ] [ -x ]

Možnosti

- zásuvka

Pomocí tohoto argumentu můžete zadat další sokety, ze kterých musí syslogd poslouchat. To je zapotřebí, pokud necháte nějaký démon běžet v prostředí chroot (). Můžete použít až 19 dalších zásuvek. Pokud vaše prostředí potřebuje ještě více, musíte zvýšit symbol MAXFUNIX v rámci zdrojového souboru syslogd.c. Příklad pro démona chroot () je popsán lidmi z OpenBSD na adrese http://www.psionic.com/papers/dns.html.

-d

Zapne režim ladění. Pomocí tohoto démona nebude pokračovat vidlice (2), aby se nastavila na pozadí, ale naproti tomu zůstat v popředí a napsat hodně ladicí informace o aktuálním tty. Další informace naleznete v části DEBUGGING.

-f konfigurační soubor

Zadejte alternativní konfigurační soubor místo souboru /etc/syslog.conf , který je výchozí.

-h

Ve výchozím nastavení syslogd nebude předávat zprávy, které přijímá ze vzdálených počítačů. Určení tohoto přepínače na příkazovém řádku způsobí, že démon protokolu předá vzdálené zprávy, které přijímá, pro předávání hostitelů, které byly definovány.

-l seznam hostitelů

Určete název hostitele, který by měl být přihlášen pouze se svým jednoduchým názvem hostitele a nikoli fqdn. Mnoho hostitelů může být zadáno pomocí oddělovače dvojtečky (``: '').

-m intervalu

Syslogd pravidelně zaznamenává značku časových značek. Výchozí interval mezi dvěma řádky - MARK - je 20 minut. Tuto možnost lze změnit. Nastavení intervalu na nulu jej úplně vypne.

-n

Vyhněte se automatickému pozadím. To je zapotřebí, zejména pokud je syslogd spuštěn a řízen init (8).

-p zásuvka

Můžete zadat alternativní soketu domény unix namísto / dev / log .

-r

Tato možnost umožní službě přijímat zprávy ze sítě pomocí zásuvky internetové domény se službou syslog (viz (5)). Výchozí nastavení není přijímat žádné zprávy ze sítě.

Tato možnost je zavedena ve verzi 1.3 balíčku sysklogd. Vezměte prosím na vědomí, že výchozí chování je opakem toho, jak se chovají starší verze, takže je možná třeba zapnout.

Seznam domén

Zadejte název domény, který by měl být před protokolem odebrán. Vícenásobné domény mohou být zadány pomocí dvojtečky (``: ''). Upozorňujeme, že žádné subdomény nesmí být zadány, ale pouze celé domény. Například pokud je zadán příkaz -s north.de a hostitelské protokolování se řeší na satu.infodrom.north.de žádná oblast by nebyla zkrácena, budete muset zadat dvě domény jako: -s north.de:infodrom.north.de .

-proti

Vytiskněte verzi a ukončete.

-X

Při přijímání vzdálených zpráv deaktivujte vyhledávání názvů. Tím se zabrání zablokování, když je jmenný server spuštěn na stejném počítači, který spouští démona syslog.

Signály

Syslogd reaguje na soubor signálů. Můžete snadno odeslat signál do syslogd pomocí následujícího:

zabít -SIGNAL `cat / var / run / syslogd.pid`

Sestup

To umožňuje syslogd provést znovu inicializaci. Všechny otevřené soubory jsou zavřeny, konfigurační soubor (výchozí je /etc/syslog.conf ) bude znovu zkontrolován a zařízení syslog (3) bude znovu spuštěno.

SIGTERM

Syslogd zemře.

SIGINT , SIGQUIT

Pokud je povoleno ladění, ignoruje je, jinak syslogd zemře.

SIGUSR1

Zapněte / vypněte ladění. Tuto možnost lze použít pouze v případě, že je syslogd spuštěn s volbou -d ladění.

SIGCHLD

Počkejte na děti, pokud se někteří narodili kvůli zprávám o zdi.

Rozdíly v konfiguraci souboru syntaxe

Syslogd používá trochu jinou syntaxi pro svůj konfigurační soubor než původní zdroje BSD. Původně všechny zprávy specifické priority a výše byly předány do souboru protokolu.

Například následující řádek způsobil VŠECHNY výstupy z daemonů pomocí zařízení démonů (ladění je nejnižší priorita, takže každé vyšší se také shoduje), jít do / usr / adm / daemons :

# Příklad vzoru syslog.conf daemon.debug / usr / adm / daemons

Podle nového schématu toto chování zůstává stejné. Rozdíl je přidáním čtyř nových specifikátorů, zástupného znaku hvězdičky ( * ), znaku rovnice ( = ), vykřičníku ( ! ) A znaménka mínus ( - ).

* Určuje, že všechny zprávy určené zařízení musí být směrovány do cíle. Všimněte si, že toto chování je degenerované s určením úrovně priority ladění. Uživatelé uvedli, že označení hvězdičky je intuitivnější.

Typ = zástupný znak se používá k omezení záznamu na zadanou třídu priorit. To umožňuje například směrování pouze ladění zpráv na konkrétní protokolovací zdroj.

Například následující řádek v souboru syslog.conf by směřoval ladění zpráv ze všech zdrojů do souboru / usr / adm / debug .

# Příklad syslog.conf *. = Debug / usr / adm / debug

The ! se používá k vyloučení protokolování stanovených priorit. To ovlivňuje všechny (!) Možnosti určení priorit.

Následující řádky by například zaznamenávaly všechny zprávy poštovního zařízení, s výjimkou těch s informacemi o prioritě do souboru / usr / adm / mail . A všechny zprávy z news.info (včetně) do news.crit (s výjimkou) budou zaznamenány do souboru / usr / adm / news .

# Ukázka syslog.conf pošty. *; Mail.! = Info / usr / adm / mail news.info; novinky.! Crit / usr / adm / news

Můžete jej použít intuitivně jako specifikátor výjimek. Výše uvedená interpretace je jednoduše obrácená. Děláte to, můžete použít

mail.none

nebo

pošta.!*

nebo

mail. debug

přeskočit každou zprávu, která je dodávána s poštovním zařízením. Je s tím spousta místa. :-)

Možnost - může být použita pouze k předponu názvu souboru, pokud nechcete synchronizovat soubor po každém zápisu do souboru.

To může vyžadovat určitou aklimatizaci pro ty osoby, které se používají k čistému chování BSD, ale testeři naznačili, že tato syntaxe je poněkud flexibilnější než chování BSD. Všimněte si, že tyto změny by neměly mít vliv na standardní soubory syslog.conf (5). Musíte speciálně upravit konfigurační soubory, abyste získali vylepšené chování.

Podpora pro vzdálené protokolování

Tyto modifikace poskytují síťovou podporu zařízení syslogd. Síťová podpora znamená, že zprávy mohou být předávány z jednoho uzlu se systémem syslogd do jiného uzlu se systémem syslogd, kde budou skutečně přihlášeni do disku.

Chcete-li toto povolit, musíte zadat volbu -r na příkazovém řádku. Výchozí chování je, že syslogd nebude naslouchat síti.

Strategií je naslouchat syslogd na socket domény unix pro lokálně generované zprávy protokolu. Toto chování umožní syslogd spolupracovat se syslog nalezeným v standardní knihovně C. Současně syslogd naslouchá na standardním portu syslog pro zprávy předávané jinými hostiteli. Chcete-li, aby to fungovalo správně, soubory služeb (5) (obvykle nalezené v / etc ) musí mít následující záznam:

syslog 514 / udp

Pokud tato položka chybí, syslogd nemůže přijímat vzdálené zprávy ani je odesílat, protože otevření portu UDP není možné. Místo toho syslogd okamžitě zemře a vyfouká chybovou zprávu.

Chcete-li způsobit, že zprávy budou předány jinému hostiteli, nahraďte normální souborový řádek v souboru syslog.conf názvem hostitele, ke kterému mají být zprávy odesílány, předpřipravené znakem @.

Chcete-li například odeslat VŠECHNY zprávy vzdálenému hostiteli pomocí následující položky syslog.conf :

# Ukázkový konfigurační soubor syslogd do # zpráv vzdálenému počítači předá všechny. *. * @hostname

Chcete-li předávat všechny zprávy jádra vzdálenému hostiteli, konfigurační soubor by byl následující:

# Vzorový konfigurační soubor pro předávání všech zpráv jádra # do vzdáleného hostitele. kern. * @hostname

Není-li vzdálený název hostitele při spuštění možné vyřešit, jelikož server názvů nemusí být přístupný (může být spuštěn po syslogd), nemusíte se obávat. Syslogd se pokusí znovu vyřešit ten název desetkrát a poté si stěžovat. Další možností, jak se tomu vyhnout, je umístit název hostitele do / etc / hosts .

S normálními syslogdy byste dostali syslog-smyčky, pokud budete posílat zprávy, které byly přijaty ze vzdáleného hostitele do stejného hostitele (nebo komplikovanější pro třetího hostitele, který ho odešle zpět na první a tak dále). V mé doméně (Infodrom Oldenburg) jsme náhodou dostali jeden a naše disky byly naplněny stejnou jednotnou zprávou. :-(

Chcete-li se tomu v budoucnu vyhnout, žádné zprávy, které byly přijaty ze vzdáleného hostitele, nebudou již odeslány jinému (nebo stejnému) vzdálenému hostiteli. Pokud existují scénáře, kde to nedává smysl, dejte mě (Joey) linku.

Pokud je vzdálený hostitel umístěn ve stejné doméně jako hostitel, syslogd je spuštěn, bude namísto celé fqdn zaznamenáno pouze jednoduché jméno hostitele.

V lokální síti můžete poskytnout centrální protokolový server, aby byly na jednom počítači uloženy všechny důležité informace. Pokud síť sestává z různých domén, nemusíte si stěžovat na protokolování plně kvalifikovaných jmen namísto jednoduchých názvů hostitelů. Možná budete chtít použít funkci proměnné domény -s tohoto serveru. Syslogd můžete sdělit, že z něj odstraní několik domén jiných, než je server, ve kterém je server umístěn, a pouze protokolování jednoduchých názvů hostitelů.

Pomocí volby -l je také možnost definovat jednotlivé počítače jako lokální počítače. To také vede k zápisu pouze jejich jednoduchých názvů hostitelů, nikoliv fqdns.

Socketová sada UDP sloužící k předávání zpráv vzdáleným hostitelům nebo přijímání zpráv od nich je otevřena pouze v případě potřeby. Ve verzích před 1.3-23 byla vždy otevřena, ale neotevřená pro čtení nebo předávání.

Výstup do pojmenovaných trubek (FIFOs)

Tato verze syslogd má podporu pro protokolování výstupu do pojmenovaných kanálů (fifos). Fifo nebo pojmenovaná trubka může být použita jako cíl pro zprávy protokolu předáním symbolu pipy (`` | '') k názvu souboru. To je užitečné pro ladění. Všimněte si, že FIFO musí být vytvořen příkazem mkfifo před spuštěním syslogd.

Následující konfigurační soubor přenáší ladicí zprávy z jádra do FIFO:

# Ukázka konfigurace k trasování jádra # zpráv LEN na / usr / adm / debug, což je # pojmenované potrubí. kern. = debug | / usr / adm / debug

Problémy při instalaci

Při instalaci této verze syslogd je pravděpodobně jedna důležitá pozornost. Tato verze syslogd závisí na správném formátování zpráv pomocí funkce syslog. Funkce funkce syslog ve sdílených knihovnách se někde změnila v oblasti libc.so.4 [2-4] .n. Konkrétní změnou bylo ukončení zprávy před odesláním do / dev / log soketu. Správné fungování této verze syslogd závisí na null-termination zprávy.

Tento problém se obvykle projeví, pokud se v systému používají staré staticky propojené binární soubory. Binární soubory používající staré verze funkce syslog způsobí, že budou zaznamenány prázdné řádky a následně zpráva s prvním znakem v odstraněné zprávě. Přenesení těchto binárních souborů do novějších verzí sdílených knihoven opraví tento problém.

Jak syslogd (8), tak klogd (8) mohou být buď spuštěny z init (8) nebo spuštěny jako součást sekvence rc. *. Je-li spuštěn od init, musí být nastavena volba -n , jinak se dostanete spousta démonů syslog. Je to proto, že init (8) závisí na ID procesu.

Bezpečnostní hrozby

Existuje potenciál, aby démon syslogd mohl být použit jako vedení pro útok na popření služby. Děkuji Johnovi Morrisonovi (jmorriso@rflab.ee.ubc.ca), který mě upozornil na tento potenciál. Neopodstatněný program (mer) mohl velmi snadno zaplavit syslogd démon se zprávami syslog, což vedlo k tomu, že soubory s protokoly spotřebovávají veškerý zbývající prostor na souborovém systému . Aktivování protokolování nad zásuvkami domény inet bude samozřejmě vystavovat systém rizikům mimo programy nebo jednotlivce na místním počítači.

Existuje řada metod ochrany stroje:

  1. Implementujte bránu firewall pro omezení, které hostitelé nebo sítě mají přístup k zásuvce 514 / UDP.
  2. Protokolování může být směrováno do samostatného nebo non-root souborového systému, který, pokud je vyplněn, nepoškodí zařízení.
  3. Může být použit souborový systém ext2, který může být nakonfigurován tak, aby omezil určité procento souborového systému na využití pouze root. Všimněte si, že to bude vyžadovat spuštění syslogd jako non-root proces. UPOZORNĚNÍ, že to zabrání použití vzdáleného protokolování, protože syslogd nebude schopen se připojit k zásuvce 514 / UDP.
  4. Zakázání soketů domény inet omezuje riziko na místní počítač.
  5. Použijte krok 4, a pokud problém přetrvává a není druhotný k neúspěšnému programu / démonu, dostanete délku sací tyče o délce 3,5 stopy (asi 1 metr) a pohovořte s dotčeným uživatelem. Sucker tyč def. --- 3/4, 7/8 nebo 1in. kalená ocelová tyč s vnějším závitem na obou koncích. Primární použití v ropném průmyslu v západní části Severní Dakoty a dalších místech, kde se čerpá "olej" z ropných vrtů. Sekundární využití se týká stavby krmných krmiv pro dobytek a jednání s občasnými nepoctivými nebo bojujícími jednotlivci.

Ladění

Při ladění je zapnuto pomocí volby -d pak syslogd bude velmi podrobný psaním hodně z toho, co dělá na stdout. Vždy, když se konfigurační soubor přečte a znovu analyzuje, uvidíte tabulku, která odpovídá interní datové struktuře. Tato tabulka obsahuje čtyři pole:

číslo

Toto pole obsahuje sériové číslo začínající nulou. Toto číslo představuje pozici ve vnitřní struktuře dat (tj. Pole). Pokud je jedno číslo vynecháno, může dojít k chybě v odpovídajícím řádku v souboru /etc/syslog.conf .

vzor

Toto pole je složité a představuje přesně vnitřní strukturu. Každý sloupec představuje zařízení (viz syslog (3)). Jak můžete vidět, stále existují nějaké zázemí, které jsou pro staré použití libovolné, používá se pouze levá většina. Každé pole ve sloupci představuje priority (viz syslog (3)).

akce

Toto pole popisuje konkrétní akci, ke které dochází při každém přijetí zprávy, která odpovídá vzoru. Informace o všech možných akcích najdete na stránce syslog.conf (5).

argumenty

Toto pole obsahuje další argumenty pro akce v posledním poli. Pro protokolování souborů je to název souboru pro logfile; pro protokolování uživatele je to seznam uživatelů; pro vzdálené protokolování se jedná o název hostitele, na který se má stroj přihlásit; pro protokolování konzoly je to používaná konzola; pro tty-logging to je specifikovaný tty; stěna nemá žádné další argumenty.

Viz též

logger (1), syslog (2), (5)

Spolupracovníci

Syslogd je převzat ze zdrojů BSD, Greg Wettstein (greg@wind.enjellic.com) provedl port do Linuxu , Martin Schulze (joey@linux.de) opravil některé chyby a přidal několik nových funkcí. Klogd původně napsal Steve Lord (lord@cray.com), Greg Wettstein se výrazně zlepšil.

Dr. Greg Wettstein
Vývoj enjelických systémů

Výpočetní technika oddělení onkologického výzkumu
Roger Maris Cancer Center
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Katedra informatiky
Edinburghská univerzita, Skotsko
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Důležité: Použijte příkaz man ( % man ), abyste zjistili, jaký příkaz se používá v konkrétním počítači.

Související články