background image

56

 

PRAKTYKA

HAKIN9 1/2010

Z ARTYKUŁU 

DOWIESZ SIĘ

co to jest system wsparcia 

reagowania na incydenty 

bezpieczeństwa,

co ma do zaoferowania RTIR,

jak efektywnie używać RTIR.

CO POWINIENEŚ 

WIEDZIEĆ

znać podstawy administracji 

systemów UNIX,

posiadać działające serwery 

MySQL, Apache, Sendmail,

mieć zainstalowany Perl.

N

a wstępie warto zdać sobie sprawę, 
co to jest incydent w kontekście 
bezpieczeństwa informatycznego. Otóż 

jest to każda bezprawna lub nieautoryzowana 
akcja dokonana przy użyciu komputera lub sieci 
komputerowej. Jako przykłady z jednej strony 
podać tutaj można skanowanie portów czy ataki 
DoS, a z drugiej malwersacje, kradzieże poufnych 
danych, czy pornografię dziecięcą. Jasne 
jest, że zdarzenia takie są w praktyce nie do 
uniknięcia, a odpowiednia reakcja na nie powinna 
minimalizować ich skutki i pociągać sprawców 
do odpowiedzialności.

W idealnej sytuacji, za obsługę incydentów 

bezpieczeństwa w każdym przedsiębiorstwie 
czy organizacji odpowiadać powinien 
specjalnie wydzielony zespół CERT/CSIRT 
(ang. Computer Emergency Response 
Team/Computer Security Incident Response 
Team
). Ponadto, odpowiedzialność za obsługę 
każdego incydentu powinna być jednoznacznie 
przypisana do konkretnych członków zespołu. 
Niestety, w praktyce taka sytuacja, szczególnie 
w małych firmach, rzadko ma miejsce. Obsługą 
incydentów bezpieczeństwa często zajmują się 
administratorzy systemu, lub tzw. przypadkowe 
osoby, które niekiedy przeciążone obowiązkami, 
nie są w stanie wykonywać tej funkcji rzetelnie 
i co najważniejsze efektywnie (co zwykle 
oznacza po prostu szybko). Nie trzeba chyba 
nikomu uświadamiać, że obsługa incydentów 
jest krytyczna nie tylko z punktu widzenia 

MARCIN TEODORCZYK

bezpieczeństwa, ale również, a może przede 
wszystkim, jeśli chodzi o zachowanie dobrej 
reputacji. W sytuacji takiej niektóre firmy decydują 
się nawet na zlecenie, tak ważnych przecież 
zadań, podwykonawcom zewnętrznym. 

A przecież reakcja na incydenty 

bezpieczeństwa na styku zgłaszający – 
obsługujący może zostać znacznie usprawniona 
z wykorzystaniem systemów wsparcia takich jak 
RTIR (ang. Request Tracker for Incident Response). 

Systemy wsparcia reagowania 

na incydenty

Reakcja na incydent jest procesem złożonym. 
Typowo łańcuch zdarzeń przebiega następująco. 
Pierwszym etapem jest przygotowanie 
do obsługi incydentów – wyznaczenie 
pracowników, zainstalowanie i skonfigurowanie 
oprogramowania, przeprowadzenie szkoleń itp. 
Kolejnym etapem jest wykrywanie incydentów, 
które najczęściej sprowadza się do przyjmowania 
zgłoszeń użytkowników. Następnie, po 
szybkiej, wstępnej odpowiedzi na zgłoszenie, 
podejmowane jest dochodzenie. Dochodzenie 
to działania mające na celu zminimalizowanie 
skutków incydentu i wyjaśnienie jego przyczyn 
(ewentualnie pociągnięcie jego sprawców do 
odpowiedzialności). Działanie takie zakończone 
powinno być raportem, przeznaczonym także dla 
przełożonych. Na każdym etapie tego procesu 
spotyka się trudności. W niniejszym artykule 
skupimy się na problemie skoordynowania 

Stopień trudności

RTIR – nie 

trać czasu na 

papierkową robotę

Wiadomo, że zdarzenia związane z naruszaniem 

bezpieczeństwa są nie do uniknięcia. Czy nie warto 

przygotować się do efektywnej ich obsługi? Nieocenionym 

narzędziem jest tutaj system wsparcia reagowania na 

incydenty.

background image

57

 

RTIR

HAKIN9 

1/2010

działań wielu osób, będących na różnych 
szczeblach decyzyjnych, a często nawet 
pracujących w różnych firmach. Poza tym, 
bardzo często pojawia się też potrzeba 
komunikacji z organizacjami publicznymi, w 
tym organami ścigania. 

I tutaj, członkom zespołów CERT/

CSIRT z pomocą przychodzą systemy 
wsparcia reagowania na incydenty, 
takie jak RTIR. Mają one zastosowanie 
na prawie każdym etapie procesu 
obsługi incydentów, a służą głównie do 
usprawnienia komunikacji i umożliwienia 
rozliczania pracowników. Podstawowymi ich 
funkcjami są organizacja i automatyzacja 
wymiany informacji. Wstępne odpowiedzi 
na zgłoszenia mogą być generowane 
automatycznie, zachowywana jest cała 
historia korespondencji (w dodatku w 
postaci nieedytowalnej), kopie wybranych 
wiadomości mogą być przekazywane 
przez system np. zarządowi. Incydentom 
mogą być nadawane priorytety, a 
użytkownikom określone prawa dostępu. W 
praktyce, systemy wsparcia reagowania na 
incydenty zwykle opierają się na biletach 
(ang. tickets) i poczcie elektronicznej, a 
często udostępniają także interfejs WWW.

RTIR 

RTIR jest jednym z przykładowych 
rozwiązań tego typu. System rozwijany od 

