2004 03 Analiza logów systemowych [Administracja]

background image

marzec 2004

46

dla początkujących

Analiza logów systemowych

Piotr Machej

W

trakcie używania komputera (obojętnie,
czy do pracy, czy do rozrywki) używamy
wielu różnych programów. Wiele z nich
działa w tle, bez naszego udziału. Nie do

pomyślenia byłoby, gdyby wszystkie te programy wyrzuca-
ły na ekran wyniki swoich działań lub komunikaty błędów.
W takim systemie nie dałoby się pracować. Z tego powodu
większość tych informacji zapisywana jest w dziennikach
systemowych (plik dziennika systemowego nazywamy też
logiem lub dziennikiem zdarzeń).

Kontrolowanie wpisów w logach daje możliwość

wykrycia nieprawidłowości w konfiguracji i funkcjonowa-
niu naszego systemu. Oprócz tego, jest to jedno ze źró-
deł informacji o wszelkich próbach włamań, więc należy
regularnie przeglądać logi systemowe w poszukiwaniu
wszelkich odchyleń od normy. Oczywiście, w przypad-
ku systemów produkcyjnych zainstalowanych w firmach,
zwykle zatrudniony jest w tym celu administrator bezpie-
czeństwa. Nie należy jednak sądzić, że komputery domowe
są bezpieczne, bo „komu by się chciało włamywać do
mojego komputera”. Nasz system może być wykorzystany
przez „czarne kapelusze”, choćby do przygotowania rozpro-
szonego ataku odmowy usługi (DDOS), czy po prostu jako
„przystanek” podczas dokonywania włamania do innego
systemu.

Nie ulega wątpliwości, że analizowanie logów w syste-

mie wielozadaniowym (jakim jest Linux) może być bardzo
czasochłonne. Stworzono szereg programów mających
na celu ułatwienie pracy administratorom – pomagają od
razu zwrócić uwagę na najistotniejsze dla bezpieczeństwa
wpisy. Oprócz tego, takie programy pozwalają na tworzenie
rozbudowanych statystyk, co szczególnie przydaje się przy
analizie logów serwerów WWW lub proxy.

Przykład użycia

Gdy rano sprawdziłem pocztę, znalazłem codzienny raport
z logów. Znów jakiś wirus rozsyłał po sieci stosy listów. Na
szczęście program antywirusowy w połączeniu z odsiewa-
niem spamu odrzucił większość przesyłek. Przynajmniej
użytkownicy nie będą zbytnio narzekać. Logi zapory

ogniowej informowały tylko o kilkudziesięciu skanowa-
niach portów. Uśmiechnąłem się widząc, że ktoś próbo-
wał włamać się na serwer wykorzystując starą lukę w IIS
Microsoftu. Chyba nawet nie potrafił sprawdzić, jaki serwer
WWW jest zainstalowany. No cóż, script-kiddies przydają
się przynajmniej do poprawiania humoru, o ile ma się uak-
tualniony system.

Przed wyjściem do miasta sprawdziłem jeszcze logi

dzielenia łącza. Od aktualizacji oprogramowania i jądra
tydzień temu, w końcu zdawało się działać poprawnie.
Z zadowoleniem wyłączyłem konsolę administratora,
rozegrałem partyjkę w Go (znów przegrałem o 1,5 moku)
i zgasiwszy monitor wyszedłem na spacer. Jeśli coś się
będzie działo złego, to system i tak powiadomi mnie o tym
SMS-em.

Podstawowe pliki logów

Nie da się skutecznie śledzić dzienników systemowych bez
wiedzy na temat ich lokalizacji i zastosowania. W więk-
szości przypadków pliki logów znajdują się w katalogu
/var/log/ i jego podkatalogach. Za zapis do odpowiednich
plików poszczególnych informacji dotyczących działania
systemu odpowiada demon Syslogd. Oprócz tego istnieje
demon Klogd, odpowiedzialny za przechwytywanie komu-
nikatów jądra systemu.

Plikiem konfiguracyjnym demona Syslogd jest plik /etc/

syslogd.conf. Z niego możemy dowiedzieć się, jakie infor-
macje są kierowane do poszczególnych plików. Każda jego
linia ma postać:

urządzenie.priorytet plik_logu

O autorze:

Autor zakończył studia zaoczne na V roku Informatyki na

Politechnice Opolskiej. Z Linuksem (i ogólnie systemami

uniksowymi) ma styczność od wielu lat. Obecnie admi-

