Syslogd Comandamentul Linux și Unix

Sysklogd oferă două utilitare de sistem care oferă suport pentru logarea sistemului și captarea mesajelor de kernel. Sprijinul atat pentru conexiunile de internet cat si pentru unix permite acest pachet utilitar sa sustina logarea locala si la distanta.

Logarea sistemului este furnizată de o versiune a syslogd (8) derivată din sursele BSD stoc. Suportul pentru logarea kernel-ului este furnizat de utilitarul klogd (8), care permite logarea kernel-ului să fie efectuată fie în mod autonom, fie ca client de syslogd.

Syslogd oferă un fel de exploatare pe care multe programe moderne le utilizează. Fiecare mesaj logat conține cel puțin un câmp de timp și un nume de gazdă, în mod normal un câmp de nume de program, dar acest lucru depinde de cât de încredere este programul de înregistrare.

În timp ce sursele syslogd au fost puternic modificate, câteva note sunt în ordine. Mai întâi de toate, a existat o încercare sistematică de a se asigura că syslogd urmează standardul implicit, BSD standard. Cel de-al doilea concept important este acela că această versiune a syslogd interacționează transparent cu versiunea de syslog găsită în bibliotecile standard. Dacă un binar conectat la bibliotecile partajate standard nu reușește să funcționeze corect, ne-ar plăcea un exemplu de comportament anormal.

