Projekt logowania odpowiada na trzy pytania: który proces wytworzył wpis, gdzie ten wpis trafia i jak długo przetrwa. OpenVPN może pisać do pliku, przekazywać komunikaty do loggera systemowego albo zostawić je temu, co przechwyci menedżer usług, i nie są to trzy kopie jednego strumienia. Każdy wybór zmienia to, kto odpowiada za rotację, który użytkownik może odczytać wynik i co dzieje się podczas startu. Rozstrzygnij te kwestie przed incydentem, bo potem odziedziczysz to, co zostało skonfigurowane.

Co demon naprawdę robi z dyrektywą

Dyrektywy nie są abstrakcjami; każda decyduje, gdzie proces zapisuje swoje komunikaty. log /path otwiera ten plik, log-append /path otwiera go do dopisywania, a syslog przekazuje komunikaty lokalnemu loggerowi systemowemu przez swoje gniazdo. Bez żadnej z nich wyjście trafia na standardowe wyjście, a menedżer usług decyduje, co dzieje się dalej. Przeczytaj obowiązującą jednostkę i profil razem, zanim uznasz, że demon ignoruje twoją konfigurację.

Ostatni przypadek jest typowy dla instalacji z pakietu i wyjaśnia, dlaczego dwóch administratorów nie zgadza się co do miejsca logu. Jeden czyta journal jednostki, drugi plik, którego demon nigdy nie zapisał.

Sprawdź działającą konfigurację, a nie plik na dysku. Nadpisanie jednostki typu drop-in albo plik środowiskowy mogą zmienić obowiązującą dyrektywę bez dotykania profilu, który czytasz.

log obcina, log-append nie

log obcina istniejący plik, gdy dyrektywa zaczyna obowiązywać, więc restart usuwa dowody sprzed niego. log-append zachowuje to, co jest, i dopisuje. Żadna z opcji nic nie rotuje i żadna nie otwiera pliku ponownie sama z siebie, dlatego rotacja wymaga współpracy.

Jeśli rotacja zmieni nazwę pliku, a demon nadal pisze do starego deskryptora, nowy plik pozostanie pusty, a zużycie dysku będzie rosnąć w pliku o zmienionej nazwie. Zasygnalizuj procesowi ponowne otwarcie albo rotuj strategią kopiuj-i-obetnij i zaakceptuj okno kopiowania.

Katalog, własność i uprawnienia są częścią projektu. Demon może po starcie działać jako użytkownik bez uprawnień, a katalog utworzony przez roota przy instalacji może wtedy nie być zapisywalny. Przygotuj go w pakowaniu lub procesie wdrożenia, zamiast naprawiać uprawnienia podczas incydentu.

Menedżer usług trzyma drugą kopię

systemd domyślnie przechwytuje standardowe wyjście i standardowe błędy, więc jednostka bez jawnego przekierowania ma już log. Dodanie dyrektywy plikowej daje dwa strumienie o różnej retencji, różnych czytelnikach i różnych znacznikach czasu.

To nie jest automatycznie błędne, ale musi być decyzją. Zatrzymaj wpis startowy w journalu, bo błędy sprzed powstania skonfigurowanego pliku nie pojawiają się nigdzie indziej. Potem uczyń plik autorytatywnym dla zdarzeń w stanie ustalonym i zapisz to w runbooku. Dwa autorytatywne strumienie oznaczają dwie odpowiedzi na każde pytanie.

Potwierdź wybór testem, który celowo zawodzi. Uruchom demona z nieczytelnym certyfikatem i sprawdź, który strumień zapisuje błąd.

Szczegółowość to nie to samo co użyteczny detal

Wyższy poziom verb dodaje więcej linii, a po pewnym punkcie linie, których nikt nie czyta. Poziom 3 to rozsądny stan ustalony dla większości wdrożeń, a poziom 4 i wyższe pasują do ograniczonego śledztwa ze znanym pytaniem. Tłumienie powtórzeń zmniejsza szum, ale nie może ukrywać, jak często zdarzenie się powtarza. Ustaw poziom, który możesz utrzymać, i podnoś go tylko na nazwane śledztwo z końcem.

Zatrzymaj tożsamość instancji i znaczniki czasu we wpisie. Ponowne połączenie wygląda dokładnie jak pierwsze, gdy plik jest uzupełniany od miesięcy, a nazwy instancji brakuje.

Uważaj, co jeszcze trafia do tego pliku. Przekierowane wyjście może zawierać tekst wywołanych skryptów, a program pomocniczy wypisujący swoje środowisko umieszcza dane uwierzytelniające i ścieżki kluczy w czytelnym logu. Traktuj dostęp do logu jako decyzję bezpieczeństwa, nawet gdy sam demon nie wypisuje nic wrażliwego.

Rotacja, retencja i sygnały, które przeładowują

Ustal retencję z osobą odpowiedzialną za dysk i ustaw ją, zanim wolumen zdecyduje za ciebie. Sygnał przeładowania nie jest poleceniem konserwacji logu: wysłanie niewłaściwego restartuje tunel i rozłącza każdego użytkownika. Zapisz procedurę ponownego otwarcia obok reguły rotacji, aby obie się nie rozjechały.

Wynikiem powinna być usługa, którą operator potrafi opisać: jeden autorytatywny strumień, każde zdarzenie umieszczone w cyklu życia i wpis dostępny bez zbierania wszystkich plików zawierających sekrety na hoście. Ten opis jest testem akceptacyjnym projektu i tanio sprawdzić go przed następnym incydentem.

Powiązane artykuły