nistruje siecią blokową złożoną z dziesięciu komputerów.

Kontakt z autorem: autorzy@linux.com.pl.

Rysunek 1.

Oto skutek zerwanego kabla – dwa dni bez sieci

Zobacz w:

background image

47

www.linux.com.pl

analiza logów systemowych

Pole urządzenie określa, skąd pochodzą informacje. Może
przyjmować takie wartości, jak:

authpriv – informacje dotyczące bezpieczeństwa i auto-

ryzacji;

cron – demony Cron i At;
daemon – demony systemowe bez osobnej wartości

urządzenie;

ftp – demon FTP;
kern – wiadomości jądra;
lpr – system drukowania;
mail – system pocztowy;
news – system wiadomości news (USENET );
syslog – wewnętrzne komunikaty demona Syslogd;
user – wiadomości programów użytkownika;
uucp – system UUCP;
local0 do local7 – zarezerwowane do lokalnego

użytku.

W polu priorytet określamy, jakie informacje chcemy
logować. Do dziennika systemowego określonego w polu
plik_logu trafią te informacje, które mają priorytet równy
lub wyższy od podanego w polu priorytet. Pole to może
przyjmować następujące wartości (poczynając od najniższe-
go priorytetu): debug, info, notice, warning, err, crit, alert
oraz emerg. Możemy również zabronić zapisywania infor-
macji z wybranego urządzenia w pliku – wystarczy w polu
priorytet użyć wartości none. Zarówno pole urządzenie,
jak i priorytet, może przyjmować wartość *, oznaczającą
wszystkie dostępne urządzenia i priorytety (odpowiednio).

Przykładowa linia z pliku /etc/syslog.conf może wyglą-

dać tak:

*.info;mail.none;news.none;authpriv.none;cron.none

S

/var/log/messages

Powoduje ona, że do pliku /var/log/messages zostaną
zapisane wszystkie wiadomości o priorytecie info lub wyż-
szym, ze wszystkich urządzeń z wyjątkiem wiadomości
z systemów poczty, news, Crona i informacji dotyczących
bezpieczeństwa.

Jeśli chcemy te same informacje wysyłać na niewy-

korzystywaną konsolę (np. na dziesiątą), możemy wpisać
w pliku /etc/syslog.conf linię podobną do poniższej:

*.info;mail.none;news.none;authpriv.none;cron.none

S

/dev/tty10

Dzięki temu po zrestartowaniu demona Syslogd (np. pole-
ceniem

/etc/rc.d/init.d/syslog restart

) i przełączeniu

się na dziesiątą konsolę (klawiszami [Alt]-[F10 ]), będziemy
mogli na bieżąco czytać informacje dopisywane do pliku
/var/log/messages.

Analizując plik syslog.conf, możemy zorientować się

w przeznaczeniu części plików dziennika systemowego.
W domyślnie zainstalowanym systemie najczęściej wyko-

rzystywane są następujące pliki znajdujące się w katalogu
/var/log/:

messages – plik ogólnego przeznaczenia; są tu logowa-

ne zarówno komunikaty jądra podczas startu systemu,
jak i informacje wysyłane przez różne programy uru-
chomione w systemie;

secure – plik zawierający informacje dotyczące bezpie-

czeństwa oraz dane o autoryzacji użytkowników w sys-
temie;

maillog – tu logowane są wszystkie informacje wysyła-

ne przez system pocztowy;

cron – komunikaty o uruchamianiu zadań przez

demony Cron, Anacron oraz At;

spooler – informacje krytyczne z działania systemów

UUCP i news;

boot.log – komunikaty wyświetlane podczas startu sys-

temu.

Oprócz powyższych plików, w katalogu /var/log/ mogą
znaleźć się inne pliki i podkatalogi tworzone przez zainsta-
lowane oprogramowanie. Przykładowo często znajdziemy
tam podkatalogi cups/ (systemu drukowania), httpd/ (logi
serwera WWW), samba/ (komunikaty z działania Samby)
czy squid/ (informacje o serwerze pośredniczącym).

Nie należy dziwić się, jeśli oprócz pliku messages

w katalogu /var/log/ znajdą się pliki messages.1, messages.2
itd. Może to również dotyczyć innych plików. Jest to wynik
działania demona LogRotate, odpowiedzialnego za rotację
logów. Rotacja ma na celu uniknięcie przepełnienia dysku.
Plik z logiem co pewien czas ma zmienianą nazwę (doda-
wana jest cyfra). W ten sposób przechowywanych jest kilka
archiwalnych kopii pliku, z których najstarsza jest usuwana
przy kolejnej rotacji.

