2006 05 Simple Event Correlator (SEC) w monitorowaniu logów bezpieczeństwa


Simple Event Correlator
(SEC) w monitorowaniu
logów bezpieczeństwa
Pod lupÄ…
Risto Vaarandi
stopień trudności
W ciągu ostatniej dekady korelacje między zdarzeniami stały
się istotną techniką przetwarzania zdarzeń w wielu dziedzinach
(zarządzaniu sieciami i bezpieczeństwem, detekcja intruzów itd.),
jednak istniejące otwarte narzędzia monitorujące nie obsługują
ich zbyt dobrze. Omówimy tutaj, jak zastosować SEC
w monitorowaniu i korelowaniu zdarzeń z logów bezpieczeństwa.
sferze bezpieczeństwa systemu in- logów w czasie rzeczywistym w miarę, jak są
formatycznego logi zdarzeń odgry- one emitowane przez komponenty systemu, lo-
Wwają krytyczną rolę. We współcze- gi zdarzeń są doskonałym zródłem informacji
snym świecie wiele aplikacji, systemów ope- dla monitorowania systemu, uwzględniając tu-
racyjnych, urządzeń sieciowych i innych kom- taj mogące w nim wystąpić wydarzenia z dzie-
ponentów systemu jest w stanie zapisywać do dziny bezpieczeństwa. W ciągu ostatnich 10-15
plików komunikaty o związanych z bezpieczeń- lat powstało wiele otwartych narzędzi pozwala-
stwem wydarzeniach. Pochodzący z BSD pro- jących na monitorowanie logów zdarzeń w cza-
tokół syslog to standard logowania zdarzeń ob- sie rzeczywistym, m.in. Swatch czy Logsurfer.
sługiwany przez większość producentów syste-
mów operacyjnych i urządzeń sieciowych, po-
zwalający na uruchomienie centralnego ser- Z artykułu dowiesz się...
wera logów, który zbiera i składuje wiadomo-
" Czym jest korelowanie zdarzeń i jakie są po-
ści o zdarzeniach z całego systemu informa-
wszechne podejścia do tego zagadnienia,
tycznego. Istnieje także szereg elastycznych i
" jaka była motywacja ku stworzeniu SEC i jakie
potężnych implementacji serwera syslog zdat-
są jego główne możliwości,
nych do użytku na centralnym serwerze logów,
" jak zastosować SEC w monitorowaniu w czasie
w szczególności Syslog-ng. Biorąc pod uwa-
rzeczywistym logów zdarzeń bezpieczeństwa.
gę, że logowanie zdarzeń jest szeroko rozpo-
wszechnione i wysoce ustandaryzowane, sÄ…
Powinieneś wiedzieć...
duże szanse że po zaistnieniu w systemie in-
formatycznym incydentu związanego z bez- " zakładamy, że czytelnik zna język wyrażeń re-
gularnych,
pieczeństwem, fakt ten dokumentować będzie
" przy czytaniu sekcji Integrowanie własnego ko-
jedna lub więcej wiadomości w pliku bądz pli-
du Perla z zasadami SEC pomocna okaże się
kach logów.
znajomość podstaw Perla.
Jako że w większości przypadków wiado-
mości o zdarzeniach są dołączane do plików
hakin9 Nr 5/2006
44 www.hakin9.org
Pod lupÄ…
Niestety, większość z tych narzędzi " jeżeli wystąpiło N zdarzeń nie- korelator ma skorelować szereg zda-
jest w stanie wykonywać jedynie naj- udane logowanie jako użytkow- rzeń, wyszukuje najlepiej pasujący
prostsze zadania, na przykład pod- nik X w ciągu ostatnich T sekund, wektor bądz wektory w księdze kodów
nosić alarm natychmiast po dołącze- wygeneruj zdarzenie nadmierna i zgłasza odpowiednie dla niego/nich
niu konkretnej wiadomości do pliku liczba nieudanych logowań jako interpretacje. W metodzie opartej na
logów. Z drugiej strony, wiele waż- użytkownik X i wyślij je w formie grafach, człowiek-analityk identy-
nych zadań z dziedziny przetwarza- alarmu do administratora bezpie- fikuje wszystkie zależności pomię-
nia zdarzeń opiera się na korelowa- czeństwa, dzy komponentami systemu (usługa-
niu zdarzeń  konceptualnej proce- " jeżeli wystąpiło zdarzenie nie- mi, hostami, urządzeniami sieciowymi
durze interpretacji, w której znacze- udane logowanie jako użytkow- itd.) i konstruuje graf, w którym każdy
nie przypisywane jest szeregom zda- nik X, a w ciągu kolejnych T se- wierzchołek to komponent systemu,
rzeń mających miejsce w uprzednio kund nie zaobserwowano zda- każda krawędz zaś  zależność po-
określonych przedziałach czasu (Ja- rzenia udane logowanie jako między dwoma komponentami. Kie-
kobson i Weissman, 1995). Aplikacja użytkownik X, wygeneruj zdarze- dy występuje szereg zdarzeń, za po-
implementująca korelowanie zda- nie nieudane logowanie bez póz- mocą grafu wyszukuje się pierwotną
rzeń nazywana jest korelatorem zda- niejszego sukcesu, jako użytkow- ich przyczynę (np. dziesięć zdarzeń
rzeń; w czasie realizacji procedury nik X i wyślij je w formie alarmu serwer HTTP nie odpowiada zosta-
interpretacji korelator może tworzyć do administratora bezpieczeń- ło spowodowanych przez awarię po-
nowe zdarzenia i/lub ukrywać zda- stwa. jedynczego połączenia sieciowego).
rzenia oryginalne przed końcowym W metodzie opartej na sieciach neu-
użytkownikiem. W ciągu ostatniej dekady zapropo- ronowych odpowiednio szkoli się sieć,
W ramach przykładu na to, jak nowano szereg podejść do korelo- by mogła identyfikować anomalie
ważne jest korelowanie zdarzeń w wania zdarzeń, między innymi opar- w strumieniu zdarzeń, wykrywać pier-
zarządzaniu bezpieczeństwem, roz- te na: regułach (Froehlich et al., wotne przyczyny i tak dalej.
ważmy przetwarzanie zdarzeń nie- 2002), księgach kodów (Yemini et Podejście oparte na regułach
udane logowanie. Chociaż pojedyn- al., 1996), grafach (Gruschke 1998) jest stosowane bardzo powszech-
cze zdarzenie nieudane logowanie i sieciach neuronowych (Wietgrefe nie w korelowaniu zdarzeń i zo-
może być oznaką próby złamania ha- et al., 1997; Wietgrefe 2002), a tak- stało wykorzystane w wielu pro-
sła, jednak może ono także znaczyć, że metody probabilistyczne (Meira duktach, na przykład HP ECS czy
że użytkownik przypadkowo wpisał 1997; Steinder and Sethi, 2002). Po- RuleCore. W tym przypadku zda-
niewłaściwe hasło. Z tego względu nadto na rynku dostępnych jest wie- rzenia korelowane są według zde-
nie można po prostu skonfigurować le produktów korelujących zdarze- finiowanych przez człowieka-anali-
narzędzia monitorującego logi tak, nia, na przykład HP ECS, SMARTS, tyka reguł postaci warunek dzia-
by ogłaszało ono natychmiastowy NetCool, NerveCenter, LOGEC czy łanie,. Jedną z głównych zalet kore-
alarm po wystąpieniu w logach wia- RuleCore. lowania zdarzeń w oparciu o reguły
domości nieudane logowanie  skut- Metoda oparta na księgach kodów jest fakt, że ludzie potrafią na ogół
kiem takiego podejścia mogłaby być (wykorzystywana przez SMARTS) wyrazić w naturalny sposób swo-
duża liczba fałszywych alarmów. Do działa następująco  jeżeli szereg ją wiedzę w postaci reguł. Przykła-
ograniczenia liczby fałszywych alar- zdarzeń e1, & , ek ma być interpreto- dowo, za pomocą reguł łatwo moż-
mów wykorzystać można jeden bądz wany jako zdarzenie A, e1, & , ek jest na opisać zależności czasowe po-
oba przedstawione poniżej sposoby składowany w księdze kodów jako bi- między zdarzeniami  co w przy-
korelacji zdarzeń: towy wektor wskazujący na A. Gdy padku innych metod byłoby kłopo-
tliwe. Ponadto w przeciwieństwie
do niektórych innych metod korelo-
Listing 1. Reguła SEC korelująca wiadomości SNMP public access udp
wania zdarzeń (np. w oparciu o sie-
ze Snort IDS
ci neuronowe), korelowanie w opar-
# Sample matching input line: ciu o reguły i jest jasne i przejrzy-
# Mar 1 00:36:32 snorthost.mydomain [auth.alert] snort[17725]: [1:1411:10]
ste dla końcowego użytkownika.
# SNMP public access udp [Classification: Attempted Information Leak]
Jak postuluje siÄ™ w (Rich i Knight,
# [Priority: 2]: {UDP} 192.168.115.34:54206 -> 192.168.52.179:161
1991), kiedy końcowi użytkownicy
nie rozumiejÄ…, dlaczego i jak aplika-
type=SingleWithSuppress
ptype=RegExp cja zwróciła takie, a nie inne infor-
pattern=snort\[\d+\]: \[[\d:]+\] SNMP public access udp.*\{UDP\} \
macje, majÄ… oni tendencjÄ™ do igno-
([\d\.]+):\d+ -> ([\d\.]+):\d+
rowania obliczonych przez tÄ™ apli-
desc=SNMP public access from $1 to $2
kację rezultatów.
action=pipe '%s' mail -s 'Snort alert' root
Chociaż korelowanie zdarzeń
window=300
stało się ważną techniką przetwa-
www.hakin9.org
46 hakin9 Nr 5/2006
Simple Event Correlator
rzania zdarzeń w wielu dziedzi-
Listing 2. Zbiór reguł SEC do korelowania wiadomości sshd o porażce i
nach (w tym zarzÄ…dzaniu sieciami
sukcesie uwierzytelniania, pod Solarisem
i bezpieczeństwem, detekcji intru-
zów itd.), istniejące otwarte narzę-
# Sample matching input lines:
dzia do monitorowania logów nie
# Apr 3 14:20:19 myhost sshd[25888]: [ID 800047 auth.error] error:
obsługują go zbyt dobrze. Pomi- # PAM: Authentication failed for risto from myhost2
# Apr 3 14:20:23 myhost sshd[25888]: [ID 800047 auth.info] Accepted
mo faktu, że systemy korelacji zda-
# keyboard-interactive/pam for risto from 192.168.27.69 port 9729 ssh2
rzeń obecne już na rynku odniosły
wielki sukces i są używane przez
type=PairWithWindow
wiele dużych firm na całym świe-
ptype=RegExp
cie, cierpiÄ… one na szereg przy- pattern=sshd\[\d+\]: \[ID \d+ auth\.error\]\
error: PAM: Authentication
padłości. Po pierwsze, istniejące
failed for (\S+) from \S+
systemy to często ciężkie rozwią-
desc=PAM authentication failed for $1
zania o skomplikowanej konstruk-
action=event PAM_AUTHENTICATION_FAILED_FOR_$1
cji i interfejsie użytkownika. Ozna-
ptype2=RegExp
cza to, że ich wdrażanie i pielę- pattern2=sshd\[\d+\]: \[ID \d+ auth\.info\]\
Accepted keyboard-interactive/pam for ($1) from \S+ port \d+ ssh2
gnacja są czasochłonne, a także
desc2=PAM authentication successful for $1
że wymagają szeroko zakrojone-
action2=none
go szkolenia użytkowników. Ponad-
window=30
to ich złożoność i wymagania pod
względem zasobów często czynią type=SingleWithThreshold
ptype=RegExp
je niezdatnymi do wykorzystania
pattern=PAM_AUTHENTICATION_FAILED_FOR_(\S+)
w mniejszych systemach informa-
context=!USER_$1_ALREADY_COUNTED && !COUNTING_OFF
tycznych bÄ…dz do korelowania zda-
continue=TakeNext
rzeń na węzłach o ograniczonych
desc=Ten authentication failures for distinct users have been observed
zasobach obliczeniowych. Po dru- action=pipe '%s' mail -s 'PAM alert' root; create COUNTING_OFF 3600
window=600
gie, ze względu na to że istniejące
thresh=10
systemy są w większości komercyj-
ne, sÄ… one przywiÄ…zane do konkret-
type=Single
nych platform  klientom zapewnia
ptype=RegExp
się pliki binarne programów, które pattern=PAM_AUTHENTICATION_FAILED_FOR_(\S+)
context=!USER_$1_ALREADY_COUNTED && !COUNTING_OFF
można uruchomić pod ograniczo-
desc=Set up the "count once" context for user $1
ną liczbą systemów operacyjnych.
action=create USER_$1_ALREADY_COUNTED 600
Ponadto niektóre komercyjne sys-
temy zaprojektowane zostały tylko
pod jedną konkretną platformę za- ka z życia wziętych przykładów na Aby osiągnąć niezależność od
rządzania (np. HP OpenView). Nie- to, jak wykorzystać SEC w monitoro- platformy systemu operacyjnego,
które obciąża także fakt, że zapro- waniu i korelowaniu zdarzeń z logów autor zdecydował się napisać SEC
jektowano je konkretnie pod kątem bezpieczeństwa. w Perlu. Biorąc pod uwagę, że Perl
zarządzania problemami z siecią, dostępny jest pod prawie każdym ro-
co czyni niewygodnym ich zasto- Podstawy SEC dzajem systemów operacyjnych i że
sowanie w innych sferach (w tym SEC to otwarte narzędzie korelu- stał się standardową częścią wie-
do monitorowania logów zdarzeń). jące zdarzenia, wykorzystujące do lu ich dystrybucji, perlowe aplikacje
Po trzecie, istniejące systemy ma- przetwarzania zdarzeń podejście mogą działać pod całą gamą syste-
ją tendencję do bycia dość drogimi, oparte na regułach. To ostatnie wy- mów. Ponadto, dobrze napisane pro-
a co za tym idzie wiele instytucji o brane zostało ze względu na natu- gramy w Perlu są szybkie i efektyw-
coraz bardziej ograniczonym bu- ralność wyrażania w nim wiedzy nie korzystają z pamięci.
dżecie nie może korzystać z nich w oraz przejrzystość procesu korelo- SEC pobiera zdarzenia ze stru-
codziennych zadaniach z dziedzi- wania zdarzeń. Głównymi zadania- mieni plików. W chwili obecnej ob-
ny zarządzania bezpieczeństwem mi projektowymi SEC były: nieza- sługiwane są zwykłe pliki, nazwa-
i sieciami. leżność od platformy, lekkość kon- ne potoki i standardowe wejście,
W niniejszej publikacji omówi- strukcji i łatwość konfiguracji, możli- co pozwala wykorzystywać SEC w
my SEC (Simple Event Correlator) wość zastosowania w szerokim za- charakterze rozwiązania monitoro-
 otwarte narzędzie stworzone przez kresie zadań z udziałem korelowa- wania logów zdarzeń i zintegrować