2003 roku przez firmę Best Practical (http:
//bestpractical.com/
), technicznie jest 
wtyczką (ang. plugin) do bardziej ogólnego 
w zastosowaniu (i starszego) systemu RT 
(ang. Request Tracker). RTIR stworzony 
został na potrzeby zespołu JANET-CERT 
i wraz z kodem źródłowym (ang. open 
source
) udostępniony na licencji GNU GPL 
2.0. (podobnie jak RT). Aktualnie dostępna 
jest wersja 3.8. Typowo, RTIR opiera się 
o komunikację z wykorzystaniem poczty 
elektronicznej, interfejs WWW i bilety (ang. 
tickets). 

System zorganizowany jest wokół 

incydentów. Każdy incydent może mieć 
przyporządkowanych wiele raportów, 
dochodzeń, blokad i właścicieli. Raport to 
każda wiadomość (zgłoszenie incydentu, 
odpowiedź, komentarz itp.). Dochodzenie 
to działania mające na celu zgromadzenie 
dowodów oraz określenie przyczyn i 
sprawców incydentu. Blokada to wyłączenie 
określonych usług (np. zablokowanie 
określonego portu lub hosta o określonym 
adresie IP przez zaporę ogniową). 
Właściciel to osoba odpowiedzialna za 
dochodzenie i raport końcowy. Właściciele 
(użytkownicy) mogą być organizowani w 
grupy.

Oprócz podstawowej funkcjonalności 

(organizacja incydentów i przekazywanie 
wiadomości), za wykorzystaniem RTIR 

przemawia wiele innych cech. Jedną z 
nich jest internacjonalizacja. Dostępne 
są 22 wersje językowe, w tym język 
polski (choć tłumaczenie interfejsu jest 
niedokończone). Możliwe jest także 
przyporządkowanie domyślnego języka 
interfejsu i strefy czasowej użytkownikowi). 
Przez cały czas działania zachowywane 
są nieedytowalne logi. Dostępne jest 
wsparcie dla szyfrowania PGP (ang. Pretty 
Good Privacy
). Możliwe jest wykonywanie 
akcji zbiorowych (np. wysyłanie odpowiedzi 
do grupy użytkowników), a nawet tworzenie 
prostych skryptów, działających na 
zasadzie warunek – akcja – szablon. 
Dużym plusem jest też rzetelnie wykonany 
interfejs WWW, użyteczny w szerokiej 
gamie przeglądarek internetowych (także 
tekstowych). 

Nie bez znaczenia są także 

wymagania RTIR. System ten być 
uruchomiony tylko pod kontrolą systemów 
operacyjnych rodziny UNIX (Unix, Linux, 
BSD, MacOS X, Solaris). Wymagana jest 
baza danych, którą może być MySQL, 
PostgreSQL, Oracle lub SQLite. Oprócz 
tego potrzebny jest serwer WWW. Można 
tutaj użyć Apache z mod_perl lub FastCGI, 
lighthttpd z FastCGI lub dowolnego innego 
serwera WWW opartego o perl.

Instalacja i konfiguracja

Czas na nieco praktyki. W dalszej części 
artykułu opisano proces instalacji 
i konfiguracji RTIR w wersji 3.8.4 w 
następującym środowisku: Linux 2.6.30 
(dystrybucja Archlinux), Apache 2.2 z 
mod_perl 2.0, MySQL 5.1 i Perl 5.10. 

Generalnie, system RTIR składa się 

z trzech elementów (przy czym ostatni 
jest dla nas opcjonalny): RT, wtyczki RTIR 
i wtyczki RTFM. Kody źródłowe dostępne 
są do pobrania odpowiednio na stronach: 
http://bestpractical.com/rt/download.html

Rysunek 1. 

System RT w akcji

Rysunek 2. 

Strona logowania do 

systemu RT

background image

58

 

PRAKTYKA

HAKIN9 1/2010

RTIR

59

 

HAKIN9 

1/2010

http://bestpractical.com/rtir/download.html 
http://bestpractical.com/rtfm/
download.html

RT, czyli baza

Na początek zajmiemy się instalacją 
RT. Po pobraniu i rozpakowaniu kodu 
źródłowego oraz zmianie katalogu 
bieżącego na ten, w którym znajdują 
się źródła, standardowo wykonujemy 
polecenie 

./configure

. Jak zwykle, 

przekazując mu odpowiednie parametry 
możemy dostosować instalację 
do naszych potrzeb. W niniejszym 
opracowaniu wszystkie wartości 

pozostawione zostały jako domyślne. W 
takim przypadku katalogiem instalacji jest 
/opt/rt3/, bazą danych MySQL, serwerem 
WWW Apache z 

mod _ perl2

, a 

systemową grupą użytkowników w obrębie 
jakiej działać będzie RT jest rt. 

Następnym krokiem jest sprawdzenie, 

czy w naszym środowisku spełnione są 
wszystkie wymagane zależności. Służy to 
tego polecenie: 

make testdeps

. Fragment 

przykładowego wyniku jego działania 
przedstawia Listing 1.

Większość wymaganych zależności 

związana jest z modułami perla. Na 
szczęście, dystrybucja RT udostępnia 

narzędzie, które pozwala automatycznie 
doinstalować wymagane moduły. 
Skorzystać z niego można wywołując 

make fixdeps

. Należy pamiętać, aby 

polecenie to wykonać z uprawnieniami 
użytkownika root. Brakujące moduły 
perla można także doinstalować ręcznie, 
wykorzystując powłokę 

perl -MCPAN -e 

shell

 i polecenie 

install

 (np. 

install 

Net::Server

). Przed przystąpieniem do 

następnego kroku, należy się ponownie 
upewnić, czy wszystkie zależności 
są spełnione oraz utworzyć grupę 
użytkowników rt (przykładowo za pomocą: 

groupadd rt

).

Teraz można skopiować pliki do 

/opt/rt3/ wykonując polecenie 

make 

install

. Kolejnym krokiem jest edycja 

