{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

Ś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
X
X
X
X
X
Linux
X
X

X



OpenBSD
X


X

FreeBSD
X

X


NetBSD
X
X



Solaris

X



SunOS 4.1.X




X
HP-UX




X
AIX




X
IRIX



X

Tru64


X


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# cd /usr/ports/www/mod_php4/
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# cd /usr/ports/security/snort
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ć:

oleczek# /usr/local/etc/rc.d/mysql-server.sh start

MySQL powinien mieć zabezpieczone konto root-a. Hasło zmienia się za pomocą polecenia:
oleczek# mysqladmin -u root password 'haslo_roota'

Następnie należy uruchomić konsolę MySQL-a i założyć bazę dla SNORT-a:
oleczek# mysql -u root -p
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:

oleczek# mysql -u snort snort -p < create_mysql
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":

  1. ustawień sieci
  2. ustawień preprocesorów
  3. ustawień wtyczek wyjścia
  4. 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

oleczek# mkdir /var/log/snort

Przygotować plik startowy:
oleczek# cp /usr/local/etc/rc.d/snort.sh.sample \
        /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:
${PREFIX}/bin/snort -Dqc ${PREFIX}/etc/snort.conf > /dev/null && echo -n "snort"

ma być:
${PREFIX}/bin/snort -i ed1 -Dqc ${PREFIX}/etc/snort.conf > /dev/null && echo -n " snort"

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:

oleczek# /usr/local/etc/rc.d/snort.sh start

Sprawdzić, czy w wyniku polecenia

oleczek# tail /var/log/messages

można odczytać upragnioną informację "Snort initialization completed successfully".

ACID - instalacja
Zainstalować ACID z odpowiedniego portu:

oleczek# cd /usr/ports/security/acid
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:
$DBtype = "mysql"; // typ używanej bazy danych

$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ć:

Alias /swiniak/ "/usr/local/www/acid/"

<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# htpasswd -c /usr/local/www/acid/.htpasswd nick haslo_nicka
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'
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

$ pkg_info
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

Autor: 
Alex
Porozmawiaj o tym artykule na forum: 

quex, nie., 02/03/2008 - 01:50