Zdobyć dowody zabezpieczyć ślady

Logi systemowe to najbardziej wiarygodne źródło informacji o tym, co dzieje się w sieci. Warto nauczyć się z nich korzystać.

Logi systemowe to najbardziej wiarygodne źródło informacji o tym, co dzieje się w sieci. Warto nauczyć się z nich korzystać.

Najpełniejszej informacji o tym, co dzieje się w działającej w firmie infrastrukturze, dostarczają logi (dzienniki) systemowe. Te z pozoru nieczytelne ciągi znaków zawierają szczegółowe informacje o każdej operacji wykonywanej przez system operacyjny, aplikacje i użytkowników, dlatego ich przeglądanie - oczywiście przy użyciu narzędzia z funkcjami filtrującymi - powinno być elementem pracy każdego administratora.

Większość tego co ważne rejestruje system operacyjny - każdy system jest standardowo wyposażony w narzędzie do zbierania logów, choć już nie każdy posiada wygodne narzędzia do ich analizy. Na szczęście zarówno w dziedzinie zbierania, jak i analizy logów lukę w funkcjonalności systemów operacyjnych z powodzeniem zapełniają niezależni dostawcy oprogramowania. W niniejszym artykule zostaną omówione problemy i metody związane ze zbieraniem logów. W kolejnym będą przedstawione metody i narzędzia do ich efektywnej analizy.

Proste jest piękne

W systemach z serii Unix, a więc także Linux i BSD w tle działa syslog - dedykowany proces (tzw. daemon), którego zadaniem jest zbieranie informacji o zdarzeniach z innych aplikacji, a także z jądra systemu, i zapisanie wyników do odpowiedniego pliku. Zdarzenia podlegają podziałowi wg źródła pochodzenia (facility) oraz poziomu ważności (level). Nowsze realizacje tego narzędzia umożliwiają zapis zdarzeń pochodzących z różnych źródeł do oddzielnych plików. Syslog jest prosty, ale niezwykle skuteczny - potrafi odbierać przychodzące połączenia TCP/IP od innych daemonów, co praktycznie załatwia budowanie scentralizowanego systemu logowania zdarzeń z wielu serwerów.

Konfiguracja jest bardzo prosta: na maszynie rejestrującej zdarzenia sysloga należy skonfigurować tak, aby nasłuchiwał na porcie 514 (UDP), zaś na pozostałych maszynach tak, by wysyłał zdarzenia do "rejestratora". Szczegółowe informacje jak to zrobić można znaleźć w podręczniku systemowym (man syslog, man syslog.conf). Istnieje już nowsze wcielenie sysloga (syslog-ng), zgodne z nowszą specyfikacją RFC. Warto z niego skorzystać. Aby instalacja miała sens, system operacyjny komputera rejestrującego powinien być odpowiednio zabezpieczony. Najlepiej byłoby, aby działała na nim wyłącznie usługa syslog - i żadna inna. Ewentualnie SSH i Apache. Filtr pakietów, np. iptables, powinien być skonfigurowany w taki sposób, aby połączenia do stacji rejestrującej mogły wykonywać wyłącznie serwery "oddające" logi oraz stacja robocza administratora.

Dla utrudnienia potencjalnego podszywania się należy koniecznie wpisać w konfiguracji statyczne adresy sprzętowe (MAC) kart sieciowych. Dobrym pomysłem jest konfiguracja sysloga tak, by ważne zdarzenia były wyświetlane na osobnej konsoli systemowej. W przypadku szczególnie ważnych komputerów można podłączyć drukarkę igłową i przekierować zdarzenia z sysloga (dodatkowo) na drukarkę (nawet wprost na urządzenie /dev/lp0). Wydruk zapisów zdarzeń ma tę zaletę, że nie można go usunąć bez fizycznej obecności w pomieszczeniu.

W mieszanym towarzystwie

Interesujący jest fakt, że syslog może przyjmować i analizować logi napływające z systemów Windows. Jest to możliwe np. dzięki darmowemu narzędziu ntsyslog lub dostępnemu za niewielką kwotę programowi Event Report (dawniej EventSlog). Potrafią one pobrać informacje z Rejestru Zdarzeń i wysłać je do sysloga pracującego pod kontrolą systemu typu Unix/Linux. Narzędzie Network Eagle jest jeszcze bardziej rozbudowane - potrafi analizować wiele zdarzeń dotyczących systemów Windows i raportować je do wielu systemów analitycznych, w tym także do sysloga.

Kopiowanie logów z systemów Windows na serwer linuxowy ma rozliczne zalety. Napotykając dobrze zabezpieczony serwer Unix/Linux, włamywacz znający się na systemach Windows ma problem z wymazaniem śladów swojej działalności. Jeśli podejmie próby włamania do serwera logów, również ryzykuje - im dłużej myszkuje w sieci, tym większe prawdopodobieństwo, że zostanie namierzony.