Analiza logów w trybie tekstowym

Jeśli szukamy w logach konkretnej informacji, najszyb-
ciej znajdziemy ją wykorzystując podstawowe narzędzia
dostępne z konsoli. Najprostszym z tych poleceń jest
grep.

Rysunek 2.

Możemy określić, które słowa są dla nas alarmujące

background image

marzec 2004

48

dla początkujących

Przypuśćmy, że chcemy sprawdzić, czy ktoś odwiedza
naszą stronę. Wiemy już, że logi serwera WWW prze-
chowywane są w katalogu /var/log/httpd/. Informacje
o odwiedzinach zawarte są w pliku access_log. Jeśli więc
stworzyliśmy stronę i opublikowaliśmy ją pod adresem http://
nasz.serwer/~uzytkownik/strona/
, to możemy poszukać
informacji o niej:

grep uzytkownik/strona /var/log/httpd/access_log*

Jeśli w plikach access_log* znajdują się jakieś linie zawiera-
jące tekst uzytkownik/strona, to zostaną one wyświetlone
na ekranie. Przykładowo może to wyglądać tak:

access_log.1:127.0.0.1 - - [28/Jan/2004:13:17:41 +0100]

S

"GET /~uzytkownik/strona/ HTTP/1.1" 200 1603 "-"

S

"Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.4)

S

Gecko/20030704"
access_log.1:127.0.0.1 - - [28/Jan/2004:13:17:41 +0100]

S

"GET /~uzytkownik/strona/style.css HTTP/1.1" 200 648

S

"http://localhost/~uzytkownik/strona/" "Mozilla/5.0

S

(X11; U; Linux i686; pl-PL; rv:1.4) Gecko/20030704"

Z powyższych linii możemy dowiedzieć się, że dnia 28
stycznia 2004 roku o godzinie 13:17 jeden z użytkowników
naszego komputera (localhost127.0.0.1) wszedł na stronę
o adresie http://localhost/~uzytkownik/strona/. Strona ta
została wysłana do niego bez problemu (kod 200) i miała
rozmiar 1603 bajty. Oprócz tego, strona ta korzystała
z arkusza stylów umieszczonego w pliku style.css o rozmia-
rze 648 bajtów. Użytkownik wchodzący na stronę korzystał
z przeglądarki przedstawiającej się jako Mozilla. Informacje
te znajdują się w pliku archiwalnym access_log.1.

Możemy także sprawdzić adres MAC naszej karty sie-

ciowej:

dmesg | grep eth

Polecenie to w moim systemie drukuje następujące infor-
macje:

divert: allocating divert_blk for eth0
eth0: RealTek RTL8139 Fast Ethernet at 0xd17ea000,

S

00:01:29:24:0d:2f, IRQ 10
eth0: Identified 8139 chip type 'RTL-8139B'

Interesujący nas adres MAC to 00:01:29:24:0d:2f. Przy
okazji dowiadujemy się, że jest to karta oparta na chipie
RealTek RTL8139B.

Oprócz użycia grepa, możemy wykorzystać również

inne polecenia. Poniższe polecenie powoduje zliczenie
listów wysłanych 11 i 12 stycznia (serwerem poczty jest
Postfix):

grep sent /var/log/maillog* | grep "Jan 1[12]" | wc -l

W moim przypadku listów takich było niewiele, więc pole-
cenie to zwróciło jednocyfrowy wynik:

2

Bardzo przydatne może okazać się polecenie Awk. Jest to
właściwie cały język wyszukiwania i przetwarzania wzor-
ców. Zobaczmy przykładowo, jak z plików secure wyłuskać
informację o tym, kto i z jakiego komputera logował się do
naszego systemu:

awk '/Accepted/ {print $9 "\t" $7 "\t" $11}'

S

/var/log/secure* | sort | uniq

Przykładowy wynik może wyglądać tak:

gerard password 192.168.100.200
gerard publickey 192.168.100.200
ktosik publickey 215.13.57.4

W zestawieniu tym mamy podane nazwy użytkowników
logujących się do naszego komputera za pomocą SSH,
wykorzystaną metodę autoryzacji (hasło lub klucz publicz-
ny) oraz adres komputera, z którego nawiązano połączenie.
Nie mamy tu informacji na temat ilości połączeń – dzięki
kombinacji poleceń sort i uniq wyeliminowaliśmy wszyst-
kie powtórzenia. Jeśli interesują nas konkretne linie doty-
czące pierwszego z wymienionych połączeń, to możemy
znów skorzystać z grepa:

grep "password.*gerard.*192.168.100.200" /var/log/secure*

Przykładowo, możemy uzyskać w wyniku następujący
wydruk (zacytowano jedynie fragment):

secure:Jan 25 03:43:49 illusion sshd[6498]:

S

Accepted password for gerard from

S

192.168.100.200 port 52790 ssh2

Rysunek 3.

W Webminie możemy nie tylko przeglądać logi, ale

również dodawać nowe

background image

49

www.linux.com.pl

analiza logów systemowych

secure.1:Jan 31 01:48:13 illusion sshd[28930]:

S

Accepted password for gerard from

S

192.168.100.200 port 2203

W powyższym przykładzie illusion jest nazwą komputera,
na którym znajdują się logi.

Samodzielne analizowanie logów stwarza duże pole

do popisu wszystkim programistom. To prawdziwy egza-

min z umiejętności wykorzystania wyrażeń regularnych
oraz z wiedzy na temat działania systemu. Dla początku-
jących jest to świetna możliwość zdobycia nowej wiedzy
i umiejętności. Nie zawsze jednak chcemy lub mamy
czas samodzielnie się wszystkim zajmować. Z pomocą
przychodzą nam inni programiści, którzy stworzyli wiele
programów i filtrów na różne sposoby przetwarzające logi
i wyłuskujące istotne informacje.

Red Hat LogViewer

W Auroksie mamy do dyspozycji bardzo przyjemne narzę-
dzie, które zwalnia nas z konieczności stosowania polece-
nia grep. Red Hat LogViewer, bo o tym programie mowa,
dostępny jest z menu Narzędzia systemowe –> System logs.
Oczywiście pod warunkiem, że zainstalowaliśmy go w sys-
temie. Jeśli nie, to możemy go znaleźć na pierwszej płycie
instalacyjnej.

Program ten jest bardzo prosty w użyciu. Po lewej stro-

nie mamy do wyboru różne pliki dziennika systemowego.
Gdy wybierzemy jeden z nich, jego zawartość pojawi się
w głównym oknie. Wpisy zasługujące na uwagę oznaczo-
ne są czerwonym wykrzyknikiem. W polu Filter for mamy
możliwość wpisania wyrażenia, które chcemy odszukać
w logu. Po wciśnięciu przycisku Filter na ekranie pozostaną
tylko linie zawierające to wyrażenie.

W menu Edit –> Preferences możemy wskazać lokali-

zacje poszczególnych plików logów, ustawić czas odświe-
żania, a także wskazać wyrażenia, które powinny być
oznaczane wykrzyknikiem.

Program ten nie jest szczególnie rozbudowany, lecz

z pewnością spełnia swoją funkcję – pozwala w wygodny
sposób przeglądać logi.

Webmin

Ten popularny program służący do administracji systemem
za pośrednictwem WWW nie mógł się obyć bez przeglądar-
ki logów. W sekcji System –> Logi systemowe mamy dostęp
do ustawień znanych nam już z pliku /etc/syslogd.conf.
Tym razem możemy skonfigurować każdy log za pomocą
interfejsu graficznego, co dla wielu osób jest łatwiejsze
i wygodniejsze.

Niestety, samo przeglądanie logów nie jest tu zbyt roz-

budowane. Jedyne, co możemy zrobić, to wybrać liczbę
linii do wyświetlenia oraz wyświetlić tylko linie zawierające
wprowadzony tekst. Pod tym względem lepszy wydaje się
Red Hat LogViewer.

LogWatch – automatyczne

wykrywanie podejrzanych wpisów

W wyłuskiwaniu nietypowych wpisów w dziennikach sys-
temowych może nam pomóc program LogWatch. Narzędzie
to codziennie przegląda wybrane pliki i przepuszcza je przez
odpowiednie filtry. Informacje sformatowane przez te filtry
wysyłane są pocztą e-mail na adres administratora. Nie
zawsze muszą one wzbudzać nasze podejrzenia – często są
to zestawienia, np. ilości połączeń z serwerem poczty.

Opcje polecenia Logwatch:

detail

poziom – ustawia poziom szczegółowości raportu;

można użyć wartości low (niska), med (średnia) i high
(wysoka) lub wartości liczbowych od 0 (niska) do 10
(wysoka);