jej autora na potrzeby lekkiego i nie- nia zdarzeń oraz niskie wymaga- je z dowolnymi aplikacjami zdolny-
zależnego od platformy korelowania nia pod względem zasobów syste- mi zapisywać wysyłane przez sie-
zdarzeń  oraz przeanalizujemy kil- mowych. bie zdarzenia do strumieni plików.
www.hakin9.org hakin9 Nr 5/2006 47
Pod lupÄ…
Aplikacje posiadające API zarzą- rażeń regularnych jest stosowa- " PairWithWindow  po zaobser-
dzania zdarzeniami można również ny przy dopasowywaniu zdarzeń wowaniu zdarzenia A, zaczekaj t
zintegrować poprzez proste wtycz- przez większość narzędzi do moni- sekund na pojawienie się zdarze-
ki, które korzystają z wywołań API torowania logów, ewentualne wdro- nia B; jeżeli B nie dotrze na czas
przy czytaniu strumienia zdarzeń żenie SEC jako alternatywy dla nich wykonaj listę działań, w przeciw-
z aplikacji i kopiują te ostatnie na wymaga znacznie mniej wysiłku. nym wypadku wykonaj inną listę,
standardowe wyjście bądz do pliku Poczynając od wersji 2.3.0 moż- " SingleWithThreshold  licz pa-
(przykładową wtyczka dla HP Open- liwe jest przekazywanie zdarzeń sujące zdarzenia przychodzące
View Operations znalezć można w do sprawdzenia prekompilowanych w ciągu t sekund, wykonaj listę
pakiecie SEC). procedur Perla, co pozwala użyt- działań jeżeli przekroczony zo-
SEC może serwować zdarzenia kownikom tworzyć własne mecha- stał podany próg,
wywołując podane przez użytkow- nizmy dopasowywania wzorców. " SingleWith2Thresholds  jak
nika polecenia powłoki, zapisując Oprócz wzorca dopasowania SingleWithThreshold, ale z do-
komunikaty do plików bądz nazwa- większość reguł określa listę dzia- datkową drugą rundą zliczania,
nych potoków, wywołując prekom- łań, a opcjonalnie także boolowskie z opadającym progiem,
pilowane procedury Perla itd. Za- wyrażenie określające kontekst. " Suppress  ukryj pasujące zda-
uważ także, że zdarzenia te mogą Konteksty SEC to logiczne twory rzenia wejściowe,
być także wysyłane przez sieć do tworzone w procesie korelowania " Calendar  wykonaj listę działań
innej instancji SEC, co pozwala na zdarzeń, każdy posiada określo- o określonej porze.
zestawienie rozproszonych mecha- ny (skończony bądz nie) czas ży-
nizmów korelowania zdarzeń. Po- cia. Konteksty pozwalają nam ak- Większość definicji reguł SEC po-
nadto chociaż SEC nie posiada gra- tywować bądz deaktywować zasa- siada parametr zwany łańcuchem
ficznego interfejsu użytkownika do dy dynamicznie, w czasie działania opisu zdarzenia, którego zada-
przeglądania i zarządzania wytwa-  np. jeżeli w definicji reguły mamy niem jest określenie zakresu ko-
rzanymi przez siebie zdarzeniami, wyrażenie kontekstu (X OR Y), a relacji zdarzeń (jego szczegółowe
bardzo prosto można skierować je- ani kontekst X, ani kontekst Y w da- omówienie znajdziecie w sekcji Re-
go zdarzenia do aplikacji/ramy za- nej chwili nie istnieją, dana reguła guły SEC i operacje korelacji zda-
rządzania systemem, która taki GUI nie zostanie zastosowana. Kolejną rzeń). Kiedy zdarzenie pasuje do
posiada (np. HP OpenView Opera- ważną funkcją kontekstów SEC jest danej reguły, SEC wylicza klucz ko-
tions). działanie jako składy zdarzeń  in- relacji zdarzenia, łącząc nazwę pli-
Konfiguracja SEC składowana teresujące nas zdarzenia mogą być ku reguły, jej identyfikator oraz łań-
jest w plikach tekstowych, które moż- skojarzone z kontekstem, po czym cuch opisu zdarzenia. Jeżeli istnieje
na tworzyć i modyfikować za pomo- wszystkie wybrane zdarzenia mo- operacja korelacji zdarzeń o takim
cą dowolnego edytora tekstu. Każ- gą być przekazane do zewnętrz- samym kluczu, zdarzenie jest z nią
dy plik zawiera jedną lub więcej re- nego przetworzenia w pózniejszym korelowane. Jeżeli nie istnieje taka
guł, zaś zbiory reguł z różnych pli- czasie (pomysł ten zapożyczone operacja, a reguła deklaruje korela-
ków stosowane są praktycznie rów- został z Logsurfera). cję zdarzeń w czasie, SEC tworzy
nolegle. SEC czyta dane ze swoich W chwili obecnej SEC obsługuje nową operację o wyliczonym wła-
zródeł linia po linii, zaś za każdym dziewięć rodzajów reguł, implemen- śnie kluczu. Trzeba tutaj odnoto-
razem, gdy wczytana została nowa tujących szereg powszechnych sce- wać, że między regułami, a opera-
linijka, jest ona porównywana z re- nariuszy korelowania zdarzeń: cjami korelacji zdarzeń nie istnie-
gułami z pliku bądz plików konfigu- je zależność jeden na jeden  SEC
racyjnych. " Single  wykonaj listę działań może uruchomić wiele operacji dla
Ważną częścią każdej regu- po zaobserwowaniu pasującego jednej reguły, zaś reguły typów:
Å‚y SEC jest wzorzec dopasowania zdarzenia, Single, SingleWithScript, Suppress
zdarzenia. SEC obsługuje we wzor- " SingleWithScript  jak Single, ale oraz Calendar nie deklarują korela-
cach wyrażenia regularne, podłań- dodatkowo wykorzystaj do dopa- cji zdarzeń w czasie i z tego wzglę-
cuchy, procedury Perla oraz war- sowania zewnętrzny skrypt, du nigdy nie wyzwalają operacji.
tości logiczne. Wsparcie dla wyra- " SingleWithSuppress  jak Single, Działania SEC przewidziano nie
żeń regularnych ułatwia konfigura- ale ponadto ignoruj dalsze pasu- tylko do generowania zdarzeń wyj-
cję programu, jako że wiele unikso- jące zdarzenia przez t sekund, ściowych, ale także do tworzenia
wych narzędzi (np. grep, sed, find " Pair  wykonaj listę działań dla reguł dla interakcji, do zarządza-
itp.) opiera się na nich i przez to zdarzenia A, po czym ignoruj dal- nia kontekstami i składowania zda-
większość administratorów bezpie- sze wystąpienia A do momentu, rzeń, do łączenia z SEC zewnętrz-
czeństwa, systemów i sieci zna już aż nie pojawi się zdarzenie B; nych modułów analizy zdarzeń, do
język wyrażeń regularnych. Ponad- w chwili wystąpienia B wykonaj wywoływania własnego kodu Per-
to biorąc pod uwagę, że język wy- drugą listę działań, la bez otwierania osobnego proce-
www.hakin9.org
48 hakin9 Nr 5/2006
Simple Event Correlator
su itd. Aącząc grupy reguł z odpo-
Listing 3. Zbiór reguł SEC do konsolidacji wiadomości alarmowych
wiednimi listami działań i wyraże-
priorytetu 1 ze Snort IDS
niami kontekstu można definiować
bardziej złożone mechanizmy ko-
# Matching input line:
relowania zdarzeń. Poniższa sekcja
# Apr 4 10:10:55 snorthost.mydomain [auth.alert] snort[18800]:
przedstawia szczegółowe przykła- # [1:2528:14] SMTP PCT Client_Hello overflow attempt
# [Classification: Attempted Administrator Privilege Gain]
dy oraz dyskusjÄ™ na temat konstru-
# [Priority: 1]: {TCP} 192.168.5.43:28813 -> 192.168.250.44:25
owania zbiorów reguł SEC pod ką-
tem monitorowania logów zdarzeń
type=Single
bezpieczeństwa.
ptype=RegExp
pattern=snort\[\d+\]: \[[\d:]+\].*\[Priority: 1\]: \S+ \
Monitorowanie logów
([\d\.]+):?\d* -> [\d\.]+:?\d*
context=!ATTACK_FROM_$1
bezpieczeństwa z SEC
continue=TakeNext
W niniejszej sekcji omówimy kilka
desc=Priority 1 attack started from $1
przykładów zbiorów reguł oraz moż-
action=create ATTACK_FROM_$1; \
liwości przetwarzania zdarzeń ofero- pipe '%s' mail -s 'Snort: priority 1 attack from $1 (alert)' root
wane przez SEC. Przykładowe zbio-
type=Single
ry reguł napisane zostały pod ką-
ptype=RegExp
tem monitorowania w czasie rzeczy-
pattern=snort\[\d+\]: \[[\d:]+\].*\[Priority: 1\]: \S+ ([\d\.]+):?\d* ->
wistym logów zdarzeń  logów zda-
[\d\.]+:?\d*
rzeń Snort IDS, dziennika systemo- context=ATTACK_FROM_$1
desc=Priority 1 incident from $1
wego Solaris /var/adm/messages
action=add ATTACK_FROM_$1 $0; \
oraz logu błędów serwera WWW
set ATTACK_FROM_$1 300 ( report ATTACK_FROM_$1 \
Apache. Zbiory te zostały przetesto-
mail -s 'Snort: priority 1 attack from $1 (report)' root )
wane pod SEC w wersji 2.3.3.
Jeżeli chcecie poeksperymento-
wać z przedstawionymi w tej sekcji
Listing 4. RegułaSEC przepuszczająca jedynie linie z /var/log/
zbiorami reguł, możecie pobrać SEC
messages
z jego strony domowej. Aby zainsta-
type=Suppress
lować SEC z jego pakietu zródłowe-
ptype=TValue
go, rozpakuj archiwum (np. tar  xzvf
pattern=TRUE
sec-2.3.3.tar.gz) i skopiuj nowo utwo-
context=!_FILE_EVENT_/var/log/messages
rzony plik sec.pl do odpowiedniego
desc=Pass only those lines that come from /var/log/messages
katalogu (np. cp sec-2.3.3/sec.pl /
usr/local/bin). Strona domowa SEC
zawiera także odnośniki do pakietów i/lub  conf. Inne często stosowane gdy demon Snorta zauważa w sie-
binarnych SEC dla różnych platform opcje to  log (ustawia dziennik SEC), ci pakiet zapytania SNMP z polem
systemów operacyjnych.  syslog (poleca SEC generować lo- społeczności o wartości public, za-
Aby uruchomić SEC w trybie inte- gi poprzez syslog),  debug (ustawia pisuje on odpowiednią wiadomość
raktywnym, do monitorowania dzien- poziom logowania SEC),  pid (usta-  jednak ze względu na to, że wie-
nika /var/log/messages z wykorzy- wia plik identyfikatora procesu SEC), le narzędzi do zarządzania siecią
staniem reguł z my.conf, wprowadz  detach (zmusza SEC do odłączenia odpytuje te same hosty wielokrot-
w linii poleceń poniższe: się od sterującego terminala i sta- nie z krótkimi interwałami czaso-
nia się demonem) oraz  testonly wymi, wiadomość może być zapi-
sec.pl  conf=my.conf (sprawdza poprawność reguł bez sana wielokrotnie dla tych samych
 input=/var/log/messages uruchamiania SEC). par zródłowych i docelowych ad-
