Sysklogd udostępnia dwa narzędzia systemowe, które zapewniają obsługę rejestrowania systemu i pułapkowania komunikatów jądra. Obsługa gniazd internetowych i unixowych umożliwia temu pakietowi narzędziowemu zarówno logowanie lokalne, jak i zdalne.
Rejestrowanie systemu odbywa się przez wersjęsyslogd(8) pochodzą ze źródłowych źródeł BSD. Obsługa rejestrowania jądra zapewniona jest przezklogd(8) narzędzie, które umożliwia rejestrowanie jądra w trybie autonomicznym lub jako klient syslogd.
Syslogd zapewnia rodzaj rejestrowania, którego używa wiele nowoczesnych programów. Każda zarejestrowana wiadomość zawiera co najmniej pole czasowe i nazwę hosta, zwykle także pole nazwy programu, ale zależy to od tego, na ile wiarygodny jest program logowania.
Podczas, gdysyslogd źródła zostały mocno zmodyfikowane, a kilka notatek jest w porządku. Przede wszystkim podjęto systematyczne próby upewnienia się, że syslogd działa zgodnie z domyślnym, standardowym zachowaniem BSD. Drugą ważną kwestią, na którą należy zwrócić uwagę, jest to, że ta wersja syslogd współdziała w sposób transparentny z wersją syslog znalezioną w standardowych bibliotekach. Jeśli plik binarny powiązany ze standardowymi bibliotekami współdzielonymi nie działa poprawnie, chcielibyśmy podać przykład anormalnego zachowania.
Główny plik konfiguracyjny /etc/syslog.conf lub alternatywny plik, podany przy pomocy-fa opcja, jest odczytywana przy uruchomieniu. Wszelkie linie zaczynające się od znaku skrótu (`` # '') i puste wiersze są ignorowane. Jeśli podczas parsowania wystąpi błąd, cała linia jest ignorowana.
Streszczenie
syslogd -za gniazdo elektryczne -re -fa plik konfiguracyjny -h -l lista hostów -m interwał -n -p gniazdo elektryczne -r -s lista domen -v -x
Opcje
-za gniazdo elektryczne
Za pomocą tego argumentu możesz określić dodatkowe gniazdasyslogd musi słuchać. Jest to konieczne, jeśli zamierzasz uruchomić demona w środowisku chroot (). Możesz użyć maksymalnie 19 dodatkowych gniazd. Jeśli Twoje środowisko potrzebuje jeszcze więcej, musisz zwiększyć symbolMAXFUNIX w pliku źródłowym syslogd.c. Przykład demona chroot () opisują osoby z OpenBSD pod adresem http://www.psionic.com/papers/dns.html.
-re
Włącza tryb debugowania. Dzięki temu demon nie będzie kontynuowałwidelec(2), aby ustawić się w tle, ale w przeciwieństwie do tego pozostanie na pierwszym planie i napisać dużo informacji debugowania na bieżącej tty. Zobacz sekcję DEBUGGING, aby uzyskać więcej informacji.
-fa plik konfiguracyjny
Podaj alternatywny plik konfiguracyjny zamiast /etc/syslog.conf , który jest domyślny.
-h
Domyślnie syslogd nie przekazuje wiadomości otrzymanych od zdalnych hostów. Określenie tego przełącznika w wierszu polecenia spowoduje, że demon dziennika będzie przekazywał wszystkie zdalne komunikaty, które otrzyma, do zdefiniowanych hostów przekazujących.
-l lista hostów
Podaj nazwę hosta, która powinna być logowana tylko za pomocą prostej nazwy hosta, a nie fqdn. Wiele hostów może być określonych przy użyciu separatora dwukropka (``: '').
-m interwał
Thesyslogd regularnie rejestruje znacznik czasu znacznika. Domyślny interwał pomiedzy dwa -- ZNAK -- linie to 20 minut. Można to zmienić za pomocą tej opcji. Ustawianie interwał do zera wyłącza go całkowicie.
-n
Unikaj automatycznego tworzenia tła. Jest to szczególnie potrzebne, jeśli:syslogd jest uruchamiany i kontrolowany przezw tym(8).
-p gniazdo elektryczne
Zamiast tego możesz podać alternatywne gniazdo domeny unix / dev / log .
-r
Ta opcja umożliwi urządzeniu otrzymywanie wiadomości z sieci za pomocą gniazda domeny internetowej z usługą syslog (patrz (5)). Domyślnie nie otrzymujesz żadnych wiadomości z sieci.
Ta opcja została wprowadzona w wersji 1.3 pakietu sysklogd. Zwróć uwagę, że domyślne zachowanie jest przeciwieństwem zachowania starszych wersji, więc być może trzeba to włączyć.
-s lista domen
Podaj nazwę domeny, która powinna zostać usunięta przed zalogowaniem. Wiele domen można określić przy użyciu separatora dwukropka (``: ''). Należy pamiętać, że nie można podać żadnych subdomen, ale tylko całe domeny. Na przykład, jeśli-s north.de jest określona, a rejestracja hosta zostaje rozwiązana na satu.infodrom.north.de żadna domena nie zostanie obcięta, musisz podać dwie domeny, takie jak:-s north.de:infodrom.north.de.
-v
Wydrukuj wersję i zakończ.
-x
Wyłącz wyszukiwanie nazw podczas odbierania komunikatów zdalnych. Pozwala to uniknąć zakleszczeń, gdy serwer nazw działa na tym samym komputerze, na którym działa demon syslog.
Sygnały
Syslogd reaguje na zestaw sygnałów. Możesz łatwo wysłać sygnał dosyslogd używając następujących:
kill -SIGNAL `cat / var / run / syslogd.pid`
Sighup
To pozwalasyslogd przeprowadzić ponowną inicjalizację. Wszystkie otwarte pliki są zamknięte, plik konfiguracyjny (domyślnie jest /etc/syslog.conf ) zostaną ponownie przeczytane isyslog(3) obiekt jest ponownie uruchamiany.
SIGTERM
Thesyslogd umrze.
SIGINT, SIGQUIT
Jeśli debugowanie jest włączone, są one ignorowane, w przeciwnym raziesyslogd umrze.
SIGUSR1
Włącz / wyłącz debugowanie. Ta opcja może być używana tylko wtedy, gdysyslogd zaczyna się od-re opcja debugowania.
SIGCHLD
Poczekaj na dziecko, jeśli niektórzy się urodzili, z powodu wiadomości o ścianach.
Różnice w składni pliku konfiguracji
Syslogd używa nieco innej składni pliku konfiguracyjnego niż oryginalne źródła BSD. Pierwotnie wszystkie wiadomości o określonym priorytecie i wyżej zostały przekazane do pliku dziennika.
Na przykład następujący wiersz spowodował WSZYSTKIE dane wyjściowe z demonów za pomocą obiektów demonów (debugowanie jest najniższym priorytetem, więc każdy wyższy będzie również pasował), aby przejść do / usr / adm / daemons :
# Przykładowy plik syslog.conf daemon.debug / usr / adm / daemons
Zgodnie z nowym schematem zachowanie to pozostaje takie samo. Różnica polega na dodaniu czterech nowych specyfikatorów, gwiazdki (*) wieloznacznik, znak równania (=), wykrzyknik (!) i znak minus (-).
The* określa, że wszystkie wiadomości dla określonego obiektu mają być kierowane do miejsca docelowego. Należy zauważyć, że to zachowanie jest zdegenerowane z określeniem poziomu priorytetu debugowania. Użytkownicy wskazali, że notacja gwiazdkowa jest bardziej intuicyjna.
The= symbol wieloznaczny służy do ograniczenia logowania do określonej klasy priorytetu. Pozwala to, na przykład, kierować tylko komunikaty debugowania do określonego źródła rejestrowania.
Na przykład następujący wiersz w syslog.conf będzie kierował komunikaty debugowania ze wszystkich źródeł do / usr / adm / debug plik.
# Sample syslog.conf *. = Debug / usr / adm / debug
The! służy do wykluczania rejestrowania określonych priorytetów. Wpływa to na wszystkie (!) Możliwości określania priorytetów.
Na przykład poniższe wiersze będą rejestrować wszystkie wiadomości z wiadomości e-mail obiektu, z wyjątkiem tych, które mają priorytet informacji / usr / adm / mail plik. Wszystkie wiadomości od news.info (w tym) do news.crit (z wyłączeniem) będą rejestrowane w pliku / usr / adm / news plik.
# Sample syslog.conf mail. *; Mail.! = Info / usr / adm / mail news.info; nowości.! Crit / usr / adm / news
Możesz używać go intuicyjnie jako specyfikatora wyjątków. Powyższa interpretacja jest po prostu odwrócona. Możesz tego użyć
mail.none
lub
Poczta.!*
lub
mail.! debug
aby pominąć każdą wiadomość, która pochodzi z obiektu pocztowego. Jest dużo miejsca do zabawy. :-)
The- może być użyty tylko do prefiksowania nazwy pliku, jeśli chcesz pominąć synchronizację pliku po każdym zapisie do niego.
Może to wymagać pewnej aklimatyzacji w przypadku osób używających czystego zachowania BSD, ale testerzy wskazali, że ta składnia jest nieco bardziej elastyczna niż zachowanie BSD. Pamiętaj, że te zmiany nie powinny mieć wpływu na standardsyslog.conf(5) pliki. Musisz specjalnie zmodyfikować pliki konfiguracyjne, aby uzyskać ulepszone zachowanie.
Wsparcie dla zdalnego logowania
Modyfikacje te zapewniają obsługę sieci dla obiektu syslogd. Obsługa sieci oznacza, że komunikaty mogą być przekazywane z jednego węzła z uruchomionym syslogd do innego węzła z uruchomionym syslogd, gdzie będą faktycznie zalogowane do pliku na dysku.
Aby to włączyć, musisz określić-r opcja w wierszu poleceń. Domyślne zachowanie tosyslogd nie słucha sieci.
Strategia polega na tym, aby syslogd nasłuchiwał na gnieździe domeny unix dla generowanych lokalnie komunikatów. To zachowanie pozwoli syslogd na współdziałanie z dziennikiem syslog znalezionym w standardowej bibliotece C. W tym samym czasie syslogd nasłuchuje na standardowym porcie syslog dla wiadomości przekazywanych z innych hostów. Aby to działało poprawnieusługi(5) pliki (zazwyczaj znajduje się w /itp ) musi mieć następujący wpis:
syslog 514 / udp
Jeśli ten wpis nie istniejesyslogd nie można odbierać komunikatów zdalnych ani wysyłać ich, ponieważ port UDP nie może zostać otwarty. Zamiast, syslogd umrze natychmiast, wydmuchując komunikat o błędzie.
Aby spowodować przesłanie wiadomości do innego hosta, zastąp normalny wiersz pliku w syslog.conf plik z nazwą hosta, do którego wiadomości mają być wysyłane, poprzedzony znakiem @.
Na przykład, aby przekazać dalejWSZYSTKO wiadomości do zdalnego hosta za pomocą następujących syslog.conf wejście:
# Przykładowy plik konfiguracyjny syslogd do # komunikatów do zdalnego hosta przesyła wszystko. *. * @hostname
Aby przekazać wszystkiejądro komunikaty do zdalnego hosta plik konfiguracyjny byłby następujący:
# Przykładowy plik konfiguracyjny do przekazywania wszystkich komunikatów # jądra do zdalnego hosta. kern. * @hostname
Jeśli zdalnej nazwy hosta nie można rozwiązać przy uruchomieniu, ponieważ serwer nazw może nie być dostępny (może być uruchomiony po syslogd), nie musisz się martwić.Syslogd spróbuje powtórzyć imię dziesięć razy, a następnie narzekać. Inną możliwością uniknięcia tego jest umieszczenie nazwy hosta w / etc / hosts .
Z normalnymsyslogds dostaniesz pętle syslog, jeśli wyślesz wiadomości, które zostały odebrane ze zdalnego hosta do tego samego hosta (lub bardziej skomplikowane do trzeciego hosta, który odsyła go z powrotem do pierwszego, i tak dalej). W mojej domenie (Infodrom Oldenburg) przypadkowo dostaliśmy jeden, a nasze dyski wypełniły się tą samą pojedynczą wiadomością. :-(
Aby tego uniknąć w późniejszym czasie, żadne wiadomości odebrane od zdalnego hosta nie są już wysyłane do innego (lub tego samego) zdalnego hosta. Jeśli są scenariusze, w których to nie ma sensu, proszę daj mi (Joey) wiersz.
Jeśli host zdalny znajduje się w tej samej domenie co host,syslogd jest uruchomiony, tylko prosta nazwa hosta zostanie zarejestrowana zamiast całego pliku fqdn.
W sieci lokalnej możesz dostarczyć centralny serwer dziennika, aby wszystkie ważne informacje były przechowywane na jednym komputerze. Jeśli sieć składa się z różnych domen, nie musisz narzekać na rejestrowanie w pełni kwalifikowanych nazw zamiast prostych nazw hostów. Możesz użyć funkcji strip-domain-s tego serwera. Możesz powiedziećsyslogd aby usunąć kilka domen innych niż ta, w której znajduje się serwer i logować tylko proste nazwy hostów.
Używając-l opcja istnieje również możliwość zdefiniowania pojedynczych hostów jako maszyn lokalnych. To również powoduje, że rejestrowane są tylko ich proste nazwy hostów, a nie fqdns.
Gniazdo UDP używane do przesyłania komunikatów do hostów zdalnych lub odbierania z nich wiadomości jest otwierane tylko wtedy, gdy jest potrzebne. W wersjach wcześniejszych niż 1.3-23 był otwierany za każdym razem, ale nie był otwierany odpowiednio do czytania lub przekazywania.
Wyjście do nazwanych potoków (FIFO)
Ta wersja syslogd obsługuje zapisywanie danych wyjściowych do nazwanych potoków (fifos). Fizycznie lub nazwany potok może być użyty jako miejsce docelowe dla komunikatów dziennika, poprzedzając nazwę pliku pipy ("` | "). Jest to przydatne do debugowania. Zauważ, że fifo musi zostać utworzone za pomocą komendy mkfifo przed uruchomieniem syslogd.
Poniższy plik konfiguracyjny trasuje komunikaty debugowania z jądra do fifo:
# Przykładowa konfiguracja do kierowania debugowania jądra # wiadomości TYLKO do / usr / adm / debug, który jest potokiem o numerze #. kern. = debug | / usr / adm / debug
Problemy z instalacją
Podczas instalowania tej wersji syslogd istnieje prawdopodobnie jedna ważna uwaga. Ta wersja syslogd jest zależna od właściwego formatowania wiadomości przez funkcję syslog. Funkcjonowanie funkcji syslog w dzielonych bibliotekach zmieniło się gdzieś w regionie libc.so.4. 2-4 .n. Konkretną zmianą było zakończenie wiadomości przed jej przesłaniem do / dev / log gniazdo elektryczne. Prawidłowe działanie tej wersji syslogd zależy od zerowego zakończenia komunikatu.
Ten problem zwykle objawia się, jeśli w systemie są używane stare statycznie połączone pliki binarne. Pliki binarne używające starszych wersji funkcji syslog powodują, że puste linie są rejestrowane, a następnie wiadomość z usuniętym pierwszym znakiem w komunikacie. Ponowne połączenie tych plików binarnych z nowszymi wersjami współużytkowanych bibliotek rozwiąże ten problem.
Obojesyslogd(8) iklogd(8) może być uruchamiany z init (8) lub uruchomiony jako część sekwencji rc. *. Jeśli jest uruchomiony z init, opcja -n musi być ustawiony, w przeciwnym razie dostaniesz mnóstwo demonów syslog. To dlatego, żew tym(8) zależy od ID procesu.
Zagrożenia bezpieczeństwa
Istnieje możliwość, że demon syslogd będzie używany jako kanał do ataku typu "odmowa usługi". Podziękowania dla John Morrison ([email protected]) za poinformowanie mnie o tym potencjale. Nieuczciwy program (mer) może bardzo łatwo zalać demona syslogd komunikatami syslog, co spowoduje, że pliki dziennika zużyją całą pozostałą przestrzeń w systemie plików. Aktywacja rejestrowania w gniazdach domeny inet będzie oczywiście narażać system na ryzyko poza programami lub osobami na lokalnej maszynie.
Istnieje wiele metod ochrony maszyny:
- Zaimplementuj zaporę jądra, aby ograniczyć dostęp hostów lub sieci do gniazda 514 / UDP.
- Rejestrowanie może być skierowane na izolowany lub nie rootowy system plików, który, jeśli zostanie wypełniony, nie wpłynie negatywnie na maszynę.
- Można użyć systemu plików ext2, który można skonfigurować tak, aby ograniczał pewien procent systemu plików do użycia tylko przez root.UWAGA to wymaga, aby syslogd działał jako proces inny niż root. RÓWNIEŻ UWAGA to uniemożliwi użycie zdalnego rejestrowania, ponieważ syslogd nie będzie mógł powiązać z gniazdem 514 / UDP.
- Wyłączenie gniazd domeny inet ograniczy ryzyko do lokalnego komputera.
- Użyj kroku 4 i jeśli problem nadal występuje i nie jest drugorzędny wobec nieuczciwego programu / demona, uzyskaj 3,5 stopy (około 1 metra) długości sucker * i rozmawiaj z użytkownikiem, o którym mowa. Sucker rod def. --- 3/4, 7/8 lub 1in. hartowany pręt stalowy, z gwintem zewnętrznym na każdym końcu. Podstawowe zastosowanie w przemyśle naftowym w zachodniej Dakocie Północnej i innych miejscach do pompowania "ssania" ropy naftowej z szybów naftowych. Wtórne zastosowania służą do konstruowania partii paszy dla bydła i do radzenia sobie z okazjonalną oporną lub wojującą osobą.
Debugowanie
Gdy debugowanie jest włączone przy użyciu-re opcja następniesyslogd będzie bardzo gadatliwy, pisząc wiele z tego, co robi na stdout. Po każdym ponownym odczytaniu pliku konfiguracyjnego zobaczysz tabelę odpowiadającą wewnętrznej strukturze danych. Ta tabela składa się z czterech pól:
numer
To pole zawiera numer seryjny rozpoczynający się od zera. Liczba ta reprezentuje pozycję w wewnętrznej strukturze danych (to znaczy w macierzy). Jeśli jedna liczba zostanie pominięta, może wystąpić błąd w odpowiednim wierszu /etc/syslog.conf .
wzór
To pole jest trudne i dokładnie reprezentuje wewnętrzną strukturę. Każda kolumna oznacza obiekt (patrzsyslog(3)). Jak widać, niektóre urządzenia są nadal wolne do użytku, a tylko lewe są używane. Każde pole w kolumnie reprezentuje priorytety (patrzsyslog(3)).
akcja
To pole opisuje konkretną akcję, która ma miejsce, gdy odbierany jest komunikat zgodny z wzorcem. Patrz:syslog.conf(5) strona podręcznika dla wszystkich możliwych działań.
argumenty
To pole pokazuje dodatkowe argumenty dla działań w ostatnim polu. Dla rejestrowania plików jest to nazwa pliku logu; dla logowania użytkowników jest to lista użytkowników; dla zdalnego logowania jest to nazwa hosta komputera do zalogowania; dla logowania konsoli jest używana konsola; dla rejestrowania tty jest to określone tty; ściana nie ma dodatkowych argumentów.
Zobacz też
rejestrator(1), syslog(2), (5)
Współpracownicy
Syslogd pochodzi ze źródeł BSD, Greg Wettstein ([email protected]) wykonał port dla Linuxa, Martin Schulze ([email protected]) naprawił kilka błędów i dodał kilka nowych funkcji.Klogdzostał pierwotnie napisany przez Steve'a Lorda ([email protected]), Greg Wettstein dokonał znacznych ulepszeń.
Dr Greg WettsteinRozwój systemów Enjellic Dział Obliczeniowy Zakładu Badań OnkologiiCentrum Cancer Roger MarisFargo, ND[email protected] Stephen TweedieKatedra InformatykiEdinburgh University, Szkocja[email protected] Juha Virtanen[email protected] Shane Alderton[email protected] Martin SchulzeInfodrom Oldenburg[email protected] Ważny: Użyj mężczyzna dowództwo ( % mężczyzna ), aby zobaczyć, jak polecenie jest używane na danym komputerze. Powiązane artykuły




