Prostym i skutecznym rozwiązaniem ogólnym jest użycie logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
Logcheck okresowo skanuje skutecznie wszystkie dzienniki (zaczynając od miejsca, w którym zostało przerwane ostatnim razem), filtruje to, co widzi, aby wyeliminować wszystko, co uważane jest za normalne, i opcjonalnie wysyła powiadomienia e-mailem o czymkolwiek, co nie pasuje do normalnych / rutynowych wzorców.
Główną ideą jest uważanie na pojawienie się poważnych wpisów w plikach dziennika, wszystkie z nich przez cały czas, abyś nie musiał.
Logcheck jest wysoce konfigurowalny (man logcheck
). Możesz skonfigurować wszystko, w tym:
- częstotliwość kontroli
- które pliki dziennika są sprawdzane
- co jest uważane za normalne vs nie
- gdzie wysłać e-mailem alerty (nieprawidłowe zdarzenia)
i więcej. Twoje wzorce ignorowania (normalne / rutynowe) znajdują się w wielu plikach w /etc/logcheck/ignore.d.* i możesz je dostosować do własnych potrzeb; głównie możesz chcieć dodać własne wzorce, aby je zignorować. Domyślny pakiet Ubuntu zawiera już obszerny zestaw plików z wzorcami ignorowania dla wielu usług, więc nie ma wiele do dodania, chyba że Twój system działa inaczej. Istnieją 3 zestawy wstępnie skonfigurowanych profili plików ignorowania: ignore.d.workstation , ignore.d.server i ignore.d.paranoid, z których można wybierać.
Główną ideą logcheck jest to, że różne usługi działające w systemie już rejestrują nieprawidłowe zdarzenia. Np. Sshd lub pam już rejestrują błędy uwierzytelnienia. Głównymi brakującymi komponentami są:
- filtrowanie tego, co jest normalne
- Alarmując serwis
Oba są dostarczane przez logcheck w wygodnym pakiecie. Możesz łączyć logcheck z dowolnym innym logowaniem. Na przykład iptables można skonfigurować tak, aby syslog rejestrował wszelkie próby połączenia sieciowego, które nie są wyraźnie dozwolone przez dodanie reguł:
iptables -A input -j LOG
iptables -A input -j DROP
natychmiast po wszystkich regułach zezwolenia.
Uważam, że logcheck jest o wiele bardziej pomocny niż logwatch (sugerowany w innych odpowiedziach), ponieważ jest dostarczany z bardzo dużą liczbą reguł, aby zignorować to, co uważa się za normalną aktywność. Rezultatem jest znacznie wyższy stosunek sygnału / szumu w ostrzeżeniach wysyłanych przez e-mail. YMMV.
Kolejną zaletą logcheck jest to, że jest on ortogonalny dla każdej logowanej usługi, więc nie występuje powielanie funkcji. Za każdym razem, gdy dodajesz nową usługę, która używa syslog
do rejestrowania zdarzeń, nienormalnych lub nie, do dowolnego pliku pod /var/log
, automatycznie otrzymujesz powiadomienia.
JAK:
Ponieważ jest logcheck
już wstępnie skonfigurowany, dwie linie u góry tej odpowiedzi zasadniczo pokrywają wszystko, czego potrzebujesz, aby zacząć. Po prostu zainstaluj i przejdź do górnego pliku konfiguracyjnego:
/etc/logcheck/logcheck.conf
aby zmienić adres e-mail, aby logcheck
otrzymywać powiadomienia e- mailem.
Oto bardziej przyjazne odniesienie do drugiego etapu . Ponieważ Ubuntu opiera się na Debianie, te instrukcje powinny również działać na Ubuntu.
Oto kolejna dobra referencja .
Po zainstalowaniu rozpoczyna się proces ciągłego doskonalenia. Z czasem dopracowujesz swoje zasady, aby ignorować wszystko, o czym już wiesz i co uważasz, że nie powinno cię to martwić. Ten proces udoskonalania jest tak prosty, jak dodawanie wierszy tekstu do pliku w ulubionym edytorze tekstu.
Każda linia w pliku zignorowanym jest rozszerzonym wyrażeniem regularnym (patrz man 7 regex
), ale możesz używać prostych ciągów, o ile odpowiadają one linii dziennika, którą chcesz zignorować. Wystarczy pamiętać, że znaki takie jak *
, ?
„+” []
, ()
są wyjątkowe w wyrażeniu regularnym, więc jeśli faktycznie pojawi się w linii z bali, trzeba by uciec im backslashem \
w ignorować plików.
Innymi słowy: jeśli pojawi się alert, którego nie chcesz otrzymywać, spójrz na linię logu, która została do Ciebie wysłana, i dodaj pasujący wzór, jako jedną linię do dowolnego pliku ignorowanego. Sugeruję użycie
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
jako osobistego pliku ignorowania. Gdzie <yourloglevel>
jest jeden z paranoid
, server
lub
workstation
(jak już wybrałeś w głównym pliku konfiguracyjnym:) /etc/logcheck/logcheck.conf
. Spójrz na przykłady w innych plikach ignorowania, aby zobaczyć, jak uwzględnić tekst, który zmienia się cały czas, np. Identyfikatory procesu lub znaczniki czasu. Istnieje wiele istniejących przykładów do nauki.
Ostatnia wskazówka: logcheck
zawiera przydatne narzędzie, logcheck-test
które jest bardzo przydatne do testowania nowych reguł. man logcheck-test
dla szczegółów.