logfile

nazwa_logu – ogranicza analizę do wskazane-

go pliku (lub plików, bo tej opcji można użyć kilkakrot-
nie) dziennika systemowego; LogWatch użyje filtrów
powiązanych ze wszystkimi usługami korzystającymi ze
wskazanego pliku;

service

nazwa_usługi – ogranicza analizę do wskazanej

usługi (lub usług – opcja może być użyta wielokrotnie);
LogWatch przeanalizuje wszystkie pliki dziennika sys-
temowego wykorzystywane przez tą usługę; przydatną
wartością nazwa_usługi jest All, pozwalająca wskazać
wszystkie dostępne usługi;

print

– powoduje wysłanie wyniku na standardowe

wyjście (np. na ekran);

mailto

adres – wysyła wynik na adres e-mail lub do

użytkownika podanego jako adres;

archives

– powoduje, że LogWatch oprócz właściwego

pliku logu analizuje również pliki archiwalne (np. messa-
ges.1
i następne w przypadku logu messages), oczywi-
ście z uwzględnieniem wartości opcji range;

range

– pozwala określić zakres analizowanych dat;

obecnie dostępne są tylko trzy wartości: Today (dzisiaj),
Yesterday (wczoraj) i All (wszystkie dni);

debug

poziom – opcja przydatna podczas rozwiązywa-

nia problemów oraz analizowania działania programu
LogWatch; wartość poziom może wynosić od 0 do 10
(powyżej 10 jest sens ustawiać tylko wartości większe od
100, gdyż wtedy nie jest usuwany katalog roboczy);

save

nazwa_pliku – zamiast drukować lub wysyłać

listem e-mail, zapisuje wynik analizy do pliku o nazwie
nazwa_pliku;

logdir

katalog – poleca szukać plików z logami w katalo-

gu katalog zamiast w standardowej lokalizacji;

hostname

nazwa_hosta – w raportach używa nazwa_

hosta zamiast nazwy zdefiniowanej dla tego systemu;
jeśli w pliku konfiguracyjnym /etc/log.d/logwatch.conf
włączyliśmy opcję

HostLimit

, to użycie opcji

hostname

w linii poleceń spowoduje analizowanie tylko wpisów
dotyczących hosta o nazwie nazwa_hosta; wyjątkiem
są pliki logów nie zawierające informacji o nazwie hosta
(pliki te będą przetwarzane niezależnie od wartości opcji

HostLimit

);

usage

– wypisuje informacje o dostępnych opcjach;

help

– to samo, co

usage

;

background image

marzec 2004

50

dla początkujących

Instalacja

W przypadku dystrybucji Aurox program LogWatch
dostarczany jest na pierwszej płycie instalacyjnej.
Możemy sprawdzić, czy jest zainstalowany w systemie
poleceniem

rpm -q logwatch

. Powinniśmy uzyskać nazwę

pakietu wraz z numerem wersji. Jeśli zamiast tego otrzy-
mamy komunikat Pakiet logwatch nie jest zainstalowany,
to należy zainstalować go z płyty. W tym celu montujemy
pierwszą płytę instalacyjną w systemie (np.

mount /mnt/

cdrom

), po czym instalujemy nasz pakiet –

rpm -Uvh /mnt/

cdrom/RedHat/RPMS/logwatch*.rpm

.

Jeśli wolimy skorzystać z bardziej aktualnej wersji,

możemy ją pobrać z witryny domowej programu (http://
www.logwatch.org/
). W chwili pisania artykułu najnow-
sza dostępna wersja stabilna nosiła numer 5.0. Warto
ją zainstalować choćby dlatego, że udostępnia większą
liczbę przydatnych filtrów.

Zaraz po instalacji LogWatch jest w zasadzie gotowy

do użycia. Zwykle nie ma potrzeby ingerencji w pliki
konfiguracyjne. Jeśli jednak chcemy rzeczywiście wie-
dzieć, co się dzieje w naszym systemie, to powinniśmy
to zrobić.

Konfiguracja

Większość plików znajduje się w katalogu /etc/log.d/.
Główny plik konfiguracyjny to logwatch.conf (właściwie jest
to łącze symboliczne do pliku conf/logwatch.conf ). Zawiera
on domyślne ustawienia, które są stosowane w przypadku
pominięcia poszczególnych opcji w linii poleceń. Przy
zmianach posługujemy się naszym ulubionym edytorem
(np. Vim, mcedit czy pico).