pliku konfiguracyjnego /opt/rt3/etc/RT_
SiteConfig.pm
. Przed przystąpieniem do 
tego, najprościej jest skopiować zawartość 
/opt/rt3/etc/RT_Config.pm (stanowi ona 
bardzo dobrą bazę do dalszych zmian). 
Najważniejsze zmienne (które znaleźć 
można w wyżej wymienionym pliku) ich 
wartości i znaczenie przedstawia Tabela 
1. Po zakończeniu edycji, należy utworzyć 
i zainicjować bazę danych wykorzystując 
polecenie 

make initialize-database

Fragment przykładowego wyniku jego 
działania przedstawia Listing 2. W 
przypadku błędnego wykonania, bazę 
danych można usunąć używając 

make 

dropdb

, a następnie powtórzyć polecenie 

make initialize-database

 (po 

dokonaniu koniecznych zmian w pliku 
/opt/rt3/etc/RT_SiteConfig.pm).

Listing 3. 

Fragment pliku 

konfiguracji serwera Apache (/etc/

httpd/conf/httpd.conf)

# Konfiguracja dla RT
# Ścieżka do plików interfejsu WWW

   

Alias

 

/rt/

 

/opt/rt3/share/html/

   

<Directory

 

/opt/rt3/share/html/

>

       

Order

 allow,deny

       

Allow

 from 

all

   

</Directory>

# Zależności perla

   

PerlRequire

 

/opt/rt3/bin/webmux.pl

   

<Location

 

/rt/

>

       

AddDefaultCharset

 UTF-8

       

SetHandler

 perl-script

       

PerlHandler

 RT::Mason

   

</Location>

Listing 2. 

Fragment pomyślnego wyniku działania make initialize-database

Type:   mysql
Host:   localhost
Name:  rt3
User:  rt_user
DBA:  rt_user
Now populating database schema.
Done.
/usr/bin/perl -Ilib -I/opt/rt3/local/lib -I/opt/rt3/lib \ 
   /opt/rt3/sbin/rt-setup-database –action acl \ 
   –datadir etc –dba rt_user –prompt-for-dba-password
In order to create or update your RT database, 
this script needs to connect to your mysql instance
on localhost as rt_user.
Please specify that user's database password below. 
If the user has no database password, just press return.

Password:
Working with:
Type:  mysql
Host:  localhost
Name:   rt3
User:   rt_user
DBA:  rt_user
Now inserting database ACLs.
Done.

Listing 1. 

Fragment pomyślnego wyniku działania make testdeps

   XML::RSS >= 1.05...found
   HTML::Mason >= 1.36...found
   Digest::MD5 >= 2.27...found
MYSQL dependencies:
   DBD::mysql >= 2.1018...found
SMTP dependencies:
   Net::SMTP...found
STANDALONE dependencies:
   Net::Server::PreFork...found
   Net::Server...found
   HTTP::Server::Simple >= 0.34...found
   HTTP::Server::Simple::Mason >= 0.09...found

All dependencies have been found.

background image

58

 

PRAKTYKA

HAKIN9 1/2010

RTIR

59

 

HAKIN9 

1/2010

Dostęp przez interfejs WWW

