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 desyslogd(8) derivate din sursele BSD stoc. Suportul pentru logarea kernel-ului este furnizat deklogd(8) care permite logarea kernel-ului să fie efectuată fie în mod autonom, fie ca client al 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.
In timp cesyslogd sursele au fost puternic modificate o serie de 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 dosar alternativ, dat cu-f opțiune, se citește 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
syslogd -A priză -d -f fișier de configurare -h -l ListaGazde -m interval -N -p priză -r -s domainlist -v -X
Opțiuni
-A priză
Folosind acest argument puteți specifica socket-uri suplimentare de la acestasyslogd 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 simbolulMAXFUNIX în 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, daemonul nu va continua afurculiţă(2) să se stabilească în fundal, dar opus acelei șederi în prim-plan și să scrie multe informații de depanare pe actualul tty. Consultați secțiunea DEBUGGING pentru mai multe informații.
-f fișier 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.
-l ListaGazde
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 un marcaj de timp. Valoarea implicită interval între două -- MARCĂ -- linii este de 20 de minute. Acest lucru poate fi schimbat cu această opțiune. Setarea interval până la zero îl dezactivează în întregime.
-N
Evitați auto-fundal. Acest lucru este necesar mai ales dacăsyslogd este inițiată și controlată deinit(8).
-p priză
Puteți specifica o socket alternativ de domeniu 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.
-s domainlist
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 gazdă rezolvă la satu.infodrom.north.de nici un domeniu nu va fi tăiat, va trebui să specificați două domenii cum ar fi:- 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. S-ar putea să trimiteți cu ușurință un semnalsyslogd utilizând următoarele:
ucide -SIGNAL `cat / var / run / syslogd.pid`
SIGHUP
Acest lucru permitesyslogd efectuați o reinițializare. Toate fișierele deschise sunt închise, fișierul de configurare (implicit este /etc/syslog.conf ) va fi recitit șisyslog(3) instalația este pornită din nou.
SIGTERM
syslogd va muri.
SIGINT, SIGQUIT
Dacă este activată depanarea, acestea sunt ignorate, altfelsyslogd va muri.
SIGUSR1
Comutați întreruperea / dezactivarea depanării. Această opțiune poate fi utilizată numai dacăsyslogd este pornită cu-d depanare opțiune.
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 utilizând facilitățile daemon (debugul este cea mai mică prioritate, deci fiecare dintre ele 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 specificatori noi, asteriscul (*) wildcard, 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ă.
= 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 în syslog.conf ar direcționa mesajele de la toate sursele la / Usr / adm / depanare fişier.
# Exemplul syslog.conf *. = Debug / usr / adm / debug
! 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 mail, cu excepția celor cu informații de prioritate către / Usr / adm / e-mail fişier. Și toate mesajele de la news.info (inclusiv) la news.crit (cu excepția) ar fi logate la / Usr / adm / stiri fişier.
# 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 standardulsyslog.conf(5) dosare. 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-r opțiune de pe linia de comandă. Comportamentul implicit este acelasyslogd nu vor asculta reteaua.
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 ca aceasta să funcționeze corectServicii(5) fișiere (de obicei găsite în / etc ) trebuie să aibă următoarea mențiune:
syslog 514 / udp
Dacă această intrare lipseștesyslogd nici nu pot primi mesaje la distanță și nici nu le pot trimite, deoarece portul UDP nu poate fi deschis. In 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 în syslog.conf fișier cu numele gazdei la care vor fi trimise mesajele prefixate cu un @.
De exemplu, pentru a redirecționaTOATE mesaje către o gazdă la distanță folosind următoarele syslog.conf intrare:
# Exemplu de fișier de configurare syslogd pentru # mesaje către o gazdă la distanță înainte toate. *. * @hostname
Pentru a transmite toatenucleu mesaje către o gazdă la distanță fișierul de configurare ar 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 normalsyslogds-ar obține 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 prima 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 de la distanță se află în același domeniu ca și gazda,syslogd se execută, numai numele de gazdă simplu va fi înregistrat în loc de fqdn întreg.
Î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 de domeniu strip-s de pe acest server. Puteți spunesyslogd să eliminați mai multe domenii decât cel în care este amplasat serverul și să înregistrați nume de gazdă simple.
Utilizarea-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 înaintea transmiterii acestuia către / Dev / log priză. 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ă.
Amandouasyslogd(8) șiklogd(8) fie poate fi rulat de la init (8), fie pornită ca parte a secvenței rc. *. Dacă este pornit de la init opțiunea -N trebuie să fie setată, în caz contrar, veți primi tone de daemon syslog. Asta pentru cainit(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 ([email protected]) 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:
- Implementați firewall-ul kernel-ului pentru a limita care gazde sau rețele au acces la mufa 514 / UDP.
- 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.
- 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.NOTĂ că acest lucru va necesita syslogd să fie rulat ca un proces non-root. ATENȚIE, de asemenea că acest lucru va împiedica utilizarea logării la distanță deoarece syslogd nu va putea să se lege de soclul 514 / UDP.
- Dezactivarea socketurilor de domenii inet va limita riscul pentru mașina locală.
- 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 depanarea este activată utilizând-d atuncisyslogd 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ă de date (adică matricea). Dacă un număr este lăsat în afară, este posibil să apară 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 (a se vedeasyslog(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 (vezisyslog(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țisyslog.conf(5) manpage 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 ([email protected]) a efectuat portul către Linux, Martin Schulze ([email protected]) a rezolvat câteva erori și a adăugat câteva caracteristici noi.klogda fost inițial scris de Steve Lord ([email protected]), Greg Wettstein a făcut îmbunătățiri majore.
Dr. Greg WettsteinDezvoltarea sistemelor enjelice Oncologie Cercetare Departamentul de CalculCentrul de Cancer Roger MarisFargo, ND[email protected] Stephen TweedieDepartamentul de InformaticăUniversitatea Edinburgh, Scoția[email protected] Juha Virtanen[email protected] Shane Alderton[email protected] Martin SchulzeInfodrom Oldenburg[email protected] Important: Folosește om comandă ( % om ) pentru a vedea cum se utilizează o comandă pe computerul dvs. particular. Articole similare