Na samym początku możemy ustawić adresata listów

informacyjnych (MailTo). Domyślnie jest to użytkownik
root, ale możemy wskazać dowolnego innego lub nawet
wpisać pełny adres e-mail.

Inną ważną opcją jest Range – określa ona, które wpisy

w dziennikach systemowych będą analizowane. Opcja

ta może przyjąć kilka wartości – All (wszystkie wpisy),
Yesterday (wczorajsze) oraz Today (dzisiejsze). Domyśl-
nie analizowane są wpisy z poprzedniego dnia. Warto
zaznaczyć, że opcja ta jest jeszcze bardzo niedoskonała.
W trakcie pracy z LogWatch można zauważyć, że wyniki
zwracane przez program wywoływany z Crona różnią
się od tych zwracanych podczas wywoływania programu
z linii poleceń. Dzieje się tak, gdyż LogWatch pobiera daty
w formacie zależnym od wykorzystywanego w systemie
języka. Załóżmy, że dziś jest 2 luty, a w naszym systemie
zmienna środowiskowa $LANG ustawiona jest na „pl_PL”
(można to sprawdzić poleceniami

locale

lub

echo $LANG

).

W takim przypadku użycie opcji –range yesterday spowo-
duje wyszukiwanie linii z datą lut 1. Gdy jednak zmienna
$LANG ustawiona jest na „C”, to poszukiwane będą linie
z datą Feb 1. Jak więc widać, obecnie jedyną naprawdę
bezpieczną wartością opcji –range jest All. Dzięki niej
zostaną przeanalizowane wszystkie linie.

Oprócz tego, możemy określić, jak bardzo szczegó-

łowe raporty chcemy otrzymywać. Służy do tego opcja
Detail, która może przyjąć wartości Low (niewiele szcze-
gółów – domyślna), Med (średnia ilość szczegółów) oraz
High (dużo szczegółów). Zamiast tych trzech wartości
możemy użyć liczb od 0 (odpowiada to Low) do 10 (od-
powiednik High).

Dzięki opcji Service możemy wskazać usługi, o których

chcemy uzyskać informacje – wartość tej opcji wskazuje
nazwy filtrów (znajdujących się w katalogu /etc/log.d/
scripts/services/
), których chcemy użyć. W większości
przypadków najlepiej pozostawić tę opcję w ustawieniu
All, dzięki czemu uruchamiane będą wszystkie filtry.
Jeśli z jakiegoś powodu chcemy jednak któryś wyłą-
czyć, możemy poniżej umieścić dodatkową linię Service
z nazwą wyłączanego filtru poprzedzoną znakiem minusa
(np.

Service = -cron

).

Wiemy już, że w katalogu /etc/log.d/scripts/services/

znajdują się filtry dotyczące konkretnych usług. Oprócz
tego, w katalogu /etc/log.d/scripts/ znajdują się jeszcze dwa
podkatalogi zawierające filtry. Są to logfiles/ oraz shared/,
zawierające odpowiednio filtry dotyczące konkretnych
plików logów oraz filtry wspólne dla kilku różnych usług
lub logów. Same filtry to po prostu skrypty, napisane
zwykle w języku Perl (ale niekoniecznie). Możemy więc
(jeśli znamy ten język w wystarczającym stopniu) samo-
dzielnie przeanalizować poszczególne filtry, a nawet napi-
sać własne.

Wspomniane wyżej filtry mają za zadanie przeszukać

pliki dzienników systemowych i wydobyć z nich pewne
informacje. W katalogu /etc/log.d/conf/logfiles/ znajdują
się pliki konfiguracyjne określające lokalizację dzienni-
ków systemowych oraz archiwów. W katalogu /etc/log.d/
conf/services/
znajdziemy pliki konfiguracyjne dotyczące
poszczególnych usług. Wskazują one między innymi, które
pliki logów lub które fragmenty tych plików dotyczą kon-
kretnej usługi.

Rysunek 4.

Wiele programów wspomagających analizę logów

z powodzeniem działa pod konsolą

background image

51

www.linux.com.pl

analiza logów systemowych

Uruchamianie

Wraz z instalacją pakietu w katalogu /etc/cron-daily/ zosta-
je umieszczony plik o nazwie 00-logwatch. Właściwie
jest to łącze symboliczne prowadzące do pliku /etc/log.d/
scripts/logwatch.pl
. Dzięki temu, demon Cron będzie dbał
o codzienne uruchamianie programu LogWatch. Listy e-mail
z wynikami działania filtrów będą wysyłane na konto okre-
ślone w pliku /etc/log.d/logwatch.conf w zmiennej MailTo.