Fișierul de configurare principal /etc/syslog.conf sau un fișier alternativ, dat cu opțiunea -f , este citit la pornire. Toate liniile care încep cu marcajul hash (`` # '') și liniile goale sunt ignorate. Dacă apare o eroare în timpul parsării, întreaga linie este ignorată.

Rezumat

Sincronizare [ -a socket ] [ -d ] [ -f fișier de configurare ] [ -h ] [ -l gazdă ] [ -m interval ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

Opțiuni

- o priză

Folosind acest argument puteți specifica socket-uri suplimentare de la care syslogd trebuie să asculte. Acest lucru este necesar dacă veți lăsa un anumit daemon să ruleze într-un mediu chroot (). Puteți utiliza până la 19 prize suplimentare. Dacă mediul dvs. are nevoie și mai mult, trebuie să măriți simbolul MAXFUNIX din fișierul sursă syslogd.c. Un exemplu pentru un daemon chroot () este descris de oamenii de la OpenBSD la http://www.psionic.com/papers/dns.html.

-d

Activează modul de depanare. Folosind acest lucru, demonul nu va continua o furculita (2) pentru a se poziționa în fundal, dar opus acelei șederi în prim-plan și a scrie multe informații despre depanare pe actualul tty. Consultați secțiunea DEBUGGING pentru mai multe informații.

-f fișierul de configurare

Specificați un fișier de configurare alternativ în loc de /etc/syslog.conf , care este implicit.

-h

În mod implicit, syslogd nu va redirecționa mesajele primite de la gazdele de la distanță. Specificarea acestui comutator pe linia de comandă va determina daemonul log să transmită orice mesaje la distanță pe care le primește pentru a trimite gazde care au fost definite.

- lista de gazde

Specificați un nume de gazdă care ar trebui să fie înregistrat numai cu numele său simplu de gazdă și nu cu fqdn. Multi gazde pot fi specificate folosind separatorul colon (``: '').

-m interval

Syslogd înregistrează în mod regulat o marcă de timp. Intervalul prestabilit între două linii - MARK - este de 20 de minute. Acest lucru poate fi schimbat cu această opțiune. Setarea intervalului la zero îl dezactivează în întregime.

-N

Evitați auto-fundal. Acest lucru este necesar mai ales dacă syslogd este pornit și controlat de init (8).

-p socket

Puteți specifica un socket de domeniu alternativ unix în loc de / dev / log .

-r

Această opțiune va permite facilității să primească un mesaj din rețea utilizând un soclu de domeniu de internet cu serviciul syslog (a se vedea (5)). Implicit este să nu primești niciun mesaj din rețea.

Această opțiune este introdusă în versiunea 1.3 a pachetului sysklogd. Rețineți că comportamentul implicit este opusul modului în care se comportă versiunile mai vechi, astfel încât este posibil să trebuiască să activați acest lucru.

este lista de domenii

Specificați un nume de domeniu care ar trebui eliminat înainte de a fi înregistrat. Este posibil ca mai multe domenii să fie specificate utilizând separatorul colon (``: ''). Rețineți că nu pot fi specificate subdomenii, ci numai domenii întregi. De exemplu, dacă -s north.de este specificat și logarea gazdei se rezolvă la satu.infodrom.north.de nici un domeniu nu va fi tăiat, va trebui să specificați două domenii ca: -s north.de:infodrom.north.de .

-v

Imprimați versiunea și ieșiți.

-X

Dezactivați căutările de nume atunci când primiți mesaje la distanță. Acest lucru evită blocările atunci când serverul de nume rulează pe aceeași mașină care execută daemonul syslog.

semnale

Syslogd reacționează la un set de semnale. Puteți trimite cu ușurință un semnal la syslogd folosind următoarele:

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

SIGHUP

Acest lucru permite syslogd să efectueze o re-inițializare. Toate fișierele deschise sunt închise, fișierul de configurare (implicit este /etc/syslog.conf ) va fi recitit și facilitatea syslog (3) va fi pornită din nou.

SIGTERM

Syslogd va muri.

SIGINT , SIGQUIT

Dacă debugging-ul este activat, acestea sunt ignorate, în caz contrar syslogd va muri.

SIGUSR1

Comutați întreruperea / dezactivarea depanării. Această opțiune poate fi utilizată numai dacă syslogd este pornit cu opțiunea -d debug.

SIGCHLD

Așteptați copii dacă s-au născut unii, din cauza mesajelor de perete.

Diferențele de sintaxă a fișierelor de configurare

Syslogd utilizează o sintaxă puțin diferită pentru fișierul de configurare decât sursele originale BSD. Inițial, toate mesajele cu o anumită prioritate și mai sus au fost redirecționate în fișierul jurnal.

De exemplu, următoarea linie a cauzat TOATE ieșirile de la daemoane folosind facilitățile daemon (debugul este cea mai mică prioritate, deci fiecare valoare mai mare se va potrivi de asemenea) pentru a intra în / usr / adm / daemons :

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

În cadrul noii scheme, acest comportament rămâne același. Diferența este adăugarea a patru specificatoare noi, caracterele asterisc ( * ), semnul ecuației ( = ), semnul exclamării ( ! ) Și semnul minus ( - ).

* Specifică faptul că toate mesajele pentru unitatea specificată trebuie să fie direcționate spre destinație. Rețineți că acest comportament este degenerat, specificând un nivel de prioritate de depanare. Utilizatorii au indicat că notația cu asterisc este mai intuitivă.

The = wildcard este folosit pentru a restricționa logarea la clasa de prioritate specificată. Acest lucru permite, de exemplu, rutarea numai a mesajelor de depanare către o anumită sursă de înregistrare.

De exemplu, următoarea linie din syslog.conf va direcționa direct mesajele de la toate sursele la fișierul / usr / adm / debug .

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

The ! este folosit pentru a exclude logarea priorităților specificate. Aceasta afectează toate posibilitățile (!) De a specifica prioritățile.

De exemplu, următoarele linii ar loga toate mesajele de pe e-mail, cu excepția celor cu informații de prioritate în fișierul / usr / adm / mail . Și toate mesajele de la news.info (inclusiv) la news.crit (cu excepția) ar fi înregistrate în fișierul / usr / adm / news .

# Exemplul mesajului syslog.conf. *; Mail.! = Info / usr / adm / mail news.info; news.! Crit / usr / adm / news

Este posibil să îl utilizați intuitiv ca un specificator de excepție. Interpretarea menționată mai sus este pur și simplu inversată. Făcând asta, poți folosi

mail.none

sau

Poștă.!*

sau

e-mail.! depanare

pentru a sări peste fiecare mesaj care vine cu o facilitate de poștă electronică. Există mult spațiu de jucat cu el. :-)

- Poate fi folosit numai pentru a prefixa un nume de fișier dacă doriți să omiteți sincronizarea fișierului după fiecare scriere.

Acest lucru poate necesita o aclimatizare pentru acei indivizi folosiți la comportamentul BSD pur, dar testerele au indicat că această sintaxă este oarecum mai flexibilă decât comportamentul BSD. Rețineți că aceste modificări nu ar trebui să afecteze fișierele standard syslog.conf (5). Trebuie să modificați în mod specific fișierele de configurare pentru a obține comportamentul îmbunătățit.

Suport pentru înregistrarea la distanță

Aceste modificări oferă suport pentru rețea facilității syslogd. Suportul de rețea înseamnă că mesajele pot fi redirecționate de la un nod care rulează syslogd la un alt nod care rulează syslogd unde vor fi de fapt conectate la un fișier disc.

Pentru a activa acest lucru, trebuie să specificați opțiunea -r din linia de comandă. Comportamentul implicit este că syslogd nu va asculta rețeaua.

Strategia este să ascultați syslogd pe un soclu de domeniu unix pentru mesajele de jurnal generate local. Acest comportament va permite syslogdului să interacționeze cu syslog-ul găsit în biblioteca standard C. În același timp, syslogd asculta pe portul standard syslog pentru mesajele trimise de la alte gazde. Pentru a face acest lucru corect, fișierele de servicii (5) (de obicei găsite în / etc ) trebuie să aibă următoarea intrare:

syslog 514 / udp

Dacă această intrare lipsește, syslogd nu poate primi mesaje la distanță și nici nu le trimite, deoarece portul UDP nu poate fi deschis. În schimb, syslogd va muri imediat, aruncând un mesaj de eroare.

Pentru a determina ca mesajele să fie redirecționate către o altă gazdă, înlocuiți linia normală de fișiere din fișierul syslog.conf cu numele gazdei către care vor fi trimise mesajele prefixate cu un @.

De exemplu, pentru a trimite toate mesajele către o gazdă la distanță folosind următoarea intrare syslog.conf :

# Exemplu de fișier de configurare syslogd pentru # mesaje către o gazdă la distanță înainte toate. *. * @hostname

Pentru a redirecționa toate mesajele kernel-ului către o gazdă la distanță, fișierul de configurare va fi după cum urmează:

# Fișier de configurare pentru a transmite toate mesajele # kernel unei gazde de la distanță. kern. * @hostname

Dacă numele gazdei la distanță nu poate fi rezolvat la pornire, deoarece server-ul de nume ar putea să nu fie accesibil (poate fi pornit după syslogd), nu trebuie să vă faceți griji. Syslogd va reîncerca să rezolve numele de zece ori și apoi să se plângă. O altă posibilitate de a evita acest lucru este plasarea numelui de gazdă în / etc / hosts .

Cu syslogd- uri normale, veți primi syslog-bucle dacă trimiteți mesaje primite de la o gazdă la distanță către aceeași gazdă (sau mai complicată pentru oa treia gazdă care o trimite înapoi la primul gazdă și așa mai departe). În domeniul meu (Infodrom Oldenburg) am obținut în mod accidental unul și discurile noastre au fost completate cu același mesaj unic. :-(

Pentru a evita acest lucru în alte momente, niciun mesaj care a fost primit de la o gazdă la distanță nu mai este trimis altui (sau aceleași) gazde la distanță. Dacă există scenarii în care acest lucru nu are sens, vă rugăm să renunțe la mine (Joey) o linie.

Dacă gazda la distanță este localizată în același domeniu ca și gazda, syslogd rulează, numai numele de gazdă simplu va fi înregistrat în loc de întregul fișier.

Într-o rețea locală puteți furniza un server centralizat de jurnal pentru a avea toate informațiile importante păstrate pe o singură mașină. Dacă rețeaua este alcătuită din domenii diferite, nu trebuie să vă plângeți să vă înregistrați nume complet calificate în loc de nume de gazde simple. Poate doriți să utilizați caracteristica-strip a domeniului acestui server. Puteți spune syslogd-ului să desființeze mai multe domenii decât cel în care se află serverul și să înregistreze nume de gazdă simple.

Folosind opțiunea -l există și posibilitatea de a defini gazde unice ca mașini locale. Acest lucru, de asemenea, duce la logarea doar numele lor de gazdă simple și nu fqdns.

Soclul UDP utilizat pentru a redirecționa mesaje către gazde de la distanță sau pentru a primi mesaje de la acestea este deschis numai atunci când este necesar. În versiuni anterioare lui 1.3-23 a fost deschisă de fiecare dată, dar nu a fost deschisă pentru citire sau redirecționare.

Ieșirea la țevi numite (FIFO)

Această versiune de syslogd are suport pentru ieșirea logării la țevi numite (fifos). O țintă FIFO sau numită poate fi utilizată ca destinație pentru mesajele de jurnal prin prefixarea unui simbol pipy (`` | '') cu numele fișierului. Acest lucru este util pentru depanare. Rețineți că FIFO trebuie să fie creat cu comanda mkfifo înainte de a începe syslogd.

Următorul fișier de configurare rutează mesajele de depanare de la kernel la un FIFO:

# Configurație de exemplu pentru depanarea kernelului # mesaje NUMAI la / usr / adm / debug, care este o conductă numită #. kern = debug | / usr / adm / debug

Preocupări privind instalarea

Există probabil un aspect important atunci când instalați această versiune de syslogd. Această versiune a syslogd depinde de formatarea corectă a mesajelor de către funcția syslog. Funcționarea funcției syslog din bibliotecile partajate sa schimbat undeva în regiunea libc.so.4 [2-4] .n. Schimbarea specifică a fost de a termina mesajul înainte de al transmite în socket-ul / dev / log . Funcționarea corectă a acestei versiuni a syslogd-ului depinde de nulitatea terminării mesajului.

Această problemă se va manifesta în mod obișnuit dacă se folosesc binare vechi legate în mod static în sistem. Binarele care utilizează versiunile vechi ale funcției syslog vor determina înregistrarea liniilor goale urmate de mesajul cu primul caracter din mesajul eliminat. Relocarea acestor binare către versiuni mai noi ale bibliotecilor comune va corecta această problemă.

Atât syslogd (8), cât și klogd (8) pot fi executate fie din init (8), fie pornită ca parte a secvenței rc. *. Dacă este pornit de la init, opțiunea -n trebuie să fie setată, altfel veți primi tone de daemon syslog. Acest lucru se datorează faptului că init (8) depinde de ID-ul procesului.

Amenintari de securitate

Există posibilitatea ca daemonul syslogd să fie folosit ca un canal pentru un atac de refuz al serviciului. Mulțumesc lui John Morrison (jmorriso@rflab.ee.ubc.ca) pentru că mă avertizează asupra acestui potențial. Un program necinstit (mer) ar putea foarte ușor să inunde daemonul syslogd cu mesaje syslog, rezultând că fișierele de jurnal consumă tot spațiul rămas din sistemul de fișiere . Activarea înregistrării pe prizele de domenii inet va expune, desigur, un sistem la riscuri în afara programelor sau persoanelor fizice de pe mașina locală.

Există o serie de metode de protejare a unei mașini:

  1. Implementați firewall-ul kernel-ului pentru a limita care gazde sau rețele au acces la mufa 514 / UDP.
  2. Logarea poate fi direcționată către un sistem de fișiere izolat sau non-root care, dacă este umplut, nu va afecta mașina.
  3. Sistemul de fișiere ext2 poate fi utilizat care poate fi configurat pentru a limita un anumit procent dintr-un sistem de fișiere la utilizare numai de root. Rețineți că acest lucru va necesita syslogd să fie rulat ca proces non-root. De asemenea, rețineți că acest lucru va împiedica utilizarea logării la distanță, deoarece syslogd nu va putea să se lege de soclul 514 / UDP.
  4. Dezactivarea socketurilor de domenii inet va limita riscul pentru mașina locală.
  5. Utilizați pasul 4 și, dacă problema persistă și nu este secundară unui program / daemon necinstit, obțineți o lungime de tijă de sucker * de 3,5 ft (aproximativ 1 metru) și discutați cu utilizatorul în cauză. Sudura def. --- 3/4, 7/8 sau 1in. oțel întărit, filetat la fiecare capăt. Utilizarea primară în industria petrolieră din Dakota de Vest de Nord și alte locații pentru pomparea uleiului "suge" din puțurile de petrol. Utilizările secundare se referă la construirea loturilor de hrană pentru bovine și la tratarea persoanelor ocazionale recalcitrante sau beligerante.

Debugging

Când debugging-ul este activat folosind opțiunea -d, atunci syslogd va fi foarte verbose scriind o mare parte din ceea ce face pe stdout. Ori de câte ori fișierul de configurare este recitit și re-analizat, veți vedea o tabelă, corespunzătoare structurii interne de date. Acest tabel cuprinde patru câmpuri:

număr

Acest câmp conține un număr de serie pornind de la zero. Acest număr reprezintă poziția din structura internă a datelor (adică matricea). Dacă este lăsat un număr, atunci este posibil să existe o eroare în linia corespunzătoare din /etc/syslog.conf .

model

Acest câmp este complicat și reprezintă exact structura internă. Fiecare coloană reprezintă o facilitate (consultați syslog (3)). După cum puteți vedea, există încă unele facilități rămase libere pentru uzul anterior, numai cele mai stânga sunt folosite. Fiecare câmp dintr-o coloană reprezintă prioritățile (consultați syslog (3)).

acțiune

Acest câmp descrie acțiunea specială care are loc de fiecare dată când se primește un mesaj care se potrivește cu modelul. Consultați pagina de control syslog.conf (5) pentru toate acțiunile posibile.

argumente

Acest câmp afișează argumente suplimentare pentru acțiunile din ultimul câmp. Pentru înregistrarea fișierelor, acesta este numele fișierului pentru jurnalul de fișiere; pentru logarea utilizatorilor aceasta este o listă de utilizatori; pentru logare la distanță, acesta este numele de gazdă al aparatului la care vă conectați; pentru consola-logging aceasta este consolă folosită; pentru tty-logging acesta este tty specificat; peretele nu are argumente suplimentare.

Vezi si

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

colaboratori

Syslogd este preluat din surse BSD, Greg Wettstein (greg@wind.enjellic.com) a efectuat portul către Linux , Martin Schulze (joey@linux.de) a rezolvat câteva erori și a adăugat câteva caracteristici noi. Klogd a fost inițial scris de Steve Lord (lord@cray.com), Greg Wettstein a făcut îmbunătățiri majore.

Dr. Greg Wettstein
Dezvoltarea sistemelor enjelice

Oncologie Cercetare Departamentul de Calcul
Centrul de Cancer Roger Maris
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Departamentul de Informatică
Universitatea Edinburgh, Scoția
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Important: Utilizați comanda om ( % man ) pentru a vedea cum se utilizează o comandă pe computerul dvs. particular.

Articole similare