resów IP. Omawiana tu reguła im-
Do skonfigurowania SEC tak, by mo- Reguły SEC i operacje plementuje scenariusz korelowania
nitorował on swoje standardowe wej- korelacji zdarzeń zdarzeń zwany kompresją  powta-
ście (jest to przydatne podczas te- Załóżmy, że mamy plik reguł o na- rzające się wystąpienia identycz-
stów) posłuży nam poniższe pole- zwie my.conf, zawierający jedną re- nych zdarzeń są redukowane do
cenie: gułę przedstawioną na Listingu 1. pojedynczego zdarzenia. Parametr
Reguła SingleWithSuppress z ptype w definicji reguły deklaruje,
sec.pl  conf=my.conf  input= Listingu 1 została zaprojektowa- że wzorzec dopasowania zdarze-
na tak, by dopasowywać wiadomo- nia jest wyrażeniem regularnym,
Zauważ, że w linii poleceń można ści SNMP public access udp z lo- zaś parametr pattern podaje wy-
podać więcej niż jedną opcję:  input gów Snort IDS. Za każdym razem, rażenie regularne. Parametr desc
www.hakin9.org hakin9 Nr 5/2006 49
Pod lupÄ…
definiuje łańcuch opisu zdarzenia, kład wartość parametru desc to SNMP nie do wiadomości o porażce uwie-
parametr action  listę działań wy- public access from $1, SEC zreduku- rzytelniania dla danego użytkow-
syłającą e-mailem ostrzeżenie do je wszystkie wiadomości o takim sa- nika, zmienna $1 ustawiana jest
lokalnego użytkownika root, win- mym zródłowym adresie IP do jed- na nazwę użytkownika. Następnie
dow zaś  ustawia okno korelacji nej, całkowicie ignorując adresy do- SEC uruchamia operację korelowa-
na 300 sekund. celowe. nia zdarzeń, która czeka na wiado-
Kiedy wyrażenie regularne pa- Na koniec warto wspomieć, iż mość o sukcesie uwierzytelnienia
suje do linii na wejściu, zmienne należy zachować ostrożność przy w ciągu kolejnych 30 sekund. Je-
specjalne $1 i $2 przyjmują wartości korzystaniu ze zmiennych specjal- żeli wiadomość ta dotrze na czas,
pól odpowiednio: zródłowego i do- nych $1, $2, & w definicjach sta- nie są podejmowane żadne dzia-
celowego adresu IP z tej linii  wy- nowiących część linii poleceń  ich łania (ponieważ parametr action2
rażenie regularne korzysta bowiem wartości zostaną bowiem zinter- ustawiany jest na none). Warto za-
w przypadku tych pól ze składni pretowane przez powłokę tak sa- uważyć, że w regułach Pair* moż-
z nawiasami. Następnie SEC wyli- mo, jak reszta linii poleceń. Przy- na korzystać ze zmiennych specjal-
czy klucz korelacji zdarzeń łącząc kładowo, jeżeli parametr pattern nych $1, $2, & w parametrze pat-
nazwę pliku z regułą, identyfikator ma wartość sshd\[\d+\]: (.+), ac- tern2, tj. wzorzec w drugiej połowie
reguły oraz łańcuch opisu zdarze- tion zaś  shellcmd echo $1 >> reguły Pair* może mieć dynamiczny
nia  np. jeżeli $1 to 192.168.115.34, myfile, złowrogi użytkownik mógłby charakter. Jeżeli wiadomość o suk-
a $2 to 192.168.52.179, wówczas wywołać poprzez SEC dowolne po- cesie uwierzytelnienia nie pojawi-
uzyskany klucz będzie miał postać lecenie zapisując do logów za po- ła się, operacja generuje poprzez
my.conf | 0 | SNMP public access mocą narzędzia logger fałszywą li- działanie event syntetyczne zdarze-
from 192.168.115.34 to 192.168.52.179 niÄ™ sshd[0]: `mycommand` Aby unik- nie o nazwie PAM _ AUTHENTICATION _
.
(identyfikatory reguł nadawane są nąć sytuacji tego rodzaju, wzorce FAILED _ FOR _ . Synte-
od wartości zero, zaś znak poto- SEC ustawiające specjalne zmien- tyczne zdarzenia SEC traktowane
ku wykorzystaliśmy jako separator). ne dla linii poleceń powinny być pi- są jak zwyczajne zdarzenia wej-
Jeżeli istnieje operacja o danym klu- sane tak, by metaznaki powłoki i in- ściowe, czytane z plików dziennika
czu, SEC przekaże do niej zdarze- ne niespodziewane dane nie były  są dodawane do kolejki wejścio-
nie wejściowe. Jeżeli operacja o da- przypisywane zmiennym. wej i dopasowywane do wszyst-
nym kluczu nie istnieje, SEC utwo- kich reguł.
rzy nową, o czasie życia 300 se- Tworzenie zestawów reguł Druga reguła, typu SingleWithTh-
kund. Operacja natychmiast wysy- SEC z pojedynczych reguł reshold, uruchamia operację korela-
ła e-mailem ostrzeżenie do lokal- Przedstawiony na Listingu 2 zbiór cji zdarzeń dopasowującą i zliczającą
nego użytkownika root, korzysta- reguł do przetwarzania wiadomości wiadomości PAM _ AUTHENTICATION _
jąc z działania pipe  łańcuch opi- o porażkach i sukcesach uwierzy- F A I L E D _ F O R _ < u s e r n a m e > .
su zdarzenia, oznaczony tutaj przez telniania stanowi bardziej złożony Jeżeli w oknie o szerokości 600 se-
%s, zostanie przekazany na stan- przykład, pokazujący jak uzyskać kund zaobserwowano 10 takich wia-
dardowe wejście polecenia mail  s można interakcję reguł poprzez domości, operacja wysyła e-mailem
'Snort alert' root  po czym za- syntetyczne zdarzenia oraz kon- ostrzeżenie do lokalnego użytkow-
cznie ignorować wszystkie dalsze teksty. Zadaniem tego zbioru reguł nika root, a ponadto tworzy kontekst
zdarzenia tego rodzaju otrzymane jest filtrowanie przypadkowych po- COUNTING _ OFF o czasie życia 1 go-
przez SEC do skorelowania. Inny- rażek logowania, po których wkrót- dziny  pozwala on uniknąć wysyła-
mi słowy, reguła zredukuje powta- ce następuje sukces, a następnie nia ostrzeżeń do roota co 10 minut
rzające się wiadomości SNMP pu- zliczenia nieprzypadkowych po- w sytuacji, gdy skanowanie kont trwa
blic access udp z tymi samymi: zró- rażek, próbując w ten sposób wy- dłużej. Wyrażenie podane w parame-
dłowym i docelowym adresem IP, kryć próby włamania się w krótkim trze context definicji reguły można od-
do pojedynczej wiadomości (pierw- okresie czasu na dużą liczbę wielu czytać jako: kontekst USER_szej z nich). kont, w odróżnieniu od działań skie- name>_ALREADY_COUNTED nie
Zawarcie w kluczu korelacji zda- rowanych przeciwko pojedynczemu istnieje i kontekst COUNTING_OFF
rzeń nazwy pliku z regułami oraz bądz kilku kontom. nie istnieje (w wyrażeniach kontekstu
identyfikatora reguły gwarantuje, że Pierwsza reguła, typu PairWi- SEC ! oznacza logiczne zaprzecze-
nigdy nie wystąpi kolizja pomiędzy thWindow, ma za zadanie kojarzyć nie, && - logiczną koniunkcję (AND), a
operacjami korelacji zdarzeń wy- wiadomości sshd o porażkach i || - logiczną alternatywę (OR)). Dla-
zwolonymi przez różne reguły. Po- sukcesach uwierzytelniania, w so- tego w przypadku istnienia kontek-
nadto użytkownik końcowy może, larisowym dzienniku systemowym stu COUNTING _ OFF wyrażenie zwró-
wybierając odpowiednią wartość /var/adm/messages. Po tym jak wy- ci fałsz i reguła nie dopasuje żadne-
parametru desc, zmienić zakres ko- rażenie regularne podane przez pa- go zdarzenia. Po zliczeniu zdarzenia
relowania zdarzeń. Jeżeli na przy- rametr pattern dopasowane zosta- PAM _ AUTHENTICATION _ FAILED _ FOR _
www.hakin9.org
50 hakin9 Nr 5/2006
Simple Event Correlator
jest ono przekazywane pomocą narzędzi starających się Aby składować wiadomości doty-
do trzeciej reguły, albowiem parametr znalezć w sieci docelowej jak naj- czące pewnego adresu IP ,
continue drugiej reguły ma wartość większą liczbę słabych punktów). zbiór reguł tworzy kontekst ATTACK _
TakeNext. Trzecia reguła tworzy kon- Z tego względu często nie jest roz- FROM _ . Pierwsza reguła
tekst USER _ _ ALREADY _ sądne generowanie alarmów dla wykrywa pierwsze zdarzenie przyna-
COUNTED i, biorąc pod uwagę że czas każdego wydarzenia  lepiej kon- leżące do ataku  dopasowuje on zda-
życia kontekstu i rozmiar okna zlicza- solidować je w mniejszą liczbę ra- rzenia o priorytecie 1 dla danego zró-
nia są takie same (600 sekund), za- portów. dłowego adresu IP tylko wtedy, gdy nie
pewnia on że każda unikalna nazwa Zestaw reguł przedstawiony na istnieje jeszcze kontekst dla tego adre-
użytkownika zwiększy licznik tylko Listingu 3 zaprojektowano tak, by su. Po dopasowaniu zdarzenia reguła
raz na etapie zliczania (po utworze- przetwarzać komunikaty Snorta o tworzy kontekst i wysyła e-mailem do
niu kontekstu dla danej nazwy użyt- priorytecie 1 i tej samej wartości po- lokalnego użytkownika root ostrzeże-
kownika wyrażenie kontekstu drugiej la zródłowego adresu IP (w dalszej nie o rozpoczęciu ataku. Druga regu-
reguły dla tej nazwy będzie zwracało części tego fragmentu tekstu ruch ła dopasowuje wiadomości priorytetu
fałsz). Innymi słowy, interakcja pomię- sieciowy wyzwalający takie wiado- 1 i za pomocą działania add dołącza
dzy drugą a trzecią regułą oznacza, mości nazywać będziemy atakami). je do składu zdarzeń odpowiedniego
że e-maile z ostrzeżeniami będą wy- Kiedy zauważona zostaje pierwsza kontekstu (zmienna specjalna $0 za-
syłane tylko w przypadkach dotyczą- wiadomość dla danego zródłowe- wiera całość dopasowanej linii wiado-
cych dziesięciu różnych kont. go adresu IP, SEC wyśle e-mailem mości). Następnie reguła wykorzystu-
ostrzeżenie o rozpoczęciu ataku. Je- je działanie set, aby przedłużyć czas
Wykorzystanie kontekstów żeli w ciągu kolejnych 5 minut nie po- życia kontekstu o kolejne 300 sekund
SEC do konsolidacji zdarzeń jawiły się żadne nowe wiadomości oraz ustawić dlań działanie przy kaso-
Konteksty SEC wykorzystać moż- dla tego adresu o priorytecie 1, SEC waniu (report ATTACK _ FROM _ $1 mail
na nie tylko do aktywowania i de- traktuje to jako koniec ataku i wysyła -s 'Snort: priority 1 attack from $1
aktywowania reguł, ale także do e-mailem raport zawierający wszyst- (report)' root). Działanie to zostanie
składowania zdarzeń. SEC definiu- kie zapisane wiadomości istotne dla wywołane tuż przed upływem cza-
je działanie add dodające zdarze- tego ataku. su życia kontekstu i jego usunięciem,
nie do składu zdarzeń danego kon-
tekstu, działanie report do przekazy-
Listing 5. Zbiór reguł SEC do monitorowania dziennika błędów
wania wszystkich zdarzeń ze składu
lokalnego serwera WWW Apache za pomocą dynamicznej listy wyrażeń
na standardowe wejście zewnętrz-
regularnych, a także przekazywania pasujących linii do zdalnego
nego polecenia, a także szereg zda-
serwera syslog
rzeń do wykonywania innych ope-
type=Single
racji na kontekstach (np. do prze-
ptype=SubStr
noszenia danych pomiędzy kontek-
pattern=SEC_STARTUP
stami bÄ…dz zmiennymi specjalnymi
context=SEC_INTERNAL_EVENT
SEC). W niniejszej sekcji przyjrzy-
continue=TakeNext
my siÄ™ prostemu scenariuszowi wy- desc=Load the Sys::Syslog module
action=assign %a 0; eval %a (require Sys::Syslog); \
korzystania kontekstów do agrega-
eval %a (exit(1) unless %a)
cji i zgłaszania wiadomości alarmo-
wych Snort IDS.
type=Single
Wiadomości alarmowe w dzien-
ptype=RegExp
nikach demonów Snorta mają przy- pattern=(SEC_STARTUP|SEC_RESTART)
context=SEC_INTERNAL_EVENT
znawany priorytet od 1 do 3 (gdzie
desc=Compile the logging routine and initialize the list of patterns
1 to najwyższy, a 3  najniższy
action=eval %syslog ( sub { Sys::Syslog::syslog('err', $_[0]); } ); \
priorytet), ponadto każda wiado-
eval %a ( @regexp = ('192\.168\.1\.1', 'File does not exist:'); \
mość posiada pola ze zródłowym
Sys::Syslog::openlog('SEC', 'cons,pid', 'daemon') )
i docelowym adresem IP, odzwier-
# Matching input line:
ciedlajÄ…ce nadawcÄ™ i odbiorcÄ™ po-
# [Fri Mar 24 09:19:50 2006] [error] [client 192.168.1.1]
dejrzanego ruchu w sieci. Dość po-
# File does not exist: /var/apache/htdocs/robots.txt
wszechnym zjawiskiem jest fakt, że
po zauważeniu przez Snorta zda-
type=Single
rzenia dla pewnego zródłowego ptype=PerlFunc
pattern=sub { foreach my $pat (@regexp) {\
adresu IP, wkrótce potem pojawiają
if ($_[0] =~ /$pat/) { return 1; } } return 0; }
siÄ™ inne zdarzenia zwiÄ…zane z tym-
desc=Forward the suspicious message line to remote syslog server
że adresem (szczególnie prawdzi-
action=call %o %syslog $0
we jest to w przypadku ataków za
www.hakin9.org hakin9 Nr 5/2006 51
Pod lupÄ…
tj. w sytuacji gdy nie zaobserwowano wejściowe z różnych zródeł przy- /var/log/messages, przepuszcza
żadnych wiadomości o priorytecie 1 padkowo pasują do reguł, do któ- ona bowiem jedynie linie dla niej
dla danego IP przez ostatnie 300 se- rych nie miały pasować, wywoły- odpowiednie.
kund. Działanie przy kasowaniu wyko- wane w ten sposób niespodziewa- Jeżeli opcja  intcontexts zosta-
rzystuje działanie report do przekaza- ne efekty uboczne mogą uczynić ła podana, dla syntetycznych zda-
nia składu zdarzeń danego kontekstu zachowanie zbioru reguł niezrozu- rzeń generowanych przez działa-
do polecenia mail -s 'Snort: priority miałym dla użytkownika. nie event SEC stosuje wewnętrz-
1 attack from $1 (report)' root, któ- Celem zajęcia się ww. problema- ny kontekst _ INTERNAL _ EVENT.
re wysyła zebrane zdarzenia do lokal- mi SEC oferuje opcję  intcontexts, Z drugiej strony, czasem końco-
nego użytkownika root. Z jednej stro- która nakazuje mu stworzenie we- wy użytkownik chciałby móc zde-
ny ataki składające się z wielu zdarzeń wnętrznego kontekstu po wczyta- finiować inny wewnętrzny kontekst
będą zgłaszane w jednym liście, z dru- niu linii ze zródła, a następnie ska- dla syntetycznego zdarzenia. Moż-
giej zaś nawet w przypadku długotrwa- sowaniu go po porównaniu tej li- na to obejść tworząc nazwany po-
łego ataku końcowy użytkownik wciąż nii ze wszystkimi regułami. Jeże- tok za pomocą narzędzia mkfifo,
otrzyma na czas ostrzeżenie o jego li plik wejściowy nosi nazwę np. nakazując SEC za pomocą opcji
rozpoczęciu. /var/log/messages, odpowiedni we-  input monitorowanie tego potoku
wnętrzny kontekst zostanie nazwa- i stosując w odpowiednich defini-
Monitorowanie wielu plików ny _ FILE _ EVENT _ /var/log/messages. cjach reguł działanie write zamiast
Obok możliwości zaawansowane- Dzięki temu, że wewnętrzne kontek- event. Jeżeli np. stworzyliśmy na-
go korelowania i konsolidacji zda- sty mogą być wykorzystywane w wy- zwany potok /var/log/pipe wywołu-
rzeń, SEC posiada kolejną istot- rażeniach kontekstu w definicjach re- jąc polecenie mkfifo /var/log/pipe,
ną zaletę w porównaniu z inny- guł, użytkownik może pisać reguły a SEC został uruchomiony z opcją
mi dobrze znanymi rozwiązaniami pasujące do zdarzeń pochodzących  input=/var/log/pipe=SYSLOG, za-
do monitorowania logów  możli- jedynie z pewnego konkretnego zró- stosowanie action=write /var/log/
wość jednoczesnego monitorowa- dła. Jeżeli użytkownik pragnie zasto- pipe MY _ SYNTHETIC _ EVENT (które
nia wielu dzienników, dzięki której sować własne nazwy wewnętrznych to działanie każe SEC zapisać linię
SEC jest w stanie korelować zda- kontekstów albo stworzyć jeden ta- MY _ SYNTHETIC _ EVENT do /var/log/
rzenia pochodzące z różnych zró- ki kontekst dla wielu zródeł wejścio- pipe) powoduje wystąpienie zda-
deł. Ponadto w sytuacji, gdy w sys- wych, odpowiednie nazwy mogą być rzenia MY _ SYNTHETIC _ EVENT w we-
temie istnieje duża liczba dzienni- podane w argumencie opcji  input. wnętrznym kontekście SYSLOG.
ków, mogą być one monitorowane Przykładowo, opcje  input=/var/
przez pojedynczy proces SEC, co log/syslog=SYSLOG  input=/var/adm/ Integracja własnego kodu
nie tylko oszczędza miejsce w ta- messages=SYSLOG nakazują SEC sto- Perla z regułami SEC
beli procesów, ale także upraszcza sować wewnętrzny kontekst SYSLOG Chociaż omówione do tej pory moż-
pielęgnację samego SEC (np. SEC zarówno dla /var/log/syslog, jak i liwości SEC pozwalają pisać zbiory
posiada wtedy tylko jeden identy- /var/adm/messages. reguł odpowiednie dla szerokiego
fikator procesu i jeden plik dzien- Tytułem przykładu zastosowania zakresu scenariuszy korelowania
nika). Konfiguracja SEC pod ką- wewnętrznych kontekstów rozważ- zdarzeń, istnieją pewne przypadki
tem monitorowania więcej niż jed- my regułę Suppress przedstawioną których nie da się przetworzyć po-
nego zródła wejściowego jest bar- na Listingu 4, umieszczoną na po- przez połączenie tych możliwości.
dzo prosta  po prostu podaje się czątku pliku z regułami. Przykładowo, wzorce RegExp nie
mu więcej niż jedną opcję  input w Reguła SEC typu Suppress mogą być wykorzystane do zdefi-
linii poleceń, przekazuje się opcji ukrywa pasujące do niej zdarze- niowania dynamicznej listy wyra-
 input nazwę pliku zawierającą jo- nia  pełni rolę filtru nieprzepusz- żeń regularnych. Ponadto działanie
kery, względnie łączy obie możli- czającego zdarzeń do dalszych re- pipe z poprzedniego przykładowe-
wości. guł w ich pliku. W definicji regu- go zbioru zadań wymaga tworzenia
Jeżeli jednak stosuje się wie- ły na Listingu 4 parametry ptype osobnych procesów dla zewnętrz-
le reguł, korzystanie z więcej niż i pattern określają, że wzorzec to nych poleceń, przez co wywołanie
jednego zródła wejściowego może wartość logiczna TRUE, pasująca pipe kilkaset razy na sekundę spo-
spowodować problemy z wydajno- do każdej linii  jednak wyrażenie woduje zmarnowanie na tworzenie
ścią i przejrzystością. Jeżeli obec- kontekstu ! _ FILE _ EVENT _ /var/ nowych procesów znaczących ilo-
nych jest wiele reguł zaprojektowa- log/messages zwraca prawdę je- ści czasu procesora. Wprawdzie
nych pod kątem pojedynczego zró- dynie dla linii nie pochodzących z SEC zapewnia zmienne specjalne,
dła, dopasowywanie doń linii po- /var/log/messages. Z tego wzglę- które użytkownik może wykorzy-
chodzących z innych zródeł może du reguła ta może zostać użyta stać do składowania wartości, są
generować istotny narzut na dzia- na początku pliku z regułami za- one jednak podobne do perlowych
łanie programu. Ponadto jeżeli linie projektowanymi do przetwarzania skalarów i nie jest możliwe zbudo-
www.hakin9.org
52 hakin9 Nr 5/2006
Simple Event Correlator
wanie z nich bardziej złożonych
struktur danych (takich jak perlowe
W Sieci
listy czy hasze). WychodzÄ…c na-
" http://www.bmc.com/  BMC Patrol,
przeciw tym problemom SEC ofe-
" http://www.cisco.com/  CiscoWorks,
ruje wzorce PerlFunc (zdefiniowa-
" http://www.managementsoftware.hp.com/products/ecs/index.html  HP ECS,
" http://www.openview.hp.com/  HP OpenView, ne przez użytkownika funkcje Per-
" http://www.netfilter.org/  Iptables,
la służące do dopasowywania linii
" http://www.logec.com/  LOGEC,
wejściowych) oraz perlowe wyra-
" http://www.cert.dfn.de/eng/logsurf/  Logsurfer,
żenia kontekstu, ale także i działa-
" http://www.mysql.com/  MySQL,
nia eval i call pozwalajÄ…ce kompilo-
" http://www.nagios.org/  Nagios,
wać i uruchamiać własny kod Perla
" http://www.openservice.com/products/nervecenter.jsp  NerveCenter,
z poziomu SEC.
" http://www.micromuse.com/  NetCool,
Zbiór reguł z Listingu 5 pokazu-
" http://www.prelude-ids.org/  Prelude IDS,
je, jak można zastosować działania
" http://www.rulecore.com/  RuleCore,
eval i call oraz wzorce PerlFunc,
" http://simple-evcorr.sourceforge.net/  Simple Event Correlator,
ale także jak korzystać w SEC z
" http://www.smarts.com/  SMARTS,
" http://snmptt.sourceforge.net/  SNMPTT, modułów Perla oraz jak tworzyć
" http://www.snort.org/  Snort IDS,
i sięgać do struktur danych Perla
" http://swatch.sourceforge.net/  Swatch,
we własnym kodzie. Zbiór reguł za-
" http://www.balabit.com/products/syslog_ng/  Syslog-ng.
projektowano pod kÄ…tem monitoro-
wania dziennika błędów lokalnego
serwera WWW Apache za pomo-
cą dynamicznej listy wyrażeń regu-
Bibliografia
larnych, a także przekazywania pa-
" Jim Brown. 2003. Working with SEC  the Simple Event Correlator. http://sixshoot
sujÄ…cych linii do zdalnego serwe-
er.v6.thrupoint.net/SEC-examples/article.html,
ra syslog (gdzie mogą być skore-
" P. Froehlich, W. Nejdl, M. Schroeder, C. V. Damasio, L. M. Pereira. 2002. Using
lowane przez innÄ… instancjÄ™ SEC).
Extended Logic Programming for Alarm-Correlation in Cellular Phone Networks.
Celem zaoszczędzenia czasu pro-
Applied Intelligence 17(2), pp. 187-202,
cesora zbiór nie wywołuje w ce-
" Boris Gruschke. 1998. Integrated Event Management: Event Correlation using De-
lu przekazywania linii jako wiado-
pendency Graphs. Proceedings of the 9th IFIP/IEEE International Workshop on
mości syslog, narzędzia logger, po-
Distributed Systems: Operations and Management, pp. 130-141,
" G. Jakobson i M. Weissman. 1995. Real-time telecommunication network ma- legajÄ…c zamiast tego na funkcjach
nagement: Extending event correlation with temporal constraints. Proceedings
openlog() i syslog() z perlowego
of the 4th International Symposium on Integrated Network Management, pp.
modułu Sys::Syslog.
290-301,
Aby móc korzystać z modu-
" Dilmar Malheiros Meira. 1997. A Model For Alarm Correlation in Telecommunica-
łu Sys::Syslog musi on być za-
tion Networks. PhD thesis, Federal University of Minas Gerais, Brazil,
Å‚adowany przy starcie SEC. Je-
" Elaine Rich i Kevin Knight. 1991. Artificial Intelligence, 2nd edition. McGraw-Hill,
żeli SEC uruchomiony został z
ISBN 0-07-052263-4,
opcjÄ…  intevents, przy starcie ge-
" John P. Rouillard. 2004. Real-time Logfile Analysis Using the Simple Event Corre-
neruje on jako pierwsze syntetycz-
lator (SEC). Proceedings of USENIX 18th System Administration Conference, pp.
ne zdarzenie SEC _ STARTUP, przy-
133-149,
" M. Steinder i A. S. Sethi. 2002. End-to-end Service Failure Diagnosis Using Be- pisuje mu wewnętrzny kontekst
lief Networks. Proceedings of the 8th IEEE/IFIP Network Operations and Manage- SEC _ INTERNAL _ EVENT i przetwarza
ment Symposium, pp. 375-390,
je przed jakimikolwiek innymi zda-
" James Turnbull. 2005. Hardening Linux. Apress, ISBN: 1-59059-444-4.
rzeniami. Pozwala to użytkowniko-
" Risto Vaarandi. 2005. Tools and Techniques for Event Log Analysis. PhD thesis,
wi pisać reguły służące do urucha-
Tallinn University of Technology, Estonia,
miania rozmaitych procedur starto-
" Hermann Wietgrefe. 2002. Investigation and Practical Assessment of Alarm Cor-
wych. Pierwsza reguła jest regu-
relation Methods for the Use in GSM Access Networks. Proceedings of the 8th
łą właśnie tego rodzaju, próbują-
IEEE/IFIP Network Operations and Management Symposium, pp. 391-404,
cą załadować moduł Sys::Syslog
" Hermann Wietgrefe, Klaus-Dieter Tuchs, Klaus Jobmann, Guido Carls, Peter
korzystając z działań: assign oraz
Froehlich, Wolfgang Nejdl, Sebastian Steinfeld. 1997. Using Neural Networks
eval. Najpierw ustawia ona zmien-
for Alarm Correlation in Cellular Phone Networks. Proceedings of the Internatio-
nÄ… specjalnÄ… %a na 0 za pomocÄ…
nal Workshop on Applications of Neural Networks in Telecommunications, pp.
248-255, działania assign, a następnie prze-
" S. A. Yemini, S. Kliger, E. Mozes, Y. Yemini i D. Ohsie. 1996. High speed and ro-
twarza kod Perla require Sys::
bust event correlation. IEEE Communications Magazine 34(5), pp. 82-90.
Syslog za pomocą działania eval
(które wewnętrznie wywołuje per-
www.hakin9.org hakin9 Nr 5/2006 53
Pod lupÄ…
lową funkcję eval()). Jeżeli dzia- Sys::Syslog::syslog('err', $ _ [0]); z listy @regexp, którą zainicjowa-
łanie eval zakończyło się sukce- }. Kod ten stanowi definicję funkcji, ła druga reguła (i która może być
sem i moduł został załadowany, do w efekcie eval skompiluje ją i zwróci zmieniana w czasie działania pro-
%a przypisana zostanie wartość 1 wskaznik do skompilowanego kodu, gramu). Do dopasowywania regu-
(którą to wartość zwraca pozytyw- który zostanie zapisany w zmiennej ła wykorzystuje wzorzec PerlFunc
ne wywołanie require Sys::Syslog), specjalnej %syslog. Sama funkcja  wartość parametru pattern musi
jeżeli eval poniosło porażkę %a za- przyjmuje jeden parametr wejściowy być poprawną definicją funkcji Per-
chowuje swoją oryginalną wartość i korzysta z funkcji syslog() z modu- la, która zostanie skompilowana w
(0). Następnie ponownie wykorzy- łu Sys::Syslog, by przesłać parametr czasie wczytywania reguł. W przy-
stujemy działanie eval, aby spraw- wejściowy jako wiadomość poziomu padku trzeciej reguły funkcja po-
dzić wartość %a; jeżeli wynosi ona err do serwera syslog. Następnie re- biera linię wejściową (przekazaną
0 (tj. moduł nie mógł zostać zała- guła zainicjuje listę @regexp  per- do funkcji poprzez parametr wej-
dowany), wywołujemy w perlowym lową listę do przechowywania wy- ściowy $_[0]) i skanuje listę @re-
kodzie przetwarzanym przez eval rażeń regularnych. @regexp jest li- gexp w poszukiwaniu pasujące-
polecenie exit(1). Jako że wywo- stą globalną, dzięki czemu można go wyrażenia regularnego. Jeżeli
łanie exit(1) ma miejsce wewnątrz do niej sięgać bądz ją modyfikować znajdziemy odpowiednie wyraże-
procesu SEC process, spowodu- kolejnymi wywołaniami eval. (Aby nie regularne funkcja zwraca 1 (co
je ono zamknięcie SEC z kodem uniknąć kolizji z nazwami zmien- oznacza, że wzorzec PerlFunc do-
wyjścia 1. nych w kodzie SEC tworzona jest pasował linię wejściową), w prze-
Przeznaczeniem drugiej reguły osobna przestrzeń nazw, main::SEC, ciwnym razie zwraca 0 (co ozna-
jest dopasowywanie zarówno we- zaś działanie eval zawsze przetwa- cza brak dopasowania). W pierw-
wnętrznych zdarzeń SEC _ STARTUP, rza własny kod Perla w tej przestrze- szym przypadku reguła wywoła,
jak i SEC _ RESTART (jeżeli SEC uru- ni.) Ostatnim krokiem jest otwarcie za pomocą działania call, prekom-
chomiony został z opcją  intevents, połączenia syslog za pomocą funk- pilowaną funkcję Perla służącą do
po otrzymaniu sygnału SIGHUP cji openlog(), ustawienie nazwy pro- logowania syslog. Zmienna spe-
 żądania resetu jego wewnętrz- gramu na SEC, obiektu logowania cjalna %o służy do przechowywa-
nego stanu i ponownego wczyta- na daemon oraz opcji logowania na nia wartości wyjściowej wywoła-
nia konfiguracji  program generuje cons,pid (jeżeli standardowe logowa- nia funkcji, zmienna %syslog za-
syntetyczne zdarzenie SEC _ RESTART, nie zawiedzie; wyślij komunikat na wiera wskaznik do funkcji, zaś $0
w wewnętrznym kontekście SEC _ konsolę; dołącz do każdej wiadomo- (zawierająca całą dopasowywaną
INTERNAL _ EVENT). Po zaobserwo- ści identyfikator procesu). linię wejścia) to parametr wejścio-
waniu pasującego zdarzenia, regu- Trzecia reguła została stworzo- wy dla funkcji.
ła najpier korzysta z działania eval na do dopasowywanie linii wejścia W ten sposób zbiór reguł efek-
aby przetworzyć kod Perla sub { za pomocą wyrażeń regularnych tywnie implementuje dynamicz-
R E K L A M A
Chcesz regularnie otrzymywać swoje
czasopismo?
Chcesz płacić mniej?
j
w prenumeracie tylko:
22,50 zł
za numer
k
* więcejNr /200 at
o 5prez6entach na stronie www.hakin9.org/prenumer9.oag
www.hakin r
hakin9
p
e
r
e
d
ż
n
a
u
k
m
o
e
d
r
a
s
t
i
y
t
a
*
r
g
A
r
c
h
D
i
C
w
u
e
i
m
c
y
Å‚
m
p
a
a
g
n
a
z
5
y
0
n
0
u
2
h
9
a
n
i
Simple Event Correlator
ne dopasowywanie wyrażeń regu- czasu procesora oraz 8,1 MB pa- padków znalezć możesz w [Vaaran-
larnych do linii z dziennika błędów mięci. Druga instancja przetworzy- di 2005]). SEC stosowano z po-
serwera WWW, które nie mogłoby ła 364 534 428 linii wejścia (śred- wodzeniem z: Snort IDS, Prelude
być wyrażone poprzez wzorce Re- nio 84,7 linii na sekundę), zużyw- IDS, firewallem iptables, HP Ope-
gExp patterns, jak również prze- szy 8,8% czasu procesora oraz nView (zarówno NNMm jak i Ope-
kazywanie dopasowanych linii do 6,1 MB pamięci. rations), Nagios, CiscoWorks, BMC
zdalnego serwera syslog bez two- Prędkość przetwarzania zda- patrol, SNMPTT itd. SEC wykorzy-
rzenia osobnego procesu wymaga- rzeń przez SEC silnie zależy od stywano pod szerokim zakresem
nego przez zewnętrzne polecenie. sposobu ułożenia reguł, istnieje systemów operacyjnych, w tym pod
Dzięki temu, że wszystkie fragmen- więc kilka sposobów na poprawie- Linuksem, FreeBSD, OpenBSD, So-
ty kodu Perla zastosowane w trze- nie wydajności. Jako że linie wej- larisem, HP-UXem, AIXem, Tru64
ciej regule są kompilowane, gdy ściowe są porównywane z regułami Unixem, Mac OSem X oraz Win-
SEC jest uruchamiany, ich wykony- w kolejności, w jakiej te ostatnie de- dows 2000.
wanie podczas działania programu finiowane są w pliku, przesunięcie
jest równie wydajne, jak wykonywa- najczęściej dopasowywanych re- Podsumowanie
nie kodu samego SEC. guł na początek pliku reguł oszczę- Niniejsza publikacja omówiła SEC
dza czas procesora. Ponadto jeże- (Simple Event Correlator)  otwar-
Wydajność SEC
li wiele linii wejścia nie pasuje do te narzędzie do lekkiego i nieza-
i doświadczenia
żadnej reguły, oszczędność czasu leżnego od platformy korelowa-
praktyczne
da nam również wstawienie na po- nia zdarzeń  a ponadto przed-
Chociaż SEC jest napisany w ję- czątku pliku z regułami odpowiada- stawiła z życia wziętych przykła-
zyku interpretowanym (i z tego jących tym liniom reguł Suppress. dów wykorzystania SEC w moni-
względu nie jest tak szybki ani nie Jeżeli SEC skonfigurowano do mo- torowaniu w czasie rzeczywistym
dysponuje pamięcią tak efektyw- nitorowania wielu zródeł, można zdarzeń z logów bezpieczeństwa,
nie jak skompilowane programy w zwiększyć prędkość przetwarzania jednak ze względu na ograniczo-
C), jest w stanie przetwarzać set- zdarzeń przez program stosując ną przestrzeń nie wspomina ona
ki zdarzeń na sekundę i wciąż wy- wewnętrzne konteksty (patrz sek- o wielu funkcjonalnościach SEC.
magać względnie skromnych zaso- cja Monitorowanie wielu plików). Zainteresowani mogą odnalezć
bów. W przeprowadzonym niedaw- Wśród innych pomysłów na popra- dogłębny opis SEC w jego doku-
no eksperymencie o czasie trwa- wienie wydajności SEC wspomnieć mentacji online. Dostępny jest tak-
nia 49,8 dni, dwie instancje SEC można pisanie wydajniejszych wy- że trochę innych zródeł informacji
uruchomiono na linuksowym ser- rażeń regularnych oraz zastępowa- na temat SEC. Repozytorium re-
werze syslog z dwoma procesora- nie gdzie się da wzorców RegExp guł SEC na BleedingSnort (http://
mi Intel P4 Xeon o częstotliwości 3 wzorcami SubStr (te ostatnie są www.bleedingsnort.com/sec/ ) za-
GHz. Pierwsza instancja monitoro- szybsze). wiera szereg przykładowych zbio-
wała jednocześnie 20 dzienników W ciągu ostatnich kilku lat SEC rów reguł dla wielu scenariuszy,
i korzystała z 243 reguł w 22 pli- został przyjęty przez wiele różnych na przykład korelowania zdarzeń
kach konfiguracyjnych, druga zaś rozmiarów instytucji oraz był wyko- z programu Snort bądz zarządza-
czytała dane z nazwanego potoku rzystywany w wielu dziedzinach, nia firewallem iptables. Working
i korzystała z 67 reguł w 5 plikach. w tym w monitorowaniu logów, za- with SEC  the Simple Event Cor-
Pierwsza instancja przetworzyła rządzaniu firewallami, detekcji intru- relator (Brown 2003) to tutorial on-
107 059 511 linii wejścia (średnio zów oraz zarządzaniu siecią (tro- line, który nie tylko stanowi dobre
24,9 linii na sekundę) i zużyła 3,0% chę szczegółowych studiów przy- wprowadzenie do SEC, ale tak-
że omawia kilka zaawansowanych
zagadnień, takich jak np. integra-
Podziękowania
cja SEC z MySQL. Rozdział 5 Har-
Opisane tu prace wspierane sÄ… przez SEB Eesti Ühispank, a ponadto uzyskaÅ‚y one
dening Linux (Turnbull 2005) opi-
wsparcie finansowe w formie estońskiego narodowego grantu nr SF0182712s06.
suje, jak zaprzÄ…c SEC do logowa-
nia plików logów syslog. Wreszcie,
wydana niedawno publikacja za-
wierajÄ…ca bibliotekÄ™ przydatnych
O autorze
zestawów reguł opisuje zastoso-
Risto Vaarandi uzyskał w czerwcu 2005 stopień doktora inżynierii komputerowej na
wania SEC na Uniwersytecie Mas-
Politechnice TalliÅ„skiej (Estonia). Od oÅ›miu lat pracuje w SEB Eesti Ühispank jako in-
sachusetts w Bostonie (Rouillard
żynier rozwoju informatycznego, obecnie zaś jest także na część etatu badaczem w
Instytucie Informatyki na Uniwersytecie Tartu, Estonia. Z Risto można skontaktować 2004). l
się poprzez jego stronę domową, dostępną pod adresem http://kodu.neti.ee/~risto.
www.hakin9.org hakin9 Nr 5/2006 55


Wyszukiwarka

Podobne podstrony:
2006 05 Password Tricks Customizing the Password Popup Window
GWT Working with the Google Web Toolkit (2006 05 31)
2006 05 R odp
2006 05 Lazarus i pudełko z hasłami [Programowanie]
Święty Pustelnik z Libanu (o ojcu Charbel) Miłujcie się 2006 05
2006 05 Antywzorce w zarzÄ…dzaniu projektami informatycznymi [Inzynieria Oprogramowania]
2006 05 R
2006 05?sktop Disco
2006 05 Krita–edytor grafiki bitmapowej [Grafika]
2006 12 18 Uchwała RM ograniczanie przestępczości Razem bezpieczniej
Wstep Inf Pytania Zaoczne 05 2006
rozp min transp i bud z 05 01 2006 zm rozp ws szkolenia, egzaminowania ( )

więcej podobnych podstron