SysLog | archiwizacja i analiza logów

rk7771

SysLog - prezentacja polskiego programu napisanego w języku pascal w narzędziu developerskim Borland Embarcadero Delphi z wykorzystaniem między innymi komponentów Indy (Internet Direct), SecureBridge.

***

SysLoger - prezentacja polskiego programu napisanego w języku pascal w narzędziu developerskim Borland Embarcadero Delphi z wykorzystaniem między innymi komponentów Indy (Internet Direct), SecureBridge .

Projekt powstał we wrześniu 2011r. i jest cały czas rozwijany.

W ramach rozwoju programu powstawały nowe funkcjonalności, na poniższej stronie prezentowane są główne cechy programu wraz z wersją DEMO - link do strony
http://360dni.pl/program_sysloger.php

Po tych kilkunastu latach można zadać pytanie w zakresie programowania w języku pascal : czy to jest hobby, a może to już jest pasja ? Oczywiście sama wiedza na temat składni języka programowania to nie wszystko, w programie jest zaimplementowana wiedza i doświadczenie w zakresie rozwiązań IT i administracji sieciami, konfiguracji urządzeń sieciowych czy też działania systemów operacyjnych.

Należy również pamiętać, że logi nie są generowane tylko na urządzeniach sieciowych. Praktycznie każdy program, system operacyjny, serwer może zbierać i zapisywać logi. Logi te można przesyłać i analizować w centralnym systemie logów jakim jest oprogramowanie SysLog.

Zbieranie logów i ich archiwizacja jest w obecnych czasach podstawowym elementem dowodowym do którego można sięgnąć po wystąpieniu danego zdarzenia czy incydentu. W obecnych czasach konieczna jest jednak bieżąca analiza logów i bieżące informowanie w celu możliwości szybkiego reagowania.

Program SysLoger ma wbudowane funkcjonalności wykonania bieżącej analizy otrzymywanych logów na podstawie zdefiniowanych pułapek (czyli fraz tekstów jakie występują w treści otrzymywanych komunikatów nazywanych jako Message).

Poniższe trzy grafiki pokazują jak może działać taka bieżąca analiza logów oraz informowanie o wykrytych pułapkach:

  1. Analiza ruchu przychodzącego z sieci Internet:
    program_sysloger_schemat1.gif

  2. Przesyłanie informacji przez urządzenia o krytycznej ilości otwartych sesji:
    program_sysloger_schemat6.gif

  3. Informowanie o logowaniu na urządzeniu:
    program_sysloger_schemat3.gif