Czas na konfigurację dostępu przez 
przeglądarkę WWW. Istnieją dwie 
możliwości wyboru adresu dostępowego: 
subdomena (np. http://rt.ath/) lub 
podkatalog (np. http://ath/rt/). W 
niniejszym opracowaniu wybrano wersję 
drugą. Konfiguracja odpowiedzialna za 
udostępnienie interfejsu WWW znajduje 
się w dwóch plikach: /opt/rt3/etc/
RT_SiteConfig.pm
 (plik konfiguracyjny 
RT) i /etc/httpd/conf/httpd.conf (plik 
konfiguracyjny serwera Apache). Adres 
dostępowy określany jest na podstawie 
zmiennych WebDomain WebPath (patrz 
Tabela 1) w następujący sposób: http:
//WebDomain/WebPath/
. W naszym 
przypadku zmienne te ustawiono 
odpowiednio na ath i /rt, dzięki czemu 
otrzymano adres dostępowy: http:
//ath/rt/ 
(przy czym ath jest w naszym 
przypadku nazwą hosta lokalnego). 
Kolejnym krokiem jest konfiguracja 
serwera Apache. Przykładowe ustawienia 
zaczerpnięte z pliku /etc/httpd/conf/
httpd.conf
 przedstawia Listing 3. Tworzony 
przy jego pomocy alias dla katalogu z 
plikami interfejsu WWW RT (/opt/rt3/share/
html/
) oraz włączane jest użycie perla. 
Jeśli nie zostało to wykonane wcześniej, 
należy też włączyć wtyczkę mod_perl w 
konfiguracji modułów Apache. Można to 
zrobić dopisując w pliku /etc/httpd/conf/
httpd.conf
 linię: 

LoadModule perl _

module modules/mod _ perl.so

.

Aby nowe ustawienia przyniosły 

efekt, należy zrestartować serwer WWW: 

/etc/rc.d/httpd restart

. Serwer www 

należy restartować także po zmianach 
dokonanych w pliku /opt/rt3/etc/RT_
SiteConfig.pm
.

Konfiguracja interfejsu e-mail

Ostatnim elementem do skonfigurowania 
jest obsługa poczty elektronicznej. 
System RT może współpracować z 
serwerem poczty udostępnianym na 
innej, nielokalnej maszynie, jednak 
w niniejszym artykule ograniczymy 
się do użycia serwera lokalnego. Do 
wysyłania e-maili, RT używa bramki 
zaimplementowanej w perlu: /opt/rt3/rt-
mailgate
. Dla zapewnienia poprawnego 
działania systemu konieczna jest 
odpowiednia konfiguracja serwera poczty 

(w naszym przypadku Postfix). Zazwyczaj, 
w pliku /etc/mail/aliases dodać należy 
następujące wpisy:

rt: „|/opt/rt3/bin/rt-mailgate 
   --queue General –action correspond 
   --url http://ath/rt”
rt-comment: „|/opt/rt3/bin/rt-mailgate 
   --queue General –action comment 
   --url http://ath/rt”

Należy w tym miejscu mieć świadomość, 
że General jest nazwą jedynej, domyślnie 
tworzonej kolejki (kolejki służą do 
grupowania biletów). Podobne operacje 
należy wykonać dla każdej kolejki 
utworzonej później w systemie. 

Tymczasem, jeśli wszystko do tej 

pory zostało wykonane poprawnie, nasz 
system powinien być już dostępny przez 

przeglądarkę WWW pod adresem http://
ath/rt/
 (Rysunek 2). Domyślny login i hasło 
podczas pierwszego logowania to root 
password. W tym momencie polecam 
poświęcić kilka minut na zapoznanie się z 
interfejsem WWW. 

Wtyczki RTIR i RTFM

Czas na to, na czym nam najbardziej 
zależy, czyli wtyczkę RTIR. Dodatkowo, 
zainstalujemy też wtyczkę RTFM. Po 
rozpakowaniu pobranych wcześniej 
archiwów z kodami źródłowymi, 
zmieniamy katalog bieżący na katalog z 
kodem źródłowym (kolejno RTIR i RTFM) i 
wykonujemy (w każdym z nich) polecenia:

perl Makefile.PL
make install
make initdb

Rysunek 3. 

Zarządzanie użytkownikami

Rysunek 4. 

Zarządzanie kolejkami

background image

60

 

PRAKTYKA

HAKIN9 1/2010

RTIR

61

 

HAKIN9 

1/2010

Stworzą one zestaw plików makefile
zainstalują pliki wtyczek w katalogu 
/opt/rt3/ i zaktualizują bazę danych, w 
podobny sposób jak to miało miejsce 
podczas instalacji systemu RT. 
Następnie należy edytować plik 
konfiguracyjny /opt/rt3/etc/RT_
SiteConfig.pm
, dodając linię:

Set(@Plugins, 'RT::FM', 'RT::IR');

Oczywiście, aby zmiany przyniosły efekt, 
należy ponownie uruchomić serwer 
WWW (Apache): 

/etc/rc.d/httpd 

restart

Wraz z wtyczką RTIR do naszego 

systemu dodane zostały 4 kolejki (wcześniej 
była tylko General): BlocksIncident Reports
Incidents oraz Investigations. Należy 
zatem uaktualnić konfigurację serwera 
poczty, dodając w pliku /etc/mail/aliases 
następujące linie:

rt: „|/opt/rt3/bin/rt-mailgate 
   --queue Blocks –action correspond
   --url http://ath/rt”
rt-comment: „|/opt/rt3/bin/rt-mailgate
   --queue Blocks –action comment 
   --url http://ath/rt”

dla każdej z kolejek (zmieniając Blocks 
kolejno na nazwę każdej z nich).

Tym razem, po zalogowaniu się, 

naszym oczom powinien ukazać 
się interfejs z menu po lewej stronie, 
zawierającym między innymi pozycji RTIR i 
RTFM (które to nie były dostępne podczas 
po poprzednim logowaniu). Czytelnicy 
posiadający język polski jako domyślny 
w swojej przeglądarce WWW, zauważą 
zapewne niekompletność tłumaczenia 
interfejsu (niektóre pozycje są po polsku, 
niektóre po angielsku). Z tego powodu, aby 
zachować czytelność, w dalszej części 
artykułu używany będzie interfejs w wersji 
angielskiej. 

W tej chwili nasz system nie nadaje się 

jeszcze do praktycznego użycia. Konieczne 
jest założenie i skonfigurowanie kont 
użytkowników oraz dostosowanie go nieco 
do naszych potrzeb (w tym stworzenie grup 
i przyznanie im uprawnień).

Typowy przypadek użycia

Czas na wypróbowanie naszego nowo 
zainstalowanego systemu. Pierwsze co 
powinniśmy zrobić po zalogowaniu się, 
to oczywiście zmiana hasła użytkownika 
root. W tym celu należy wybrać Home -> 

Configuration -> Users -> root, wprowadzić 
nowe hasło i potwierdzić zmiany. Następnie 
możemy zabrać się za dostosowywanie 
systemu. Bogactwo opcji jest tak ogromne, 
że w niniejszej części artykułu ograniczymy 
się tylko do dodania kilku użytkowników i 
grup, podstawowej konfiguracji i obsługi 
jednego, przykładowego zgłoszenia 
wykonanego przy pomocy interfejsu WWW.

Użytkownicy i grupy

Generalnie, użytkowników podzielić można 
na dwie grupy: personel (konta uprawnione) 
i użytkowników zewnętrznych (konta 
nieuprawnione). Po otrzymaniu nowego 
zgłoszenia (biletu) od niezarejestrowanego 
użytkownika (drogą poczty elektronicznej), 
system automatycznie tworzy konto 
nieuprzywilejowane. Konta użytkowników 
mogą być też zakładane ręcznie, ale nie 
mogą być usuwane (mogą być co najwyżej 
wyłączane).

Na początek utworzymy kilku 

użytkowników. Będą to pracownicy firmy ATH: 
cezary i cyryl (z zespołu CSIRT), nikodem 
norbert (z zespołu NOT (ang. Network 
Operations Team
)) i zenon (z zarządu ATH). 
Aby dodać użytkownika, z menu należy 
wybrać Home -> Configuration -> Users -> 
Create
 i wypełnić wszystkie potrzebne pola. 
Ważne jest tutaj zaznaczenie opcji Let this 
user be granted rights
 znajdującej się nad 
polem Nowe hasło. Jeśli tego nie zrobimy, 
użytkownik będzie nieaktywny i domyślnie 
niewidoczny na liście użytkowników (Home -> 
Configuration -> Users
). 

Grupa jest zbiorem użytkowników 

posiadających wspólne cechy. Wyróżnia 
się 5 rodzajów grup: zdefiniowane przez 
użytkownika, systemowe (użytkownicy 
uprawnieni i nieuprawnieni), role 
(zgłaszający, właściciel itp.), grupy 
personalne oraz podgrupy. Rodzaj grupy 
można określić dopiero po jej utworzeniu. 
W niniejszym artykule ograniczymy się 
do utworzenia grup rodzaju pierwszego, 
reprezentujących działy firmy. Utwórzmy 
więc grupy CSIRT, NOT i Management 
(wybierając z menu Home -> Configuration 
-> Groups -> Create
) oraz przypiszmy do 
nich użytkowników utworzonych wcześniej 
(wybierając z menu Home -> Configuration 
-> Groups -> CSIRT -> Members, 
dla każdej 
z utworzonych grup zmieniając CSIRT na 
właściwą nazwę). 

Listing 4. 

Przykładowy szablon automatycznej odpowiedzi

RT-Attach-Message: yes
Subject: {$Ticket->Subject}

{$Transaction->Content()}

-------------------------------------------------------------------------
Proszę o umieszczanie identyfikatora:

         [{$rtname} #{$Ticket->id}]

w tematach przyszłych wiadomości dotyczących niniejszego
incydentu. Aby to zrobić wystarczy wysłać wiadomość jako
odpowiedź na niniejszą.

                        Dziękuję,
                        {$Ticket->QueueObj->CorrespondAddress()}

Listing 5. 

Szablon wiadomości o zmianie priorytetu biletu

RT-Attach-Message: yes
Subject: {$Ticket->Subject}

Priorytet Twojego biletu nr {$Ticket->id} został zmieniony.

Dziękuję,
{$Ticket->QueueObj->CorrespondAddress()}

background image

60

 

PRAKTYKA

HAKIN9 1/2010

RTIR

61

 

HAKIN9 

1/2010

Grupy, podobnie jak użytkownicy, nie 

mogą być usuwane. Jeśli sądzimy, że jakaś 
grupa jest już niepotrzebna w systemie, 
możemy ją co najwyżej wyłączyć. W naszej 
instalacji, oprócz nowo utworzonych 
grup istnieją domyślne Duty TeamDuty 
Team EDUNET
 i Duty Team GOVNET
Wyłączmy je, wybierając z menu Home 
-> Configuration -> Groups -> Duty Team
 
(oraz pozostałe grupy) i odznaczając opcję 
Udostępniona. Dzięki temu, domyślnie 
nie będą one wyświetlane na liście grup 
Home -> Configuration -> Groups (można 
to zmienić zaznaczając opcję Include 
disabled groups in listing
). 

Utwórzmy teraz jeszcze jednego 

użytkownika spoza firmy ATH (będącego 
pracownikiem ATJ) o nazwie urban
Przyda on nam się później do 
zgłoszenia incydentu. Użytkownika 
tego nie przypisujemy do żadnej grupy. 
Spowoduje to umieszczenie go w grupach 
systemowych Nieuprawnieni Wszyscy 
(ang. Unprivileged All).

Kolejki i prawa dostępu

Jak już wspomniano wcześniej, kolejki służą 
do grupowania biletów. W tym momencie 
w naszym systemie powinno być widoczne 
(Home -> Configuration -> Queues) 5 
następujących kolejek: BlocksIncident 
Reports
IncidentsInvestigations i General
przeznaczonych odpowiednio dla blokad, 
raportów na temat incydentów, zgłoszeń 
incydentów, dochodzeń i pozostałych 
zgłoszeń.

Prawa dostępu mogą być przyznawane 

w odniesieniu do użytkowników, grup i 
kolejek. W praktyce, przed przyznaniem 
praw dostępu, musimy zadać sobie trzy 
pytania. Po pierwsze, komu przyznać 
prawa dostępu (użytkownikowi, grupie, 
właścicielowi biletu, wszystkim)? Po drugie, 
do czego przyznać prawa dostępu 
(konkretnej kolejki, kilku kolejek kolejek, 
globalnie)? Po trzecie, jakie prawa dostępu 
przyznać (przeglądanie, edycja, tworzenie)?

Przyznajmy więc odpowiednie 

uprawnienia dla użytkowników i grup, 
które właśnie stworzyliśmy, zadając sobie 
wspomniane 3 pytania. Na początek 
przyznajmy grupie NOT prawa dotyczące 
kolejki Blocks, tak aby użytkownicy byli 
w stanie tworzyć, odczytywać i brać 
w posiadanie bilety zgrupowane w tej 

kolejce, a także na nie odpowiadać. 
Możemy to zrobić wybierając z menu 
Home -> Configuration -> Queues -> Blocks 
-> Group rights
 oraz przyznając grupie 
NOT następujące uprawnienia: OwnTicket
ReplyTicketSeeQueueShowTicket, i 
TakeTicket 
(aby wybrać z listy więcej niż 
jedno uprawnienie, przytrzymaj klawisz 
[Control]). Ustalmy też od razu uprawnienia 

dla grupy CSIRT, pozwalające co najmniej 
na tworzenie biletów dla tej samej kolejki: 
CreateTicket, ShowTicket. Kolejna kolejka, 
dla której ustawimy uprawnienia to 
Incidents. Ponieważ chcemy, aby każdy kto 
posiada konto w systemie mógł zgłosić 
incydent, przyznajmy następujące prawa 
(wyberając z menu Home -> Configuration 
-> Queues -> Incidents -> Group rights
) dla 

Rysunek 5. 

Zarządzanie uprawnieniami

Tabela 1. 

Najważniejsze zmienne konfiguracyjne, ich znaczenie i użyte wartości

Zmienna

Wartość Znaczenie

rtname 

ath

nazwa domeny, w obrębie której RT ma 

funkcjonować (w naszym przypadku nazwa 

hosta, na którym pracujemy)

DatabaseType

mysql

typ bazy danych

DatabaseUser

rt_user

użytkownik bazy danych

DatabasePassword

******

hasło bazy danych dla systemu RT

DatabaseName

rt3

nazwa bazy danych

WebDomain

ath

domena instalacji interfejsu WWW

WebPath

/rt

ścieżka do instalacji interfejsu WWW

background image

62

 

PRAKTYKA

HAKIN9 1/2010

grupy systemowej EveryoneCreateTicket, 
Modify Ticket, SeeQueue, ShowTicket

Oprócz tego, chcemy aby członkowie 
CSIRT mogli przejmować bilety oraz 
na nie odpowiadać, przyznajmy zatem 

tej grupie uprawnienia: OwnTicket, 
ReplyToTicket, TakeTicket
. Czas wreszcie 
na określenie uprawnień do ostatnie (w 
naszym przypadku kolejki) – Investigations. 
Ponieważ w naszym systemie 

dochodzenia będą tworzone przez 
członków zespołu CSIRT, wybierzmy z 
menu Home -> Configuration -> Queues -> 
Investigations -> Group rights 
i przyznajmy 
następujące uprawnienia grupie CSIRT: 
CreateTicket, OwnTicket, ShowTicket

Przykład obsługi zgłoszenia

Można już powiedzieć, że nasz system ma 
podstawową funkcjonalność – sprawdźmy 
więc jego działanie. W tym celu stworzymy 
nowe zgłoszenie używając interfejsu 
WWW. Logujemy się jako użytkownik 
urban i w prawym górnym rogu interfejsu 
wybieramy kolejkę Incidents (która w tym 
momencie powinna być jedyną dla nas 
dostępną) oraz naciskamy przycisk New 
ticket in. Wypełniamy pola tematu (Subject
i wiadomości (Message) wpisując 
odpowiednio np.: Skanowanie portów 
Nasi administratorzy wykryli skanowanie 
portów przeprowadzone z adresu IP 
192.168.0.13
. Następnie tworzymy 
powiadomienie o incydencie, naciskając 
przycisk Create.

Po otrzymaniu komunikatu o 

pomyślnym utworzeniu incydentu 
możemy się jeszcze upewnić, że jest 
on już widoczny na stronie głównej 
(Home) w ramkach Most due unowned 
incidents
 oraz Most due incidents
W tym momencie rola naszego 
użytkownika z firmy zewnętrznej jest 
już zakończona. Zalogujmy się więc 
jako jeden z członków zespołu CSIRT, 
np. cezary. Widzimy na stronie głównej 
nowy bilet (incydent) . Decydujemy się 
na zajęcie tym zgłoszeniem (klikamy 
link Take). Następnie, po zapoznaniu 
się z treścią ogłoszenia i ocenie, że nie 
istnieje jeszcze żadne dochodzenie 
związane z podobnymi zgłoszeniami, 
tworzymy nowe dochodzenie (ramka 
Investigations, link Launch). Ponieważ 
jednak wkrótce kończymy pracę, należy 
wylogować się z systemu. Teraz możemy 
zalogować się jako cyryl i zapoznać z 
dochodzeniem. Jako cyryl decydujemy 
się na zajęcie dochodzeniem (link Take). 
Oczywiście próbujemy skontaktować się z 
właścicielem nieszczęsnego nr IP, jednak 
ponieważ nam się to nie udaje, tworzymy 
blokadę (ramka Blocks, link New), prosząc 
o zablokowanie adresu IP 192.168.013 i 
należy się wylogować. Analogicznie do 

Rysunek 6. 

Tworzenie powiadomienia o incydencie

Rysunek 7. 

Odpowiedź na bilet z kolejki Blocks

background image

64

 

PRAKTYKA

HAKIN9 1/2010

poprzednich czynności, po zalogowaniu 
się jako nikodem zajmujemy się nowym 
biletem w kolejce Blocks, tworząc blokadę 
w rzeczywistości (aktualizując ustawienia 
firewalla) oraz odpowiadając na bilet (link 
Reply) (Rysunek 7). 

Następnie logujemy się ponownie 

jako cezary. Otwieramy jedyny bilet 
jaki posiadamy. Tym razem, widzimy 
dwa kolejne bilety z nim powiązane 
(w ramkach Investigations i Blocks). 
Otwieramy bilet kolejki Blocks i widzimy 
odpowiedź nikodema, że blokada 
została wykonana. Wracamy do strony 
zgłoszenia które przyjęliśmy od urbana 
i odpowiadamy na nie (przycisk Reply), 
że wykonana została blokada, a 
dochodzenie trwa.

Tak oto przeszliśmy przez przykładowy 

łańcuch reakcji na incydent (w bardzo 
okrojonym wydaniu i ciągle nie 
dokończony). W praktyce wymaga to 
nieco więcej zachodu, jednak trudno 
zaprzeczyć, że teraz bardzo dobrze 
widać, iż przy odpowiedniej konfiguracji 
i dużej liczbie zgłoszeń, RTIR może 
znacznie usprawnić pracę. A to nie 
wszystko. System udostępnia nam jeszcze 
bardziej zaawansowane możliwości, 
takie jak zgłoszenia z użyciem poczty 
elektronicznej, priorytezowanie biletów, 
szablony wiadomości, skrypty, tablice 
ogłoszeń (które możemy zmieniać wg 
własnych potrzeb) oraz wiele rozszerzeń i 
narzędzi (np. wtyczka RTFM, niszczarka), o 
których w dalszej części artykułu.

Bardziej zaawansowana 

funkcjonalność

System RTIR może być w bardzo szerokim 
zakresie dostosowany do specyficznych 
potrzeb. Możliwe jest m.in. tworzenie 
dodatkowych, własnych pól dla biletów, 
kolejek, grup i użytkowników (Home -> 
Configuration -> Custom Fields -> Create
). 
Pola takie mogą być użyte przykładowo 
do dodania nowych stanów biletów 
(np. oprócz domyślnych open, resolved, 
abandoned
 można sobie zdefiniować 
spam) lub nowych atrybutów użytkowników 
(np. narodowości, czy stażu pracy).

Kolejną użyteczną funkcjonalnością, 

o której warto wspomnieć w tym 
miejscu, jest system priorytetów biletów. 
Priorytety pozwalają na kolejny stopień 

(po kolejkach) uporządkowania biletów. 
Każdy bilet może mieć nadany priorytet 
liczbowy od 0 do 99, przy czym wyróżnia 
się dodatkowo 5 poziomów słownych: 
Low, Medium, HighCriticalFatal, z 
przyporządkowanymi im zakresami 
liczbowymi (odpowiednio 11-20, 21-30, 
31-40, 41-50, 51-60). Przyporządkowane 
określeniom słownym zakresy można 
oczywiście zmieniać wg potrzeb.

Przekazywanie wiadomości

Przekazywanie wiadomości jest 
bardzo użyteczną funkcjonalnością. 
Pozwala ono na automatyczne 
powiadomienie określonych osób o 
biletach określonego typu. W praktyce 
sprowadza się to do przyznania 
użytkownikowi, grupie użytkowników lub 
roli odpowiednich praw dla odpowiedniej 
kolejki. 

Rysunek 8. 

Dodanie nowego obserwatora kolejki

Rysunek 9. 

Zarządzanie globalne szablonami

background image

RTIR

65

 

HAKIN9 

1/2010

Skonfigurujmy więc nasz system tak, 

aby wiadomości dotyczące dochodzeń 
(ang. investigations) były przekazywane 

zenonowi. Można to zrobić dodając zenona 
do grupy (roli) Cc. Logujemy się jako root 
wybieramy z menu Home -> Configuration 

-> Queues -> Investigations -> Watchers. 
Następnie dodajemy zenona jako Cc 
(np. wybierając Name i wpisując zenon). 
Nie działa? Nic dziwnego, zenon nie miał 
przecież przyznanych odpowiednich 
praw dostępu. Zanim będzie on mógł 
być dodany jako obserwator (watcher), 
musimy mu przyznać prawo WatchAsCc
Aby to zrobić wybieramy z menu Home -> 
Configuration -> Queues -> Investigations -> 
UserRights 
i przyznajemy zenonowi prawo 
Watch. Ponownie próbujemy dodać ustalić 
zenona jako obserwatora, wybierając 
Home -> Configuration -> Queues -> 
Investigations -> Watchers 
i dodając 
go jako Cc (Rysunek 8). Od tej pory, 
zenon będzie dostawał kopie wszystkich 
informacji przesyłanych w kolejce 
Investigations.

Szablony i skrypty

Szablony wiadomości (ang. templates
mogą być tworzone globalnie (jako 
przeznaczone dla wszystkich kolejek) 
lub lokalnie (wewnątrz wybranej kolejki). 
Umiejętne ich użycie w znaczny sposób 
odciąża pracowników. Skrypty (celowo 
nazywane przez autorów RTIR Scrips, nie 
Scripts), podobnie jak szablony, mogą być 
tworzone globalnie lub lokalnie (wewnątrz 
kolejek). Zasada działania skryptów opiera 
się na łańcuchu warunek – akcja – szablon. 
Jako warunek może podać np. utworzenie 
incydentu, otrzymanie komentarza lub 
zakończenie dochodzenia. Akcją może być 
np. wysłanie powiadomienia do właściciela 
biletu, którego dotyczyło zdarzenie 
spełniające warunek. W takim wypadku, do 
wygenerowania treści wiadomości używany 
jest właśnie szablon.

Spróbujmy dostosować szablony 

wiadomości wysyłanych automatycznie w 
przypadku tworzenia nowych dochodzeń 
(Investigations). Można to zrobić wybierając 
z menu Home -> Queues -> Investigations 
-> Templates -> Autoreply
. Przykładowy 
(zmodyfikowany już) szablon Autoreply dla 
kolejki Investigations przedstawia Listing 
4. Widać na nim sposób odwoływania się 
do właściwości biletu z użyciem znaków 

$

 i 

->

. Przykładowo wyrażenie 

{$Ticket-

>QueueObj->CorrespondAddress()}

 

przy wysyłaniu wiadomości zostanie 
zastąpione domyślnym adresem 
korespondencyjnym dla niniejszego 

Rysunek 10. 

Tworzenie nowego skryptu

Rysunek 11. 

Tworzenie nowego artykułu (wtyczka RTFM)

background image

66

 

PRAKTYKA

HAKIN9 1/2010

biletu, natomiast 

{$Ticket->id}

 będzie 

zastąpione nr id biletu.

Spróbujmy jeszcze utworzyć nowy 

szablon globalny, który przyda nam za 
chwilę do zademonstrowania zasady 
działania skryptów. Z menu wybieramy 
Home -> Configuration -> Global -> 
Templates -> New
. Wpisujemy nazwę 
ZmianaPriorytetu, opis powiadomienie 
o zmianie priorytetu 
i zawartość, którą 
przedstawiona Listing 6.

Tak utworzony szablon będzie służył 

do automatycznego poinformowania 
zgłaszającego o zmianie priorytetu jego 
zgłoszenia. Aby to uzyskać musimy 
jeszcze utworzyć skrypt. Ponieważ chcemy 
aby dotyczył on wszystkich biletów, 
niezależnie od kolejki, do jakiej zostają 
przyporządkowane, tworzymy go także w 
sekcji globalnej. Aby to zrobić wybieramy 
z menu Home -> Configuration -> Global 
-> Scrips -> New
 (Rysunek 10). Podajemy 
opis (ang. descriptionPowiadomienie
OZmianiePriorytetu, 
wybieramy warunek 
(conditionOn Priority Change, operację 
Autoreply To Requestors oraz szablon 
(które przed chwilą utworzyliśmy) Globa 
template: ZmianaPriorytetu
. Analogicznie 
można tworzyć skrypty dla szerokiej gamy 
innych akcji.

Wtyczki, narzędzia i rozszerzenia

Jedną z dostępnych dla RT wtyczek 
(która może być szczególnie użyteczna 
w systemie RTIR) jest RTFM. Daje ona 
możliwość tworzenia przez użytkowników 
artykułów i może być wykorzystana np. 
do popularyzowania wśród użytkowników 

schematów postępowania po wykryciu 
incydentu bezpieczeństwa. Spróbujmy 
stworzyć prosty artykuł z wykorzystaniem 
RTFM. Zalogowanie jako root, wybieramy 
z menu Home -> RTFM -> Articles -> New 
Article
 oraz pozycję in class Templates
Następnie wypełniamy wszystkie pola wg 
uznania i naciskamy Create. Szczególnie 
użyteczne są tutaj pola Refers to: oraz 
Referred by:, w których można zdefiniować 
połączenia z innymi artykułami i – co w 
naszym przypadku ważniejsze – biletami 
(Rysunek 11). Artykuły mogą być też 
tworzone z poziomu obsługi biletu poprzez 
kliknięcie linku New w ramce Articles 
(podobnie jak wcześniej było tworzone 
np. dochodzenie z użyciem ramki 
Investigations). 

Oprócz wtyczek dostępne są także 

użyteczne narzędzia, m.in. raporty (Home 
-> Tools -> Reports
), pozwalające na 
sprawdzanie biletów rozwiązanych lub 
utworzonych w określonym przedziale 
czasu, kolejce i przez określonego 
użytkownika. 

Kolejnym narzędziem są tablice 

ogłoszeń (ang. dashboards), pozwalające 
na współdzielenie wybranych danych 
(np. kliku naszych biletów o największych 
priorytetach) z innymi użytkownikami, 
zwalniając ich z konieczności wyszukiwania 
takich danych na własną rękę.

Szereg narzędzi można też 

doinstalować w formie rozszerzeń 
(ang. extensions). Jednym z nich jest 
Export search results as XLS. Pozwala 
ono na tworzenie zestawień biletów/
użytkowników posiadających określone 

atrybuty w formacie Microsoft Excel. 
Innym użytecznym rozszerzeniem jest 
RT3StatisticsPackage, które pozwala 
na generowanie raportów na temat 
czasu, liczby obsłużonych zgłoszeń 
itp. dla poszczególnych użytkowników. 
Istnieje także możliwość kontrolowania 
systemu z użyciem wiadomości e-mail, 
dzięki rozszerzeniu Command by email
Udostępnia ono polecenia m.in. polecenia 
typu utwórz kolejkę czy zmień priorytet biletu 
poprzez użycie odpowiednich tematów 
wiadomości. Inne przykłady rozszerzeń to 
niszczarka (shredder), SLA (Service Level 
Agreements
), kalendarz (RTx::Calendar), 
scalanie użytkowników (RT::Extension::
MergeUsers
), wizualizacja biletów na osi 
czasu (RT::Extension::Timeline). Obecnie, na 
oficjalnej stronie projektu dostępne jest w 
sumie ponad 30 rozszerzeń.

Podsumowanie

Systemy wsparcia reagowania na incydenty 
stanowią bardzo użyteczne narzędzie, 
pozwalające zorganizować pracę zespołów 
CERT/CSIRT. W niniejszym artykule 
przedstawiono jedynie ogólne koncepcje 
realizacji takich systemów oraz pokrótce 
scharakteryzowano jedno z istniejących, 
popularnych, wolnodostępnych rozwiązań 
o otwartym kodzie źródłowym. Zarówno 
możliwości RTIR jak i wielu innych systemów 
tego typu są znacznie szersze, a dogłębne 
ich omówienie na łamach kilkustronicowego 
artykułu – niemożliwe. RTIR mimo 
swych wad niewynikających z oficjalnej 
dokumentacji (takich jak niedokończone 
tłumaczenie interfejsu na język polski), 
posiada jedną, ważną zaletę – bogate 
możliwości dostosowania do własnych 
potrzeb. W wersji obecnej omówiony system 
stanowi, jeśli nie bardzo dobre rozwiązanie 
końcowe, to co najmniej bardzo dobrą bazę 
do wypracowania takiegoż. 

Bardziej dociekliwych odsyłam do 

ramki W Sieci, gdzie znaleźć można kilka 
ciekawych linków na temat RT (w tym 
oficjalne demo on-line, w którym brakuje 
niestety wtyczki RTIR).

Akronimy

•   Computer Emergency Response Team – CERT,
•   Computer Security Incident Response Team – CSIRT,
•   Request Trackter – RT,
•   Request Tracker FAQ Manager – RTFM,
•   Request Tracker for Incident Response – RTIR.

W Sieci

•   http://www.bestpractical.com/ – Best Practical,
•   http://bestpractical.com/rt/ – RT,
•   http://bestpractical.com/rtir/ – RTIR,
•   http://bestpractical.com/rtfm/ – RTFM
•   http://wiki.bestpractical.com/view/HomePage – RT Wiki,
•   http://rt.easter-eggs.org/demos/stable/ – RT Demo.

Marcin Teodorczyk

Autor jest absolwentem kierunku Informatyka jednej 

z największych polskich uczelni technicznych. 

Obecnie pracuje jako asystent informatyczny w dziale 

bezpieczeństwa jednego z wiodących w Polsce 

dostarczycieli usług obliczeniowych i sieciowych. 

Kontakt z autorem: marcin@teodorczyk.info.