Centralizacja logów na komputerze działającym pod kontrolą systemu Unix/Linux jest korzystna także dlatego, że dla tych platform napisano sporo dobrego, a na dodatek w większości darmowego oprogramowania do analizy logów. Wiele bardzo rozbudowanych raportów daje się wykonać ad hoc, wpisując kilka poleceń, a do tego, rezultaty raportowania są dostępne bardzo szybko. Koncentracja logów na serwerze linuxowym ma sens także dlatego, że logi warto archiwizować. Linux zapewnia dobrze działające narzędzia backupowe, które nie wymagają żadnych opłat licencyjnych.

Linux jako platforma komasowania logów to dobry wybór ze względu na jego wydajność. Do jednego serwera można skierować strumienie logów z kilkunastu czy nawet kilkudziesięciu serwerów, co upraszcza architekturę całego rozwiązania. Wydajność wpływa także na bezpieczeństwo. Po pierwsze, dlatego że kluczowe dla bezpieczeństwa zdarzenia można wychwytywać w czasie rzeczywistym, po drugie zaś, że wydajny serwer jest trudniejszy do przeciążenia atakiem DoS.

Na koniec wypada dodać, że systemy unixowe/linuxowe zawierają znakomite w swej prostocie i elastyczności narzędzia do analizy tekstu, takie jak grep, sed, awk, cut. Umożliwiają także użycie skryptów w językach perl czy python, dzięki którym można bardzo łatwo zdefiniować dowolne operacje na tekście i połączyć je w automatycznie wykonywane ciągi poleceń. Analogiczna analiza zdarzeń w ramach narzędzia Windows Event Viewer jest bardzo pracochłonna. Na przykład znalezienie wszystkich zdarzeń, które w opisie zawierają konkretne słowo w przypadku narzędzia syslog, wymaga wpisania jednego polecenia. W Windows (przy użyciu oprogramowania wbudowanego w system) wymaga to wykonania sekwencji czynności i powtórzenia ich wszystkich kolejno przy poszukiwaniu innego słowa.

Logi przez okno

Komputery pracujące pod kontrolą systemu Windows posiadają także mechanizmy rejestrujące zdarzenia systemowe. Standardowym narzędziem do analizy logów jest Podgląd Zdarzeń, do którego można wczytać zapisane uprzednio pliki z rozszerzeniem EVT bądź oglądać wpisy dziennika na bieżąco. Jednak, co tu dużo mówić, analiza zapisów za pomocą aplikacji Event Viewer jest niezbyt wygodna - znacznie lepsze rezultaty można uzyskać, kopiując pliki tekstowe do bazy danych i analizować je za pomocą zapewnianych przez motor bazy mechanizmów przeszukiwania pełnotekstowego.

Oprócz kosztownych narzędzi, takich jak Foglight i Spotlight, firmy Quest, czy też narzędzi NetIQ, warto przyjrzeć się darmowym lub choćby nieco tańszym rozwiązaniom. Ich funkcjonalność, jak się w praktyce okazuje, nie jest gorsza od tej oferowanej przez narzędzia z najwyższego przedziału cenowego. Na początek można spróbować darmowego narzędzia dumpel.exe dołączonego do Microsoft Windows Resource Kit. Program ten potrafi wyeksportować zapisy z bieżącego rejestru zdarzeń do pliku tekstowego, który można później dowolnie obrabiać.

Przed analizą plików log warto je wstępnie przygotować. Wszystkie dzienniki z całej domeny można zapisać w jednym pliku za pomocą darmowego programu EventSave (http://www.sysinternals.com ), a także w oddzielnych plikach, dodatkowo grupując ich zawartość miesiącami. Program należy uruchomić na kontrolerze domeny Windows z uprawnieniami administratora domeny. Dodatkowa korzyść jest taka, że po wykonaniu kopii program może usunąć oryginały z monitorowanych systemów.

Najpierw należy przygotować odpowiedni skrypt uruchamiający EventSave, który następnie zarchiwizuje powstałe pliki *.EVT. Do archiwizacji można wykorzystać narzędzia unixowe, np. Cygwin albo program 7-zip. Utworzone pliki zbiorcze należy niezwłocznie zabezpieczyć, wykonując ich kopie na nośniki wymienne. Całą operację zbierania logów najlepiej wykonać w nocy.

Uniwersalny syslog

Nie tylko stacje robocze i serwery mogą kopiować swoje logi do centralnego serwera syslog. Również wiele urządzeń sieciowych, w tym routery, firewalle,przełączniki, a nawet drukarki sieciowe i inne urządzenia mają standardowo możliwość raportowania zdarzeń do sysloga. Wiele z nich wykorzystuje okrojony funkcjonalnie system Unix, BSD lub Linux.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200