Nie jest to jedyna metoda uruchomienia programu. Jeśli

potrzebujemy w danej chwili wyniku działania konkret-
nego filtru, możemy uruchomić LogWatch z linii poleceń.
Wywołanie polecenia

logwatch

bez parametrów spowoduje

użycie domyślnych opcji ustawionych w pliku konfigura-
cyjnym. Zależnie od tego, co chcemy osiągnąć, możemy
jednak wykorzystać różne parametry. Przykładowo, jeśli
chcemy sprawdzić komunikaty demona init (np. o zmianie
poziomu runlevel), możemy użyć polecenia:

logwatch --detail high --archives --service init

S

--range all --print

Poniżej nagłówka informującego o dacie i warunkach
wykonywania raportu, w sekcji zamkniętej liniami Init
Begin
i Init End znajdziemy wynik działania filtru. Może
mieć on postać:

Entered or switched to runlevel 0: 2 Time(s)
Entered or switched to runlevel 6: 34 Time(s)

Jak widać, zestawienie to informuje nas, że dwukrotnie
system przechodził do poziomu runlevel 0, natomiast to
poziomu runlevel 6 przechodził 34 razy. Informacje te uzy-
skamy tylko korzystając z opcji –detail high, gdyż nie są one
na tyle istotne, aby umieszczać je przy niższych poziomach
szczegółowości.

W rozdziale Analiza logów w trybie tekstowym wydo-

bywaliśmy z logu secure informacje o tym, kto logował się
do naszego komputera z pomocą ssh. LogWatch również
pozwala nam uzyskać te informacje. Wystarczy, że użyjemy
polecenia:

logwatch --detail high --service sshd –range=all

S

--archives --print

Może ono zwrócić dosyć obszerny wynik, jednak nas w tej
chwili interesują linie umieszczone w bloku Users logging in
through sshd
. We wspomnianym przykładzie linie te mogą
wyglądać na przykład tak:

gerard:
192.168.100.200: 21 times
ktosik:
215.13.57.4: 7 times

Przy okazji filtru sshd chciałbym zwrócić uwagę, że high
niekoniecznie jest najwyższym poziomem szczegółowości

informacji. Autor filtru sshd przewidział możliwość wyświe-
tlenia dodatkowych informacji w przypadku użycia opcji
–detail 20 lub wyższej. W takim przypadku powyższe
informacje mogłyby wyglądać tak:

gerard:
192.168.100.200:
publickey: 20 times
password: 1 time
ktosik:
215.13.57.4:
publickey: 7 times

Daje nam to znacznie bardziej szczegółowy raport niż nasze
krótkie polecenie awk. A to tylko mały wycinek informacji,
jakie udostępnia nam filtr sshd.

Jeśli chcemy zapoznać się z raportami na temat kilku

wybranych usług, możemy tego dokonać jednym polece-
niem, np.:

R

E

K

L

A

M

A

background image

marzec 2004

52

dla początkujących

logwatch --detail high --service arpwatch

S

--service cron --range today --print

Jak widać, opcji –service możemy użyć kilkakrotnie,
wskazując kolejne interesujące nas usługi. Powyższe pole-
cenie wydrukuje nam wyniki działania filtrów arpwatch
i cron umieszczone odpowiednio w sekcjach Arpwatch
Begin/End
oraz Cron Begin/End. Program Arpwatch
służy do śledzenia zmian przypisania numerów IP do
poszczególnych kart sieciowych. Informacje zwracane
przez ten filtr mogą dotyczyć pojawienia się nowego
komputera w sieci, jak również wymiany karty sieciowej
w jednym z komputerów.

LogWatch pozwala nam na nie wskazywanie konkret-

nych usług. Zamiast tego, możemy wskazać plik logu,
który chcemy przeanalizować. LogWatch wykorzysta
wtedy filtry wszystkich usług powiązanych z tym pli-
kiem. Przykładowo, możemy sprawdzić wczorajsze infor-
macje dotyczące pliku /var/log/messages i przesłać je do
skrzynki pocztowej użytkownika gerard (jeśli mamy go
w systemie):

logwatch --detail low --logfile messages

S

--range yesterday --mailto gerard