Analizowany ruch może być w wielu aspektach, wszystko zależy od treści umieszczonej w otrzymywanych logach. W ramach analizy można weryfikować treści pod kątem:

  1. Otrzymywanych informacji z podziałem na ich poziom (Severity): emergency, alert, critical, error, warning, notice, info czy debug. W pakiecie komponentów Indy (Internet Direct) taka informacja przetrzymywana jest w składni komponentu TIdSysLogMessage we właściwości Severity, gdzie dostępne są opcje: slEmergency, slAlert, slCritical, slError, slWarning, slNotice, slInformational, slDebug.
  2. Według obiektów których dotyczą (Facility): Kernel, User Level, Mail System, System Daemon, Security One, SysLog Internal, LPR (Printer), NNTP (Network), UUCP, Clock Daemon One, Security Two, FTP Daemon, NTP, Log Audit, Log Alert, Clock Daemon Two, Local Use Zero, Local Use One, Local Use Two, Local Use Three, Local Use Four, Local Use Five, Local Use Six, Local Use Seven. W pakiecie komponentów Indy (Internet Direct) taka informacja przetrzymywana jest w w składni komponentu TIdSysLogMessage we właściwości Facility, gdzie dostępne są opcje: sfKernel, sfUserLevel, sfMailSystem, sfSystemDaemon, sfSecurityOne, sfSysLogInternal, sfLPR, sfNNTP, sfUUCP, sfClockDaemonOne, sfSecurityTwo, sfFTPDaemon, sfNTP, sfLogAudit, sfLogAlert, sfClockDaemonTwo, sfLocalUseZero, sfLocalUseOne, sfLocalUseTwo, sfLocalUseThree, sfLocalUseFour, sfLocalUseFive, sfLocalUseSix, sfLocalUseSeven.
  3. Błędów na urządzeniach, jak na przykład zbyt wysokiej temperatury czy wykorzystanych i nie zwalnianych zasobów (pamięci, ilości sesji). Neleży pamiętać, że każde urządzenie ma ograniczone dostępne zasoby. Ich całkowite wykorzystanie może doprowadzić do znacznych spowolnień w ruchu sieciowym, w tym zatrzymania działania usług.
  4. Logowań na urządzeniach czy logowań VPN w ramach zdalnych połączeń, w tym występujących błędów na połączeniu czy nieudanych prób logowań.
  5. Logowań w systemach operacyjnych (na przykład w ramach wysyłanych logów umieszczanych w Event Logu systemu Windows - oczywiście potrzebne jest tutaj narzędzie, które taki log z systemu Windows czy innego programu będą przesyłać do centralnego syslog'a).
  6. Ilości przetwarzanych informacji w czasie co może wskazywać na Floodowanie czy atak DDOS.
  7. Skanowania interfejsów.
  8. Geolokalizacji, jeżeli w treści logu są ujęte informacje o kraju dla ruchu przychodzącego i wychodzącego.
  9. Adresów IP dla ruchu przychodzącego oraz wychodzącego czy numerów portów źródłowych i docelowych.
  10. Użytych polityk, reguł na urządzeniach.
  11. Czy innych dowolnych treści w zależności od zdefiniowanych fraz (na przykład wykrycia i zadziałania oprogramowania antywirusowego, wykrycia użycia stron według zdefiniowanego webfilteringu, innych zdefiniowanych słów kluczowych).

Kluczowa jest tutaj również analiza wystąpień w czasie. Niektóre działania mogą być mitygowane do pojedynczych połączeń, których ilość wystąpień w czasie nie powoduje znaczącego wzrostu ruchu sieciowego.

Analiza treści otrzymywanych logów musi również zapewniać wyszukiwanie kilku informacji w danym komunikacie, co pozwala na skuteczniejsze i dokładniejsze wykrywanie zdarzeń czy incydentów.

Program SysLoger posiada zaimplementowane funkcjonalności w zakresie:

  • archiwizacji logów,
  • bieżącej analizy logów,
  • analizy w czasie na podstawie zdefiniowanych struktur logów (tzw. analiza klasy SIEM),
  • definiowania i wyszukiwania pułapek (fraz) według jednego lub kilku słów kluczowych.
  • definiowania listy urządzeń,
  • definiowania listy webfilteringu,
  • definiowania dystrybucyjnych list e-mail,
  • definiowania struktury logów i ich przypisywania do urządzeń,
  • powiadamiania pocztą e-mail o ustawionych i wykrytych pułapkach,
  • kontrolowania ilości otrzymywanych informacji w czasie,
  • możliwości stosowania wykluczeń dla powiadomień,
  • generowania i wysyłania codziennego raportu podsumowującego,
  • archiwizacji logów tekstowych i ich wysyłki do zdalnego repozytorium,

oraz inne jak na przykład:

  • kopii konfiguracji urządzeń - przygotowany został serwer TFTP oraz FTP, połączenia realizowane są protokołami SSH, SFTP, FTP, Telnet,
  • dodatkowej kopii konfiguracji urządzeń do zdalnego repozytorium,
  • weryfikacji dostępności urządzeń poprzez wykorzystanie protokołu ICMP,
  • prostego skanera zasobów sieciowych wraz z definicją zakresów IP / sieci oraz portów docelowych,
  • prostego mini sniffera.

W ramach powyższych funkcjonalności użyte zostały między innymi poniższe technologie:

  • komponenty z pakietu INDY: IdSyslogServer, IdSysLogMessage, IdUDPServer, IdUDPClient, IdSMTP, IdMessage, IdPOP3, IdIOHandlerStack, IdSSLIOHandlerSocketOpenSSL, IdAntiFreeze, IdFTP, IdIcmpClient, IdTelnet, IdTraceRoute
  • komponenty z pakietu SecureBridge: ScFileStorage, ScSFTPClient, ScSSHClient, ScSSHShell

Poniżej okno monitora Windows:
program_monitor_windows.jpg

oraz wybrane opcje konfiguracji:
konfiguracja1.jpg

konfiguracja2.jpg

konfiguracja3.jpg

konfiguracja4.jpg

Uruchomienie programu

Uruchomienie programu wykonujemy poprzez wybranie pliku "sys_loger.exe". Jest to główny program w którym wykonujemy konfigurację poszczególnych opcji oraz za pomocą którego instalujemy, uruchamiamy lub zatrzymujemy usługi systemu Windows. Zalecane jest uruchomienie programu z uprawnieniami administratora, pozwoli to na sterowanie usługami systemu Windows.

W celu odbioru i zapisu logów niezbędne jest zainstalowanie i uruchomienie usługi SysLog dostępnej w opcjach programu w zakładce : "Serwisy -> SysLog". Usługa SysLog nasłuchuje na porcie UDP: 514.

procedure TSysLog.IdSyslogServer1Syslog(Sender: TObject
  ASysLogMessage: TIdSysLogMessage; ABinding: TIdSocketHandle);
var;
  pri_org : integer;
  message_text : string;
begin
  IdSysLogMessage1 := ASysLogMessage;
  message_text := Trim(IdSysLogMessage1.Msg.Text);
  Pri_org := IdSysLogMessage1.Pri;
 
  if IdSysLogMessage1.Severity = slEmergency the
  begin
    (...)
  end;

  if IdSysLogMessage1.Facility = sfKernel then
    (...)

  (...)
end;

Zdefiniowanie opcji dostępnych w zakładce "Filtry: frazy, powiadomienia" pozwoli na uruchomienie bieżącej weryfikacji logów. Bieżącą weryfikację logów wykonuje usługa systemu Windows dostępna w opcjach programu w zakładce "Serwisy -> Monitor".

0 komentarzy