PLD-doc/queue/PLD_snort.html
krolik
cvs w pld-linux.org
Czw, 1 Lip 2004, 12:24:43 CEST
Author: krolik
Date: Thu Jul 1 10:24:41 2004
New Revision: 4282
Added:
PLD-doc/queue/PLD_snort.html
Log:
- kolejny doc do kolejki
Added: PLD-doc/queue/PLD_snort.html
==============================================================================
--- (empty file)
+++ PLD-doc/queue/PLD_snort.html Thu Jul 1 10:24:41 2004
@@ -0,0 +1,767 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+<head>
+ <title>Snort - Sieciowy System Wykrywania Włamań</title>
+ <meta name="GENERATOR" content="Quanta Plus">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <style type="text/css">
+<!--
+
+pre {
+ font-family: courier;
+ padding: 4;
+ color: #ffffff;
+ background-color: #000000;
+ font-size: 11pt;
+}
+
+h2 {
+ font-family: verdana;
+ font-size: 16pt;
+}
+
+h3 {
+ font-family: verdana;
+ font-size: 14pt;
+}
+
+-->
+</style>
+</head>
+<body link="darkGreen" alink="darkGreen" vlink="darkGreen"
+style="font-family:verdana;font-size:11pt">
+
+<h1>Snort - Sieciowy System Wykrywania Włamań</h1>
+
+<p><A href="http://www.snort.org">Snort</A> to bardzo silny sieciowy system
+wykrywania ataków (ang. Network Intrusion Detection System, NIDS), który daje
+szeroki zakres mechanizmów detekcji, mogących w czasie rzeczywistym dokonywać
+analizy ruchu i rejestrowania pakietów w sieciach opartych na protokołach
+IP/TCP/UDP/ICMP. Potrafi przeprowadzać analizę strumieni pakietów, wyszukiwać i
+dopasowywać podejrzane treści, a także wykrywać wiele ataków i anomalii, takich
+jak przepełnienia bufora, skanowanie portów typu stealth, ataki na usługi WWW,
+SMB, próby wykrywania systemu operacyjnego i wiele innych.</p>
+
+<h2>Wymagania</h2>
+<p>Przed instalacją Snorta warto zaopatrzyć się w bazę danych (w
+opisie wykorzystano <A href="http://www.mysql.com/">MySQL</A>) i serwer <A
+href="http://www.apache.org">Apache</A> z obsługą <A
+href="http://www.php.net">PHP</A>. W bazie będą składowane
+logi, a za wygodny interfejs do przeglądania alarmów posłuży <A
+href="http://www.andrew.cmu.edu/user/rdanyliw/snort/snortacid.html">ACID</A>
+(ang. Analysis Console for Intrusion Databases).</p>
+
+<h2>Instalacja Snorta i ACID</h2>
+<p>Gdy mamy już bazę danych i serwer WWW z <A href="http://www.php.net">PHP</A>,
+instalujemy następujące pakiety.</p>
+<pre>poldek> install snort acid</pre>
+<p>Przed konfiguracja środowiska NIDS zakładamy dwie bazy, dla Snorta i dla
+archiwum alarmów.</p>
+<pre>
+# mysql -u mysql -p
+Enter password:
+mysql> create database snort_log;
+Query OK, 1 row affected (0.01 sec)
+mysql> create database snort_archive;
+Query OK, 1 row affected (0.01 sec)
+mysql> quit
+</pre>
+<p>Dodajemy tabele w taki sam sposób dla obu baz.</p>
+<pre>
+# gzip -d /usr/share/doc/snort-{wersja}/create_mysql.gz
+# mysql -D snort_log -u mysql -p < /usr/share/doc/snort-{wersja}/create_mysql
+# gzip -d /usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql.gz
+# mysql -D snort_log -u mysql -p < /usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql
+
+# mysql -D snort_archive -u mysql -p < /usr/share/doc/snort-{wersja}/create_mysql
+# mysql -D snort_archive -u mysql -p < /usr/share/doc/acid-{wersja}/create_acid_tbls_mysql.sql
+</pre>
+<p>Następnie (najprościej przy użyciu popularnego narzędzia <A
+href="http://www.phpmyadmin.net/">phpMyAdmin</A>) tworzymy użytkownika i
+nadajemy mu prawa dla stworzonych baz. </p>
+
+<p>Przechodzimy do edycji pliku <em>/etc/acid_conf.php</em>, w którym dodajemy
+parametry dla połączenia się z bazami.</p>
+<pre>
+[...]
+/* Alert DB connection parameters */
+[...]
+$alert_dbname = "snort_log";
+$alert_host = "localhost";
+$alert_port = "3306";
+$alert_user = "login";
+$alert_password = "haslo";
+
+/* Archive DB connection parameters */
+$archive_dbname = "snort_archive";
+$archive_host = "localhost";
+$archive_port = "3306";
+$archive_user = "login”;
+$archive_password = "haslo";
+[...]
+</pre>
+
+<p>Teraz strona z interfejsem jest dostępna pod adresem
+http://twoje_ip/acid. Oczywiście dla bezpieczeństwa zalecane jest zastosowanie
+protokołu SSL do komunikacji z zasobem i autoryzacji poprzez pakiet
+apache-mod_auth.</p>
+<p>Snort zależnie od środowiska w jakim działa może generować dużą ilość
+zbędnych alertów, te bardziej istotne można przenosić do drugiej bazy za pomocą
+ACID, dla
+przejrzystości ogółu.</p>
+
+<h2>Konfiguracja Snorta</h2>
+<p>Do działania jako sieciowy system wykrywania włamań, Snort
+potrzebuję sprecyzowania zasad funkcjonowania całości w głównym pliku
+konfiguracyjnym <em>snort.conf</em>. W starszych wersjach systemu, wszystkie
+opcje, łącznie z regułami ataków znajdowały się w jednym pliku. Ciągła rozbudowa
+Snorta, rosnąca liczba sygnatur i ogólna funkcjonalność, wymusiła rozdzielenie
+niektórych części konfiguracyjnych, w tym reguł ataków. Przejrzystość i spójność
+<em>snort.conf</em> została przywrócona przy użyciu polecenia <em>include</em>,
+którym dołącza się odpowiednie zestawy sygnatur i inne części konfiguracyjne, np.: </p>
+<pre>include: ścieżka_do_pliku/nazwa</pre>
+<p>Bazy reguł charakteryzują się nazwą pliku z końcówką <em>.rules</em>,
+pierwszy człon nazwy zawiera rodzaj usługi lub typ ataku, którego dotyczy dany zestaw.
+Pozostałymi plikami konfiguracyjnymi są: </p>
+<p>Pozostałymi plikami konfiguracyjnymi są: </p>
+<ul>
+<li><i>classification.config</i> - zawierający klasyfikatory rodzajów
+ataków z nadanym priorytetem zagrożenia, tak jak poniżej: </li>
+<pre>
+config classification: web-application-attack,Web Application Attack,1
+</pre>
+<li><i>reference.config</i> - posiadający skróty adresów do stron
+organizacji z bazą opisów ataków, np.: </li>
+<pre>config reference: bugtraq http://www.securityfocus.com/bid/</pre>
+<li><i>threshold.conf</i> - metody łagodzenia licznych, fałszywych
+alarmów, </li>
+<li><i>unicode.map</i> - zestaw kodowanych znaków unicode, na
+potrzeby preprocesora http_inspect. </li>
+</ul>
+
+<p>Główny plik konfiguracyjny można podzielić na cztery sekcje.
+Pierwsza, odpowiedzialna jest za ustalanie zmiennych <em>var</em>,
+wykorzystywanych w składni reguł ataków.</p>
+<p>Przyjmijmy że docelowo Snort ma
+monitorować dwie podsieci o adresach 192.168.1.0/24 i 192.168.2.0/24, jego
+pliki konfiguracyjne znajdują się bezpośrednio w katalogu
+<em>/etc/snort</em>, a regułki w <em>/etc/snort/rules</em>.</p>
+<pre>
+# Adres sieci lokalnej
+var HOME_NET [192.168.1.0/24,192.168.2.0/24]
+# Adres sieci zewnetrznej
+var EXTERNAL_NET !$HOME_NET
+# Lista adresow serwerow znajdujacych sie w strefie chronionej
+var DNS_SERVERS $HOME_NET
+var SMTP_SERVERS $HOME_NET
+var HTTP_SERVERS $HOME_NET
+var SQL_SERVERS $HOME_NET
+var TELNET_SERVERS $HOME_NET
+var SNMP_SERVERS $HOME_NET
+# Lista portow
+var HTTP_PORTS 80
+var SHELLCODE_PORTS !80
+var ORACLE_PORTS 1521
+# Lista serwerow czat, komunikatorow
+var AIM_SERVERS [64.12.24.0/24,64.12.25.0/24,64.12.26.14/24,64.12.28.0/24,]
+# Scieszka do katalogu z regulami atakow
+var RULE_PATH /etc/snort/rules
+</pre>
+
+<p>W tej samej sekcji znajduje się zestaw parametrów
+uruchomieniowych, zaczynających się od wyrażenia <em>config</em> (pełna ich
+lista znajduję się w dokumentacji):</p>
+<pre>
+# wybor interfejsu do nasłuchu (jeden demon Snorta moze obslugiwac tylko jeden
+# interfejs sieciowy)
+config interface: eth0
+</pre>
+
+<p>Druga część głównego pliku konfiguracyjnego, zawiera ustawienia
+preprocesorów. Parametry domyślne nie będą przedstawione w
+poniższym opisie. Kompletną listę opcji, można znaleźć w dokumentacji
+Snorta.<br>
+Oto przykłady ustawień preprocesorów:</p>
+
+<p><strong>Frag2:</strong>
+<pre>
+# detect_state_problems – zwraca alarm przy pokrywaniu sie fragmentow.
+preprocessor frag2: detect_state_problems
+</pre></p>
+
+<p><strong>Stream4, Stream4_reassemble:</strong>
+<pre>
+# disable_evasion_alerts – brak alarmow przy nakladaniu sie pakietow TCP,
+# detect_scans – detektor prob cichego skanowania,
+# detect_state_problems – detektor nienaturalnego zachowania pakietow.
+preprocessor stream4: disable_evasion_alerts detect_scans detect_state_problems
+# both – skladanie sesji TCP w obu kierunkach pomiedzy klientem i serwerem,
+# ports – lista portow, na ktorych ma dzialac reasemblacja.
+preprocessor stream4_reassemble: both ports [ 21 25 80 143 110 ]
+</pre></p>
+
+<p><strong>Http_inspect: </strong>
+<pre>
+# iis_unicode_map – wskazuje plik z kodowaniem unicode i wybiera standardowe.
+preprocessor http_inspect: global is_unicode_map unicode.map 1252
+# profile – wybor profilu ustawien dla serwerow typu iis, apacze i all.
+preprocessor http_inspect_server: server adres_IP_serwera_MS_IIS \
+ profile iis \
+ ports { 80 }
+preprocessor http_inspect_server: server adres_IP_serwera_Apache \
+ profile apache \
+ ports { 80 }
+</pre></p>
+
+<p>Powyższy przykład przedstawia możliwość profilowania ustawień dla
+poszczególnych serwerów, które podlegają ochronie. Serwery IIS i Apache, pracują
+w odmienny sposób, a zarazem posiadają inne słabe punkty wykorzystywane podczas
+ataków. Operacja dostosowania ustawień skupia mechanizmy ochronne na
+odpowiednich metodach ataków dla danego typu serwera bądź ich grupy w danej
+sieci objętej ochroną.</p>
+
+<p><strong>RPC_decode, Back Orfice, Telnet_decode, Arpspoof, Performance
+Monito:</strong>
+<pre>
+# alert_fragments – wlacza alarm, przy fragmentowaniu pakietow RPC,
+# Domyślne porty: 111 i 32771.
+preprocessor rpc_decode: 111 32771 alert_fragments
+preprocessor bo
+preprocessor telnet_decode
+preprocessor arpspoof
+preprocessor arpspoof_detect_host: adresy_IP przypisane_do_nich_adresy_MAC
+# console – wyswietlanie statystyk na ekranie,
+# flow i events – statystyki badanego ruchu i ilosci dopasowanych regul,
+# time – aktualizacja danych co 10s.
+preprocessor perfmonitor: console flow events time 10
+</pre></p>
+
+<p><strong>Flow i Flow-portscan: </strong>
+<pre>
+# stats_interval – zapisywanie statystyk, 0 – wylaczone,
+# hash – wybor metody mieszania.
+preprocessor flow: stats_interval 0 hash 2
+# server-watchnet – adresy IP, na ktorych flow bedzie prowadzic badania,
+# server-learning-time – czas utrzymania punktow dla danego adresu IP,
+# server-scanner-limit – ilosc zapytan decydujacych o przyznaniu statusu
+# skanowania z danego adresu,
+# src-ignore-net, dst-ignore-net – lista ignorowanych adresow docelowych
+# i zrodlowych.
+preprocessor flow-portscan: \
+ server-watchnet [xxx.xxx.xxx.xxx/xx] \
+ server-learning-time 14400 \
+ server-scanner-limit 10 \
+ src-ignore-net [xxx.xxx.xxx.xxx/xx, xxx.xxx.xxx.xxx/xx] \
+ dst-ignore-net [xxx.xxx.xxx.xxx/xx]
+</pre></p>
+
+<p>Trzecia sekcja <em>snort.conf</em>, zawiera metody konfiguracji modułów
+wyjściowych, czyli różnych sposobów logowania wyników i tzw. akcji reguł. Na
+potrzeby tego opisu wymieniony będzie tylko przykład logowania do bazy
+MySQL.</p>
+
+<pre>
+output database: alert, mysql, user=login password=haslo \
+dbname=snort_log host=127.0.0.1
+</pre>
+
+<p>Za pomocą reguł akcji można tworzyć własne rodzaje reakcji na wykryte
+zdarzenie, np.:</p>
+<pre>
+ruletype czerwony_alarm
+ {
+ type log
+ # zapis do demona syslogd, lokalnie
+ output alert_syslog: LOG_ALER
+ }
+# Przykladowa regula:
+czerwony_alarm $HOME_NET any -> $HOME_NET 6667 (msg:"Internal IRC Server";)
+</pre>
+
+<p>Czwarta, ostatnia część, głównego pliku konfiguracyjnego, zawiera odniesienia
+do zestawów reguł i wcześniej już opisanych plików,
+<em>classification.config</em>,
+<em>reference.config</em>, <em>threshold.conf</em> (przykład poniżej).</p>
+
+<pre>
+include classification.config
+include reference.config
+
+include $RULE_PATH/bad-traffic.rules
+include $RULE_PATH/exploit.rules
+include $RULE_PATH/telnet.rules
+include $RULE_PATH/rpc.rules
+include $RULE_PATH/dos.rules
+(...)
+# dodatkowy zestaw regul Bleeding Snort - http://www.bleedingsnort.com
+include $RULE_PATH/bleeding.rules
+include threshold.conf
+</pre>
+
+<p>Dostosowanie Snorta do swoich potrzeb obejmuje, obok konfiguracji
+preprocesorów przede wszystkim decyzje, jakie zbiory reguł mają być brane pod
+uwagę (czyli jakie pliki z regułami mają być dołączane za pomocą polecenia
+include). W środowisku, w którym wszystkie serwery WWW to Apache, reguły
+chroniące serwer IIS będą generowały zupełnie niepotrzebne alarmy. Jeśli nie
+udostępniamy FTP, reguły opisujące ataki na tę usługę będą tylko spowalniały
+pracę całego systemu. To sprawy oczywiste, jednak właściwe dostosowanie NIDS do
+swoich potrzeb wymaga wiele pracy. Dobranie odpowiednich dla danego środowiska
+reguł jest kluczowe dla działania całego systemu, duża ilość fałszywych alarmów
+nie tylko zużywa zasoby (każda z reguł musi być przecież przeanalizowana), ale
+może również bardzo skutecznie "zaciemnić" obraz, sprawiając, że prawdziwy atak
+może przejść niezauważony w zalewie informacji mało istotnych.
+Obecna baza sygnatur liczy sobie około 2500 reguł i jest praktycznie każdego
+dnia wzbogacana o nowe opisy ataków. Dla przybliżenia występujących w bazie
+kategorii sygnatur, opiszę jakiego rodzaju ataki wykrywają: </p>
+
+<ul>
+<li><strong>attack-responses</strong> – odpowiedzi usług na próbę ataku;</li>
+<li><strong>backdoor</strong> – działalność tzw. tylnych drzwi, trojanów,
+rootkitów; </li>
+<li><strong>bad-traffic</strong> – nieprawidłowy ruch, np. na port 0; </li>
+<li><strong>chat</strong> – aktywność różnego rodzaju komunikatorów; </li>
+<li><strong>ddod, dos</strong> – zmasowane ataki Distributed Denial of Service
+(rozproszony atak typu - blokada usługi); </li>
+<li><strong>deleted</strong> – regły przestarzałe, wykasowane; </li>
+<li><strong>dns</strong> – ataki na usługę Domain Name System; </li>
+<li><strong>experimental</strong> – zestaw eksperymentalnych reguł; </li>
+<li><strong>exploit</strong> – programy mające na celu wykorzystywanie błędów w
+oprogramowaniu; </li>
+<li><strong>icmp-info, icmp</strong> – komunikaty ICMP z różnych programów,
+testujących ruch; </li>
+<li><strong>imap, pop2, pop3, smtp</strong> – ataki na systemy pocztowe; </li>
+<li><strong>info</strong> – próby logowania na usługi Telnet, Ftp; </li>
+<li><strong>local</strong> – zestaw własnych reguł; </li>
+<li><strong>misc</strong> – różne, dotyczące usług CVS, MS Terminal, BOOT, UPnP
+itd.; </li>
+<li><strong>multimedia</strong> – strumienie audio, wideo; </li>
+<li><strong>mysql, sql, oracle</strong> – ataki na znane serwer baz danych;
+</li>
+<li><strong>netbios</strong> – anomalia związane z protokołem Netbios/SMB; </li>
+<li><strong>nntp</strong> – ataki na serwer grup dyskusyjnych; </li>
+<li><strong>other-ids</strong> – działalność innych systemów IDS; </li>
+<li><strong>p2p</strong> – aktywność programów Peer to Peer; </li>
+<li><strong>policy</strong> – próby ataków na usługi policy ftp itp. </li>
+<li><strong>porn</strong> – aktywność stron portnograficznych; </li>
+<li><strong>rpc</strong> – ataki na usługi Remote Procedure Call; </li>
+<li><strong>finger</strong>, rservices, telnet – ataki na dość słabo
+zabezpieczone usługi uniksowe: finger, rlogin, rsh, rexec, telnet; </li>
+<li><strong>scan</strong> – różnego rodzaju techniki skanowania portów; </li>
+<li><strong>shellcode</strong> – wykorzystanie nieprawidłowego kodu do prób
+przepełnienia bufora; </li>
+<li><strong>snmp</strong> – ataki na usługi SNMP; </li>
+<li><strong>tftp, ftp</strong> – zdarzenia związane z przesyłaniem plików
+poprzez serwer ftp; </li>
+<li><strong>virus</strong> – transfer poczty z podejrzanym załącznikiem; </li>
+<li><strong>web-attacks, web-misc, web-client, web-cgi, web-php, web-coldfusion,
+web-frontpage, web-iis</strong> – ataki na różnego typu serwery WWW, przeważnie
+z wykorzystaniem błędów w skryptach cgi, php; </li>
+<li><strong>x11-</strong> aktywności sesji serwera XFree86. </li>
+</ul>
+
+<h2>Aktualizacja reguł</h2>
+
+<p>Do aktualizacji sygnatur posłuży nam perlowy skrypt <A
+href="http://oinkmaster.sourceforge.net/">Oinkmaster</A>. Ma on duże
+możliwości które pozwalają w prosty sposób zarządzać regułami Snorta.
+Wymagane pakiety do uruchomienia to: perl, perl-base, perl-modules i
+vixie-cron albo hc-cron .</p>
+
+<h2>Instalacja Oinkmaster</h2>
+
+<p>Ściągamy archiwum tar, rozpakowujemy, skrypt wgrywamy do katalogu
+<em>/usr/local/bin</em>, a konfig do <em>/etc</em>:</p>
+<pre>
+# wget --passive-ftp \
+ftp://ftp.it.su.se/pub/users/andreas/oinkmaster/oinkmaster-1.0.tar.gz
+# tar -zxvpf oinkmaster-1.0.tar.gz
+# cp oinkmaster-1.0/oinkmaster.pl /usr/local/bin/
+# cp oinkmaster-1.0/oinkmaster.conf /etc/
+</pre>
+
+<p>Operacja aktualizacji odbywa się po następującej sekwencji komend:</p>
+<pre># /usr/local/bin/oinkmaster.pl -o /etc/snort/rules/</pre>
+<p>Dodanie innego źróła reguł:</p>
+<pre>
+# /usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ -q -u \
+http://www.bleedingsnort.com/bleeding.rules.tar.gz
+</pre>
+
+
+<p>Aby aktualizacja odbywała się automatycznie, w katalogu
+<em>/etc/cron.daily</em> tworzymy plik <em>uprules</em>.</p>
+<pre>
+# touch /etc/cron.daily/uprules
+# chmod 700 /etc/cron.daily/uprules
+</pre>
+<p>I dodajemy do niego następującą zawartość, podając adres e-mail na który ma
+zostać wysłany raport z codziennej aktualizacji jeśli pojawia się coś
+nowego:</p>
+<pre>
+TMP=`mktemp /tmp/oinkmaster.XXXXXXXX` &&
+(/usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ -q > $TMP 2>&1;
+if [ -s $TMP ]; then mail -s "Update Snort Rules" root w twoja_domena < $TMP; fi;
+rm $TMP)
+
+# dodatkowy zestaw regul Bleeding Snort - http://www.bleedingsnort.com
+TMP=`mktemp /tmp/oinkmaster.XXXXXXXX` &&
+(/usr/local/bin/oinkmaster.pl -o /etc/snort/rules/ -q -u \
+http://www.bleedingsnort.com/bleeding.rules.tar.gz > $TMP 2>&1;
+if [ -s $TMP ]; then mail -s "Update Bleeding Rules" root w twoja_domena < \
+$TMP; fi; rm $TMP)
+
+/etc/rc.d/init.d/snort restart
+</pre>
+
+<p>
+Warto przyjżeć się bliżej ciekawym funkcjonalnościom oinkmastera. W pliku
+konfiguracyjnym mamy możliwość wyłączania poszczególnych regułek po nr sid, dodawania do nich
+własnych modyfikacji itp. Wtedy jest pewność że po aktualizacji,
+nasze zmiany w plikach reguł nie będą nadpisywane.
+</p>
+
+
+<h2>Trochę teorii - Architektura Snorta</h2>
+
+<p>Snort jest logicznie podzielony na kilka komponentów, które
+współpracują ze sobą by wykrywać ataki i generować wyniki w odpowiednim
+formacie. Głównymi
+składnikami systemu są: dekoder pakietów (sniffer),
+preprocesory, silnik detekcji i moduł wyjściowy.
+</p>
+<p>W swej najprostszej formie Snort może działać jako
+sniffer. Przechwytuje pakiety z warstwy łącza danych za
+pomocą biblioteki pcap. Rozpoznaje różne protokoły
+modelu OSI - Ethernet, 802.11, Token Ring oraz wiele protokołów
+działających w wyższych warstwach jak: IP, TCP, UDP i
+ICMP. <br>Surowe pakiety z warstwy łącza danych (np. ramki
+Ethernetowe) po <u>zdekodowaniu</u> wądrują do
+
+<u>preprocesorów</u> (warstwa transportowa), gdzie są
+testowane i w razie konieczności obrabiane na potrzeby <u>silnika
+detekcji</u> (warstwa sesji). Tam dokonywana jest analiza
+pakietów pod kątem zbioru zadanych reguł. Nastąpnie po wykryciu
+próby ataku bądź anomalii sieciowych, system
+przekazuje odpowiednie dane do <u>modułu wyjściowego</u>,
+który to decyduje o zapisaniu wyniku wykrycia w logach lub
+wszczęciu alarmu.
+
+</p>
+
+
+<h3>Tryby pracy</h3>
+<p>Snort umożliwia dużą swobodę konfiguracji, za pomocą
+wielu parametrów, które pozwalają kontrolować
+trzy podstawowe tryby pracy programu: sniffer, packet logger i
+network intrusion detection.
+</p>
+
+<ul>
+ <li><b>Sniffer Mode</b> - wychwytuje wszystkie pakiety w danym segmencie sieci
+i przedstawia ich
+zawartość na ekranie. Najprostszym sposobem użycia tego trybu jest
+uruchomienie programu z parametrem <b><i>-v</i> </b>w wyniku, czego
+Snort będzie wyświetlać informacje o nagłówkach IP,
+TCP/UDP/ICMP. Do uzyskania bardziej szczegółowych danych o
+wychwyconych pakietach, służą parametry <i><b>-d</b> </i>(aby
+monitorować ładunek pakietów) i <b><i>-e</i></b> (dodatkowe
+nagłówki warstwy łącza danych). Parametry można łączyć razem,
+bez znaczenia jest ich kolejność (np. <b><i>snort -ved</i></b>). Aby
+zakończyć pracę w tym trybie należy użyć sekwencji klawiszy
+CTRL+C.</li>
+
+ <li><b>Packet Logger Mode </b> - logowanie pakietów poprzez zapis
+na dysku. Czynność ta odbywa się po użyciu opcji <b><i>-l</i></b>,
+którą wskazujemy katalog, gdzie Snort będzie zapisywać w
+odpowiednio nazwanych podkatalogach i plikach, zawartość zebranych
+pakietów. Program potrafi także zapisywać dane w formie binarnej
+tak jak robi to znany sniffer <A href="http://www.tcpdump.org/"
+target="_blank">tcpdump</A>. Służy do tego
+opcja <i><b>-b</b>,</i> po jej użyciu nie trzeba stosować
+dodatkowych kombinacji parametrów <i><b>-ved</b>,</i> ponieważ format
+tcpdump, określa to, co ma być logowane (np. <b><i>snort -b -l ./log</i></b>).
+Uzyskane w ten sposób informacje, można wykorzystać do
+późniejszej analizy za pomocą programów rozpoznających format
+binarny tcpdump (np. <a href="http://www.ethereal.com/"
+target="_blank">Ethereal</a>).
+Oczywiście można tą samą czynność wykonać
+z wykorzystaniem Snorta, używając opcji <b><i>-r</i></b>, po czym
+przetworzyć sczytane pakiety dostępnymi trybami. <br>
+
+Snort czytając swoje dzienniki (tak samo działając w trybie sniffera)
+przyjmuje parametry w formacie BPF (Berkeley Packet Filter), dzięki
+którym możemy sprecyzować (na podstawie nagłówków), jakie konkretnie pakiety
+chcemy obserwować
+(np. określić adres hosta, protokół, port). Jeśli np. interesuje
+nas tylko ruch na porcie 80 można uruchomić Snorta poleceniem: <i><b>snort
+-r /var/log/snort/snort.log port www</b></i>, jeśli chcemy
+wyświetlić tylko odpowiedzi serwera www: <i><b>snort -vde src port www</b></i>.
+Aby ignorować cały ruch z sieci np. 192.168.1.0 na port 80: <i><b>snort
+-vde not ( src net 192.168.1 and dst port 80 )</b></i>.<br>
+Połączenie Snorta z filtrami BPF znacznie zwiększa wydajność całego
+systemu, gdyż filtrowanie BPF odbywa się w warstwie łącza danych (a
+więc na poziomie biblioteki pcap). Określając w ten sposób,
+jakie pakiety nas interesują (lub jakie chcemy zignorować) można
+dość dokładnie "zawęzić" obszar poszukiwań. Filtry BPF można również
+zapisać w oddzielnym pliku i załadować w trakcie uruchamiania Snorta
+parametrem <b><i>-F</i></b>: <b><i>snort -r snort.log -F plik_z_bdf</i></b>.
+Więcej na temat możliwości oferowanych przez BPF można poczytać na
+stronach podręcznika zarówno Snorta, jak i Tcpdump.</li>
+ <li><b>Network Intrusion Detection Mode</b> - sieciowy system wykrywania
+włamań. Jest najbardziej skomplikowanym trybem działania programu.
+Za pomocą parametru <b><i>-c</i></b>, wskazujemy plik konfiguracyjny, w
+którym określane są zasady badania przechwyconego ruchu
+sieciowego, ustawienia preprocesorów, a także zestaw sygnatur
+ataków. Aby program działał w tle jako demon, należy użyć opcji <b><i>-D</i></b>
+
+(np. <b><i>snort -d -D -c snort.conf</i></b>). Reszta
+operatorów i ich opisy, jakie można wykorzystać przy starcie
+programu, przedstawia parametr <b><i>-h</i></b>.</li>
+</ul>
+
+<h3>Preprocesory</h3>
+<p>Preprocesory zostały wprowadzone do Snorta w wersji 1.5. Pozwalają
+użytkownikom i programistom w prosty sposób na rozbudowę
+funkcjonalności całego systemu poprzez pisanie dodatkowych
+modułów (ang. plugins).
+</p>
+<p>Preprocesory analizują pakiety przed
+wykorzystaniem ich przez silnik detekcji. W ten sposób
+zwiększają możliwości całego procesu wykrywania ataków sieciowych, wzbogacając
+go o zdolność
+składania (reasemblacji) pakietów, wykonywania specyficznych dla poszczególnych
+protokołów
+operacji (np. konwersja na ASCII znaków z URI zakodowanych szesnastkowo,
+usuwanie ciągów binarnych z sesji FTP czy
+Telnet, normalizacja żądań RPC), jak i wykrywania
+niezgodności z tymi protokołami.
+</p>
+<p>Poniżej pozwolę sobie pokrótce opisać standardowy zestaw
+preprocesorów wchodzących w skład darmowej dystrybucji Snorta w wersji 2.1.3.
+</p>
+<ul>
+
+ <li><b>Frag2</b> - defragmentuje i normalizuje dane przychodzące w
+postaci fragmentów, co utrudnia ukrywanie ataków prowadzonych za pomocą
+nieprawidłowo
+sfragmentowanych pakietów IP. W tym celu wykorzystuje ustalony
+przez użytkownika bufor pamięci, w której przez określony czas
+przetrzymuje do badania pakiety z tablicy stanów połączeń. Im
+większa liczba sfragmentowanych pakietów tym wymagany jest
+większy bufor. Defragmentacja, układając datagramy IP w jedną
+całość, ułatwia dalszą analizę danych poprzez pozostałe preprocesory i
+silnik detekcji. Frag2 umożliwia wychwytywanie znanych ataków
+wykorzystujących zniekształcenia fragmentów pakietów np.
+teardrop, fragroute.</li>
+ <li><b>Stream4</b> - rozwija model detekcji oparty na testowaniu pojedynczych
+pakietów umożliwiając
+śledzenie sesji (stanu połączenia) TCP i składanie (reasemblacji)
+strumieni TCP, co nie byłoby możliwe w mechanizmie opartym na
+wyszukiwaniu wzorców. Na tym poziomie działa także wykrywanie
+niektórych prób skanowania portów, gdzie wymagane
+jest notowanie prób łączenia się z poszczególnymi
+usługami w określonych odstępach czasu oraz wykrywanie prób
+oszukania Snorta za pomocą narzędzi takich, jak np. Stick lub Snot,
+które generują pojedyncze (niewchodzące w skład poprawnych sesji
+TCP) pakiety mające za zadanie zalać mechanizm detekcji masą
+fałszywych alarmów (są to pakiety budowane na losowo wybranych
+sygnaturach). Snort broni się przed takimi technikami wykorzystując
+stream4 preprocesor - losowe pakiety są dość łatwo identyfikowane
+(i ignorowane), ponieważ nie należą do prawidłowej sesji TCP. Stream4
+wychwytuje próby skanowania technikami: stealth, null, xmas,
+fin; wykrywanie systemu operacyjnego - fingerprint i inne anomalia
+związane z protokołem TCP.</li>
+ <li><b>Flow i Flow-Portscan</b> - posiada mechanizm śledzenia
+połączeń, zapisując całość do tablicy stanów w celu dalszego przetwarzania. Na
+tej podstawie <b>flow-portscan</b>
+
+wykrywa próby skanowania w bardziej wyrafinowany sposób
+niż preprocesory stream4 i portscan. Celem wykrywania, są skany z
+jednego hosta do wielu i z jednego hosta na wiele portów.
+Flow-portscan prowadzi statystyki na podstawie punktacji różnych
+rodzajów połączeń, np. jeśli jakaś usługa jest popularna i na
+jej port przychodzi dużo zapytań, jednocześnie dostaje najmniej
+punktów w ogólnej skali. Preprocesor posiada bardzo wiele
+opcji za pomocą, których reguluje się skale punktacji, rozmiary
+tablicy wyników, tolerancję niepowtarzalności zdarzeń itp.</li>
+
+ <li><b>HTTP Inspect</b> - jest ogólnym dekoderem protokołu HTTP na poziomie
+warstwy
+aplikacyjnej. Za pomocą ustalonego bufora wynajduje odpowiednią
+składnie HTTP i ją normalizuje. HTTP Inspekt działa w obydwu trybach
+jednocześnie: <i>client requests</i> (pol. zapytania klienta) i <i>server
+responses</i> (pol. odpowiedzi serwera). Mnoga liczba dostępnych opcji
+w konfiguracji preprocesora, umożliwia dostosowanie ustawień do
+konkretnego typu serwera WWW.<br>
+Głównymi zadaniami http_inspect jest przetwarzanie
+adresów URI, konwertując na ASCII znaki zakodowane w postaci
+szesnastkowej. Utrudnia to ukrycie ataku przed modułem wykrywającym
+sygnatury ataków przez zakodowanie typowych sekwencji. Dekoduje
+także znaki zakodowane jako Unicode, oraz wykrywa nielegalne
+kodowania, wykorzystywane m.in. w ostatnich dziurach MS IIS.</li>
+ <li><b>Portscan Detector</b> - wykrywa próby skanowania portów,
+polegające na przekroczeniu pewnej progowej liczby prób połączeń z
+różnymi portami w określonym przedziale czasu. Ze względu na
+brak możliwości uniknięcia fałszywych alarmów w typowych
+przypadkach (np. obciążony serwer DNS), istnieje możliwość
+wyłączenia alarmów wzbudzanych przez określone adresy IP używając
+dodatkowego procesora <b>portscan-ignorehosts</b>. Pozwala także,
+zapisać wyniki w oddzielnym pliku dziennika.</li>
+
+ <li><b>Telnet Decode</b> - usuwa z sesji TELNET i FTP binarne ciągi
+mogące utrudnić wyszukiwanie z udziałem sygnatur ataków.</li>
+ <li><b>RPC Decode</b> - normalizuje żądania po protokole RPC,
+utrudniając ukrywanie podejrzanych pakietów za pomocą mniejszych operacji.</li>
+ <li><b>Back Orifice detektor</b> - wyszukuje w pakietach UDP próby
+połączeń konia trojańskiego Back Orifice i próbuje złamać zabezpieczające je
+słabe kodowanie.</li>
+ <li><b>Arpspoof</b> - wykrywa podejrzane pakiety ARP, mogące
+sygnalizować próby ARP spoofingu.</li>
+
+ <li><b>Performance Monitor</b> - udostępnia wszelkiego rodzaju
+statystyki liczbowe, odnośnie ilości
+przeanalizowanych pakietów, zużycia procesora itp. Całość
+wyświetlana jest na ekranie konsoli lub zapisywana do pliku, wg
+ustalonych wcześniej wartości.</li>
+</ul>
+<p>Zarówno preprocesory, jak i mechanizm detekcji mogą zareagować w
+określony sposób. Po wychwyceniu pakietów,
+spełniających warunki nadane konfiguracją
+preprocesorów lub regułami, podejmowane jest odpowiednie
+działanie (np. zapisanie pakietów bądź alarm).</p>
+
+<h3>Moduł sygnatur</h3>
+<p>Gółwny mechanizm systemu detekcji zagrożeń polega na dopasowaniu
+przetworzonych pakietów i ich zrekonstruowanych strumieni z
+bazą sygnatur. System detekcji porównuje cechy pakietu ze
+zbiorem reguł. Po dopasowaniu, zostaje podjęta odpowiednia
+akcja. Do porównywalnych cech należą atrybuty gółwne
+- adresy, porty źródłowe i docelowe oraz opcje
+pomocnicze: flagi TCP identyfikujące np. żądania
+związane z WWW, różne typy pakietów ICMP,
+opcje IP czy wreszcie sama treść pakietu. Na razie w
+gółwnej części reguł możliwe jest
+śledzenie protokołów IP, ICMP, TCP i UDP. Autorzy
+przewidują rozszerzenie Snorta o następne protokoły
+sieciowe, m.in. IPX, GRE, czy protokoły wymiany informacji
+między routerami - RIP, OSPF oraz IGRP.</p>
+<p>Reguły identyfikowania ataku pozwalają na podjęcie pięciu
+rodzajów akcji: przepuszczenia pakietu (pass), zapisania
+informacji do dziennika (log), ogłoszenia alarmu (alert),
+alarmowania i podjęcia do działania innej dynamicznej
+reguły (activate) i pozostanie w spoczynku do czasu aktywowania
+przez regułę <i>activate</i>, po czym działanie jako
+reguła <i>log</i> (dynamic).</p>
+
+<p>Sygnatury Snorta zazwyczaj składają się z dwóch głównych
+sekcji - nagłówka i ciała (treści). Nagłówek
+określa m.in., jaką akcję należy podjąć
+po przypasowaniu reguły, informacje o wykorzystanym protokole,
+adresy bądź porty źródłowe i docelowe.
+Ciało reguły pozwala rozwinąć informacje zawarte
+w nagłówku, tu także podaje sią treść
+wzbudzanych alarmów i różnego rodzaju informacje
+dodatkowe (np. odniesienia do bazy z opisami danego naruszenia, tzw.
+referencje - <A href="http://www.securityfocus.com/bid"
+target="_blank">Bugtraq</A>, <A href="http://www.cert.org">CERT</A> czy <A
+href="http://www.cve.mitre.org/" target="_blank">CVE</A>).</p>
+
+
+<p>Najprostsze sygnatury obejmują wskazanie akcji, protokołu,
+kierunku, adresów i portów będących przedmiotem obserwacji, jak np.
+poniższa reguła, stanowiąca reakcję na próbę
+skorzystania z usługi pop3 (port 110):
+</p>
+<pre>log tcp any any -> 192.168.1.0/24 110</pre>
+<p>W sygnaturach można umieszczać zmienne zdefiniowane jako
+adresy sieci (wg CIDR) lub porty zapisane w pliku konfiguracyjnym
+<i>snort.conf</i>:
+
+</p>
+<pre>log tcp $EXTERNAL_NET -> $HOME_NET 110</pre>
+<p>W podanych powyżej regułach wykorzystany był
+jednokierunkowy operator "->". Język sygnatur umożliwia zadeklarowanie reguły, który dopasuje
+pakiety poruszające się w obu stronach operatorem
+dwukierunkowym "<>", np.:</p>
+<pre>alert tcp any any <> $HOME_NET 23</pre>
+
+<p>Do zasadniczej części reguły można dodać
+ograniczone okrągłymi nawiasami pole opcjonalne (tzw.
+ciało), zawierające definicję bardziej złożonych
+i wyrafinowanych działań związanych z przejęciem
+danego pakietu. Użytkownik może także sformułować
+własny komunikat, np.:</p>
+<pre>log tcp $EXTERNAL_NET -> $HOME_NET 110 ("msg: Proba polaczenia z pop3";)</pre>
+<p>Podjęte działania nie muszą być ograniczone do pojedynczej
+czynności. Średnik separuje deklaracje poszczególnych
+działań, jak w poniższym przykładzie, w którym
+opcją <i>content</i> testowana jest treść przesyłanego
+strumienia TCP, a w razie odnotowania podejrzanego ciągu znaków
+generowany jest odpowiedni komunikat:</p>
+
+<pre>alert tcp any any -> 192.168.1.0/24 80 (content: "/cgi-bin/phf"; msg: "PHF probe!";)</pre>
+<p>Opcji <i>content</i> można użyć nawet kilka razy w jednej
+regule. Pozwala to na wyszukiwanie wielu różnych ciągów
+znaków w obrębie przesyłanych treści.
+</p>
+
+<p>Warto nadmienić, iż do przeszukania treści pakietów i reasemblowanych strumieni używany jest
+obecnie najbardziej efektywny algorytm - Boyera-Moore'a, którego wydajność rośnie wraz z długością
+poszukiwanych ciągów. Możliwość rekonstrukcji całych strumieni transmisji TCP, wglądu w warstwę
+aplikacyjną i efektywne wyszukiwanie treści pozwala na walkę przy użyciu Snorta również z
+zainfekowanymi załącznikami elektronicznych listów. Oprócz przeszukiwania treści pakietów możemy
+badać pod różnymi kątami ich nagłówki, m.in. pola i kody ICMP, pole TTL, rozmiary fragmentacji czy
+numery sekwencji.</p>
+
+<p>Bardzo silną konstrukcją w regułach Snorta jest możliwość aktywowania kolejnych reguł po pierwszym
+ dopasowaniu. Konstrukcja ta nosi nazwę activate/dynamic rules i wygląda w następujący sposób:
+
+<pre>activate tcp any any -> $HOME_NET 143 (flags: PA; content: "|E8C0FFFFFF|bin|;activates: 1; msg: "IMAP buffer overflow!";)
+dynamic tcp any any -> $HOME_NET 143 (activated_by: 1; count: 50;)</pre>
+
+<p>Opcje <i>activates</i> i <i>activated_by</i> wiążą reguły <i>activate</i> i <i>dynamic</i>. W
+powyższym przykładzie wykrycie ataku typu buffer overflow na serwer IMAP powoduje uruchomienie
+ kolejnej, dynamicznej reguły, która zbiera treść następnych 50 pakietów (opcja <i>count</i>) w
+ celu późniejszej analizy. Druga opcja w reguły dynamicznej jest obligatoryjna - reguła zawierająca
+ wyłącznie opcję dowiązania do innej, macierzystej konstrukcji jest bezużyteczna. </p>
+
+
+<p>Następne godne uwagi parametry, to <i>resp</i> i <i>react</i> wspierają mechanizm elastycznego reagowania
+ na atak. Opcja <i>resp</i> może doprowadzić do zerwania połączenia, np. poprzez wysłanie do
+ atakującego komunikatu ICMP o niedostępności trasy do zaatakowanego komputera, natomiast <i>react</i>
+ służy do blokowania dostępu do usług związanych z WWW. </p>
+
+
+<h2>Ciekawe projekty</h2>
+<ul>
+<li><strong><A href="http://www.nessus.org">Nessus</A></strong> – sieciowy
+tester bezpieczeństwa, przydatny do
+określania skuteczności skonfigurowanego przez nas Snorta.</li>
+<li><strong><A
+href="http://jeremy.chartier.free.fr/snortalog/">SnortALog</strong></A> –
+skrypt Perlowy pozwalający na generowanie różnego rodzaju raportów, grafów i
+statystyk. Korzystając z logów Snorta, format wygenerowanych raportów może
+stanowić plik tekstowy, HTML, a nawet PDF. </li>
+<li><strong><A href="http://snort-inline.sf.net/">Snort Inline</A></strong> –
+poprawka dla Snorta, umożliwiająca współprace z regułami firewalla
+IPtables, stosowanego w systemach opartych na
+jądrze Linux. Specjalnie sformułowane sygnatury Snorta, reagują na atak i
+blokują bądź przekierowują za pomocą ściany ogniowej drogę pakietów pochodzących
+od intruza. </li>
+<li><strong><A href="http://www.snortsam.net/">SnortSam</A></strong> - jest to
+zestaw pluginów do Snorta pełniących podobną funkcje jak Snort Inline, ale
+wspomagająca większą liczbę różnego rodzaju zapór ogniowych (m.in. Checkpoint
+Firewall-1, Cisco PIX, Cisco Routers z ACL, Netscreen, IP Filter dla *BSD, Linux
+IPchains, Linux IPtables, WatchGuard Firebox).</li>
+<li><strong><A href="http://www.geschke-online.de/FLoP/">FLoP</A></strong> –
+projekt ma na celu, przyspieszenie logowania w procesie wykrywania włamań. Do
+tego wykorzystuje odpowiednie bufory i możliwość szybkiego zapisu przez gniazdo
+unixowe do baz danych MySQL i PostgreSQL. Bardzo przydatne narzędzie przy pracy
+w sieciach o dużej przepustowości.</li>
+</ul>
+
+
+</body>
+</html>
Wiêcej informacji o li¶cie dyskusyjnej pld-doc