Użytkownik ten otrzyma list zawierający informacje takie,
jak komunikaty błędów zwracane przez jądro (w sekcji
Kernel), informacje o problemach z ładowaniem modu-
łów (ModProbe), komunikaty demona Identd i inne. Warto
zwrócić uwagę, że w sekcjach niektórych filtrów może poja-
wić się linia o treści **Unmatched Entries**. Umieszczone
po niej linie nie pasowały do żadnej z reguł filtru (chociaż
dotyczyły tej konkretnej usługi).

Inne narzędzia

Programów wspomagających przeglądanie i analizę logów
systemowych jest wiele. Dobór odpowiedniego zależy od
naszych potrzeb, umiejętności i przyzwyczajeń. Warto

odwiedzić serwis FreshMeat (http://freshmeat.net/ ), gdzie
między innymi w sekcji Browse –> System –> Logging znaj-
dziemy co najmniej kilkadziesiąt tego typu programów.
Zachęcam do samodzielnych poszukiwań, a w ramce
W Sieci zamieszczam odnośniki do kilku wybranych pro-
jektów.

Zakończenie

Przeglądanie i analizowanie logów systemowych ma sens.
Pozwala nam na wykrycie błędów w konfiguracji systemu,
„doszlifowanie” go i dopasowanie do naszych potrzeb. Ana-
lizując logi rutera możemy dostosowywać podział łącza tak,
aby korzystanie z niego było jak najbardziej komfortowe
dla użytkowników. Logi serwera WWW mogą nam wska-
zać błędy w konstrukcji naszych serwisów. Mogą nas też
powiadomić o próbach włamań (oby nieudanych).

Jeśli chodzi o włamania, trzeba zdawać sobie sprawę

z pewnej rzeczy. Analiza logów w tym konkretnym przy-
padku jest często spóźniona. Będzie to już jedynie czyta-
nie historii o tym, jak ktoś dostał się do naszego systemu
i zrobił z nim, co chciał. Może być też tak, że włamywacz
usunie z logów wpisy świadczące o jego obecności. Uchro-
nić nas przed takimi sytuacjami mogą systemy wykrywania
włamań (IDSIntrusion Detection System).

W Sieci:

• ADMLogger:

http://aaron.marasco.com/linux.html

• AJMS:

http://www.argray.org/ams/

• Analog:

http://www.analog.cx/

• Firewall Log Daemon:

http://rouxdoo.freeshell.org/dmn/

• FWAnalog:

http://tud.at/programm/fwanalog/

• FWLogWatch:

http://www.kyb.uni-stuttgart.de/boris/software.shtml

• FWReport:

http://sourceforge.net/projects/fwreport/

• GLogWatch:

http://www.uberh4x0r.org/download/gkrellm/

• Log_analysis:

http://linux.umbc.edu/~mabzug1/log_analysis.html

• Log Tool:

http://xjack.org/logtool/

• LogWatch:

http://www.logwatch.org/

• MultiTail:

http://www.vanheusden.com/multitail/

• Swatch:

http://swatch.sourceforge.net/

• Webalizer:

http://www.mrunix.net/webalizer/

• Webmin:

http://www.webmin.com/

Rysunek 5.

Na witrynie programu LogWatch znajdziemy dokładne

wskazówki, jak stworzyć własne filtry


Wyszukiwarka

Podobne podstrony:
Opis oprogramowania wspomagające analizę komponentów systemu komputerowego, Prace kontrolne
2004 03 Adobe Photoshop i Linux [Grafika]
Lab 03 Analiza obwodu elektrycz Nieznany
2004 03 a6av c5 25tdi
Analiza i pomiar systemów logistycznych wykład 1( 24.02.2008)(1), Logistyka, Logistyka
03.Funkcje partii i systemy partyjne, 12.PRACA W SZKOLE, ZSG NR 4 2008-2009, PG NR 5
analiza ryzyka dla administracji(1)
20 03 2012 Współczesne systemy polityczyne wykłady
analiza porownawcza systemow bankowych sc
01 03 analiza kineamryczna zadanie 03
Margasiński Analiza psychologiczna systemów rodzinnych z chorobą alkoholową
Analiza danych w Systemach Informacji Przestrzennej
Wykład 1- 8.03.2008, stosunki pracy w administracji publicznej
tekst slajdów, politologia, systemy administracji publicznej- prezentacja
Principles of system administra Nieznany
Inżynier Budownictwa 2004 03
08.03 Analiza ekonomiczna wykad II, Ekonomia

więcej podobnych podstron