Rejestrowanie zdarzeń w sieci, czyli konfiguracja SYSLOG-NG

Założenia:
– Posiadamy sieć w której są urządzenia CISCO.
– Adres serwera na którym będzie zainstalowany syslog-ng to: 10.1.4.100
– Chcemy agregować zdarzenia na jednym serwerze, z podziałem na odrębne pliki w zależności od źródła
– Posiadamy 3 urządzenia (routery CISCO) o adresach: 10.1.1.254/24, 10.1.2.254/24 oraz 10.1.3.254/24
Co nam potrzeba:
– serwer z Linuxem (np.  zainstalować Debiana – patrz porada „..instalacja linuxa poprzez PXE „)

A. instalujemy usługę syslog-ng (opis dla Debiana)

1. Logujemy się jako root na nasz serwer i w zależności od dostępu do Internetu instalujemy serwer syslog-ng:
– posiadamy dostęp do Internetu: wpisujemy  apt-get install syslog-ng
– nie posiadamy
– ściągamy paczkę syslog-ng dla wybranego przez nas systemu operacyjnego:
– architektura i386 (32-bitowy lub 64-bitowy)
– inne architektury na stronie: klik
– instalujemy paczkę poleceniem: dpkg -i nazwa_pliku.deb

B. konfiguracja usługi syslog-ng

1. Otwieramy do edycji plik konfiguracyjny usługi: nano /etc/syslog-ng/syslog-ng.conf
2. Jeżeli serwer ma logować tylko zdarzenia od wybranych naszych 3 urządzeń, to możemy usunąć wszystko poza wpisem options { … tutaj nie ruszamy … };
3. Poniżej wprowadzamy opis źródła z którego zbieramy logi  przez usługę (standardowo jest to transmisja udp na port 514): source siec { udp(ip(0.0.0.0) port(514)); };

———–
– Zakładamy, że logi będa zapisywane w katalogu: /home/SYSLOG/<router_x>/<rok>/<miesiąc>, gdzie x to numer 1 -3, naszego routera
– Nazewnictwo plików będzie zgodne ze schematem: Dzien_y-router_x.log, gdzie y to numer dnia miesiąca
———–

4. Ustalamy miejsce zapisywania plików z logami:
destination df_router_1 { file(„/home/SYSLOG/router_1/$R_YEAR/$R_MONTH/Dzien_$R_DAY-router_1.log” template(„$ISODATE <$FACILITY.$PRIORITY> $HOST $MSG\n”) template_escape(no)); };
destination df_router_2{ file(„/home/SYSLOG/router_2/$R_YEAR/$R_MONTH/Dzien_$R_DAY-router_2.log” template(„$ISODATE <$FACILITY.$PRIORITY> $HOST $MSG\n”) template_escape(no)); };
destination df_router_3{ file(„/home/SYSLOG/router_3/$R_YEAR/$R_MONTH/Dzien_$R_DAY-router_3.log” template(„$ISODATE <$FACILITY.$PRIORITY> $HOST $MSG\n”) template_escape(no)); };

5. Definujemy filtr, który ma za zadanie filtrować:
– informacje z tylko określonymi poziomami ważności (tzw. severity) – w przykładzie jest cały zakres (czyli jest nie potrzebny, ale dodałem aby było wiadomo gdzie można przycinać nie zmieniając ustawień na urządzeniu źródłowym)
– kierować informacje z okreslonych źródeł do określonych plików, zdefioniowanych w p-kcie 4.
filter f_router_1 {
host(10.1.1.254) and
//adres źródła
level(debug..emerg);
//poziom ważności komunikatu
};
filter f_router_2{
host(10.1.2.254) and
level(debug..emerg);
};
filter f_router_3 {
host(10.1.3.254) and
level(debug..emerg);
};

6. Dokonujemy związania źródła, filtru oraz miejsca docelowego dla logów:
log {
source(siec);
//”siec” to nazwa źródła komunikatów zdefiniowana w p-kt 3 
filter(f_router_1);
//”f_router_1″ to nazwa filtru  – pkt 5
destination(df_router_1);
//”df_router_1″ to nazwa miejsca do zapisu logów zdefioniwana w p-kt 4
};
log {
source(siec);
filter(f_router_2);
destination(df_router_2);
};
log {
source(siec);
filter(f_router_3);
destination(df_router_3);
};

