Świniak i Kwas
Wstęp
Artykuł prezentuje opis przygotowań oraz instalacji programów SNORT, MySQL oraz ACID. W poniższych sekcjach odnaleźć można doświadczenia autora związane z instalacją oraz konfiguracją powyższych.
Kilka słów na temat...
systemu detekcji intruzów SNORT
Źródło http://www.snort.org/
SNORT jest systemem detekcji intruzów typu Open Source. Potrafi analizować sieć w czasie rzeczywistym umożliwiająć wykrywanie różnych typów ataków, m.in.: przepełnień bufora, skanowań portów, ataków na CGI, SMB, wykrywania odcisków palców systemów operacyjnych oraz wielu innych.
SNORT używa elastycznego języka reguł opisującego dane, które powinien kolekcjonować lub pomijać. Potrafi na wiele sposobów reagować w czasie rzeczywistym komunikując się z takimi mechanizmami jak syslogd, plik określony przez użytkownika, gniazda UNIX-a, wiadomości WinPopup (przy wykorzystaniu smbclient).
SNORT ma trzy podstawowe zastosowania:
- sniffer pakietów (jak tcpdump);
- logger pakietów (pomocny przy wykrywaniu
- nieprawidłowości w działaniu sieci);
- kompletny system wykrywania intruzów.
Tabela: Platformy na których potrafi działać SNORT
| i386 | Sparc | M68k/PPC | Alpha | Inne | |
| Linux | |||||
|
X |
|
|
OpenBSD | ||
| FreeBSD | |||||
| NetBSD | |||||
| Solaris | |||||
| SunOS 4.1.X | |||||
| HP-UX | |||||
| AIX | |||||
| IRIX | |||||
| Tru64 | |||||
| MacOS X Server | |||||
|
X |
Win32 - (Win9x/NT/2000) |
Główna strona projektu to http://www.snort.org/.
bazy danych MySQL
MySQL jest najpopularniejszą bazą danych Open Source.
MySQL jest relacyjną bazą danych, charakteryzującą się dobrymi osiągami. Powszechnie używany i lubiany na całym świecie, sprawdzony w wielu warunkach, rozbudowany i bogaty w aplikacje.
Główna strona projektu to http://www.mysql.com/.
analizatora zdarzeń bezpieczeństwa ACID
Skrót ACID pochodzi od angielskiej nazwy Analysis Console for Intrusion Databases. ACID jest zestawem skryptów PHP służącym do generowania statystyk i analiz na podstawie danych, zapisanych w bazie danych przez systemy IDS. Kolekcjonowanie informacji może być przeprowadzane ponadto przez ściany ogniowe oraz narzędzia monitoringu sieci. KWAS zaopatrzony jest m.in. w:
interfejs wyszukiwania (pokazuje ostrzeżenia oraz powiązane z nimi informacje);
przeglądarka pakietów (potrafi graficznie przedstawić informacje powłok 3 i 4 pakietów zapisanych jako ostrzeżenia);
system zarządzania ostrzeżeniami (logiczne grupowanie, eksportowanie, transfery pomiędzy bazami danych);
generator wykresów i statystyk (oparte na czasie, sensorze, podpisie, protokóle, adresie IP, portach TCP/UDP lub klasyfikacji).
ACID potrafi analizować dane w formatach:
- Snort-a:
- alerty Snort-a
- binarne logi tcpdump-a
- logsnorter-a:
- ipchains
- iptables
- ifpw
Główna strona projektu to http:/acidlab.sourceforge.net/.
Przygotowanie zależności
Do pełnej funkcjonalności ACID-a wymagana jest współpraca mod_php z MySQL-em (baza danych - źródło informacji) oraz modułem GD (funkcje graficzne - rysowanie wykresów). Należy zatem przekompilować moduł php z opcjami wsparcia dla MySQL oraz GD. W tym celu, jako root, należy wykonać następujące polecenia:
oleczek# make install clean
Na ekranie powinno wyświetlić się menu przekazujące parametry do skryptu configure. Należy w nim zaznaczyć wyżej wymienione opcje, a następnie kontynuować proces budowy/przebudowywania modułu php4 serwera http (do testów został użyty apache w wersji 1.3.29_1 oraz php w wersji 4.3.4_3,1). Jeśli jest to czysta instalacja, wówczas można zdać się na mechanizm portów, który dociągnie i pozostałe zależności. W przypadku przebudowywania modułu przed instalacją należy wydać polecenie 'make deinstall'.
SNORT - instalacja
Snort dostępny jest w Kolekcji Portów FreeBSD. Instalacja wymaga jednak dodatkowego parametru:
oleczek# make install WITH_MYSQL=yep (wydane z poziomu powłoki csh)
oleczek# make clean
MySQL - instalacja oraz konfiguracja
Po instalacji modułu PHP wraz z odpowiednimi opcjami MySQL powinien być już dostępny w systemie. Aby kontynuować proces instalacji, należy go uruchomić:
MySQL powinien mieć zabezpieczone konto root-a. Hasło zmienia się za pomocą polecenia:
Następnie należy uruchomić konsolę MySQL-a i założyć bazę dla SNORT-a:
Enter password: (podać haslo_roota)
mysql> create database snort;
mysql> grant all privileges on snort.* to snort@localhost \
identified by 'haslo_snorta';
mysql> quit;
Teraz, gdy w bazie istnieje użytkownik snort, ma on przydzielone hasło oraz posiada dostęp do bazy, można zająć się tabelami bazy. Definicje tabel należy pobrać ze strony http://cvs.sourceforge.net/viewcvs.py/snort/snort/contrib/ (plik o nazwie create_mysql).
Następnie przejść do katalogu, w którym znajduje się plik create_mysql i wykonać polecenie:
Enter password: (podać 'haslo_snorta')
Powyższe operacje powinny zakończyć się bez żadnych błędów
Pierwsze uruchomienie oraz konfiguracja SNORT-a
Aby zobaczyć w logach (/var/log/messages) informację "snort: Snort initialization completed successfully", należy dostroić pewne parametry. Odbywa się to poprzez edycję pliku konfiguracyjnego znajdującego się w /usr/local/etc/. Można posłużyć się plikiem snort.conf-sample edytując go i zapisując jako snort.conf.
Plik składa się z czterech "rozdziałów":
- ustawień sieci
- ustawień preprocesorów
- ustawień wtyczek wyjścia
- dostrojeń reguł
Cierpliwość oraz wnikliwość jest tutaj nieodzowna, ale niekiedy potrzeba rozwiązań działąjących od ręki. Poniżej przedstawiam sprawdzoną konfiguracją (dla potrzeb testowych):
- wykomentować od preprocessor http_inspect: global \ do ports { 80 8080 }
- odkomentować linię output database: log, mysql, user=snort password=haslo_snorta dbname=snort host=localhost (podać odpowiednie 'haslo_snorta')
- wykomentować linię zawierającą include threshold.conf (ostatnia linia)
Utworzyć katalog dla logów poleceniem
Przygotować plik startowy:
/usr/local/etc/rc.d/snort.sh
oleczek# chmod +x /usr/local/etc/rc.d/snort.sh
Tutaj mała kara za pośpiech - albo należy ustawić to w pliku konfiguracyjnym, albo zmodyfikować /usr/local/etc/rc.d/snort.sh.
jest:
ma być:
Gdzie ed1 to urządzenie (tutaj karta sieciowa - należy wstawić odpowiednie dla swojego systemu i preferencji), na którym ma nasłuchiwać snort. Plik konfiguracyjny ma oczywiście więcej możliwości - pozwala lepiej dostroić ustawienia sieci.
Uruchomić Snort-a poleceniem:
Sprawdzić, czy w wyniku polecenia
można odczytać upragnioną informację "Snort initialization completed successfully".
ACID - instalacja
Zainstalować ACID z odpowiedniego portu:
oleczek# make install clean
ACID domyślnie zainstaluje się w katalogu /usr/local/www/acid. Należy odszukać tam plik konfiguracyjny "acid_conf.php", a następnie poprawić następujące informacje:
$alert_dbname = "snort"; // baza danych alertów
$alert_host = "localhost"; // adres komputera z bazą danych
$alert_port = ""; // port (puste = domyślny)
$alert_user = "snort"; // użytkownik bazy danych
$alert_password = "haslo_snorta"; // hasło użytkownika bazy danych
Ostatnim krokiem będzie dostrojenie serwera http.
Edycja pliku konfiguracyjnego serwera Apache. Dodać:
<Directory "/usr/local/www/acid">
Authtype Basic
AuthName "Wanna drink ACID?"
AuthUserFile /usr/local/www/acid/.htpasswd
Require user nick
AllowOverride None
</Directory>
do pliku /usr/local/etc/apache/httpd.conf w sekcji
Utworzyć plik z hasłami i zrestartować Apache:
oleczek# apachectl restart
Wycelować przeglądarkę w adres http://naszadomena.tld/swiniak/, podać login i hasło ustawione w .htpasswd.
Po zalogowaniu kliknąć przycisk "Create acid ...".
Powinno się pokazać (na czerwono):
Successfully created 'acid_ag_alert'
Successfully created 'acid_ip_cache'
Successfully created 'acid_event'
W tym momencie ACID jest gotowy do użycia.
Przykładowe ekrany
![]() |
![]() |
| Pierwszy ekran ACID-a (po zalogowaniu) | 15 ostatnich ostrzeżeń |
![]() |
![]() |
| Moduł wyszukiwania | Mała pamiątka :). News na http://www.Snort.org |
Uwagi:
- miniaturki można powiększać klikając na nie;
- opisy na fioletowym tle nie są elementami ACID-a.
Posłowie
Internet pełny jest różnego rodzaju tutoriali oraz dokumentacji dotyczących opisanych powyżej programów. Po "instalacji na szybko" trzeba znaleźć czas na dostrojenie oraz ewentualne ulepszenie całego systemu bezpieczeństwa. Jeśli maszyna/maszyny obsługiwane przez powyższą kombinację aplikacji są bardzo ważne, to z pewnością należy zainteresować się użyciem https oraz stunnela, a także uruchamianiem snorta z identyfikatorem użytkownika bez przywilejów.
Dodatek - wersje oprogramowania użyte w artykule
acid-0.9.6b23
apache-1.3.29_1
gd-2.0.15_1,1
mod_php4-4.3.4_4,1
mysql-server-3.23.58
snort-2.1.0_2
$ uname -rs
FreeBSD 4.9-STABLE
quex, nie., 02/03/2008 - 01:50