7. Zapisujemy plik (dla przykładowego edytora NANO to kombinacja ctrl+o) i wychodzimy z edytora (ctrl+x)

Usługa została skonfigurowana :-).

8. Start usługi: /etc/init.d/syslog-ng start Jeżeli poprawnie wystaruje będzie komunikat: Starting system logging: syslog-ng. (uwaga: jeżeli zmienimy start na stop to usługę zatrzymamy, a jeśli na restart to zrestartujemy)

Skoro już usługa działa poprawnie i powinna startować automatycznie przy uruchomieniu systemu.

C. konfiguracja urządzeń CISCO

1. Logujemy się po kolei na urządzenia i w trybie konfiguracji (znak zachęty: (config)#) wpisujemy:
logging trap informational //podwyższamy poziom logowania do info (czyli poziom debug na syslogu jest już nieważny, ponieważ i tak komunikaty o takim poziomie nie wyjdą z urządzenia)
logging timestamp
//dodawanie znacznika czasu do wysyłanych komunikatów
logging host  10.1.4.100
//adres naszego serwera z syslog-ng
logging enable
//uruchamiamy wysyłanie logów

———–

I to już wszytko. Od tego momentu powinny napływać logi z urządzeń, które następnie w ładny, uporządkowany sposób będą zapisywane w wybranych katalogach.

———–

10 comments on “Rejestrowanie zdarzeń w sieci, czyli konfiguracja SYSLOG-NG
  1. Witam
    zeby utworzyl sie katalog trzeba do konfigu
    w secji options dodac taki wpis
    options { create_dirs(yes); …. dalej bez zmian

    co do znakow to jest estination df_router_1 { file(„/home/SYSLOG/router_1/$R_YEAR/

    a powinno byc
    estination df_router_1 { file(„/home/SYSLOG/router_1/$R_YEAR/
    ^^^^^

    a teraz ja zadam pytanie czy przerabial ktos opcje zeby te pliki po calym dniu logowania byly spakowane bo mam wielkosci po 10GB i chcialbym zeby z automatu pyly pakowane

  2. Witam, sprawdzę w weekend czy w trakcie wklejania konfiguracji do wordpressa nie podmieniły się jakieś znaki. Co zaś do „/n” to powinno być odwrotnie. Proszę zajrzeć niedługo, napiszę co wyszło z testów. Ogólnie wpis pochodzi na żywo z systemu, którego niestety już nie mam, ale da radę go odtworzyć 😉 Pozdrawiam

  3. niestety nie uruchamia mi sie syslog-ng z tymi parametrami, skopiowałem teks do pliku i widzi same bledy w destination, niepodobaja sie przerwy pomiedzy „slowami” z którymi sobie poradzilem ale nie rozumie takze „/n”. czy zapis jest poprawny?

  4. W przypadku poprawnego skonfigurowania serwera syslog-ng, katalogi będą tworzone automatycznie (oczywiście jeżeli nie zostały utworzone złe uprawnienia do katalogu w którym syslog-ng ma zapisywać dane).
    Zatem jedyny katalog jaki musimy mieć zgodnie z opisem to /home/SYSLOG///. Syslog-ng automatycznie dla danego urządzenia będzie tworzył pokatalogi // w momencie otrzymywania logów i ich pasowania do utworzonych filtrów.

  5. Prosze o pomoc.
    Jak mam utworzyc katalogi do logow bo mam z tym problem. ?

    Odnoszac sie do tego opisu.

  6. Witam mam pytanie, jakie zmiany należy wprowadzić w plikach konfiguracyjnych aby logowane na serwerze były wszystkie logi. Podczas porównania plików np. cron.log to na serwerze syslog-ng jest tylko mała część tego co jest w pliku cron.log u klienta.

  7. Dziękuję za uwagę, faktycznie zwrot mógł być mało zrozumiały. Ale już jest ok – zgodnie z sugestią 😉

  8. „opis źródła zbierania” to jest zupełnie niezrozumiałe i chyba niepoprawne. Powinno być raczej „opis źródła z którego zbieramy logi”

Dodaj komentarz

Twój adres email nie zostanie opublikowany.