|
1.
AIDE (Advanced Intrusion Detection Environment)
AIDE jest systemem wykrywania włamań będącym darmową alternatywą dla Tripwire
(osoby dobrze znające Tripwire nie powinny mieć żadnych problemów z konfiguracją
AIDE). Systemów HID używa się do wykrywania zmian w ważnych systemowych plikach
konfiguracyjnych i binarnych. Dokonuje się tego poprzez utworzenie i
zachowanie unikalnych hashy każdego z tych plików. Co jakiś czas, zwykle
codziennie, przechowywane w bezpiecznym miejscu hashe są porównywane z nowo
utworzonymi hashami odpowiednich plików, co umożliwia wykrycie dokonanych w
nich zmian. HIDS jest więc doskonałym sposobem wykrywania wszelkiej niepożądanej
aktywności w naszym systemie, a jego jedyną wadą jest to, że odpowiednie
zaimplementowanie takiego systemu wymaga trochę pracy.
Plik konfiguracyjny jest oparty na wyrażeniach regularnych, makrach i regułach
dla plików oraz katalogów. Mamy do dyspozycji następujące makra:
| Makro |
Opis |
Składnia |
| ifdef |
"Jeśli zdefiniowano" |
@@ifdef "nazwa" |
| ifndef |
"Jeśli nie zdefiniowano..." |
@@ifndef "nazwa" |
| define |
Definiuje zmienną |
@@define "zmienna" "wartość" |
| undef |
Usuwa zmienną |
@@undef "nazwa" |
| ifhost |
Jeśli "nazwa hosta"... |
@@ifhost "nazwa hosta" |
| ifnhost |
Jeśli nazwa hosta różna od "nazwa hosta"... |
@@ifnhost "nazwa hosta" |
| endif |
Endif używa się po każdym z powyżyszych makr, poza define i undef.
|
@@endif |
Makra te są bardzo pomocne kiedy administruje się więcej niż jednym komputerem z
Gentoo i chce się używać AIDE na każdym z nich. Należy jednak zwrócić uwagę, że
nie wszystkie komputery posiadają te same usługi i identyczne konta
użytkowników.
Kolejny zestaw wyrażeń to flagi dla plików i katalogów, czyli kombinacja praw
dostępu, właściwości plików i hashy (sum kontrolnych).
| Flaga |
Opis |
| p |
prawa dostępu |
| i |
inoda |
| n |
liczba połączeń |
| u |
użytkownik |
| g |
grupa |
| s |
rozmiar |
| b |
ilość bloków |
| m |
mtime |
| a |
atime |
| c |
ctime |
| S |
sprawdza przyrost rozmiaru |
| md5 |
suma kontrolna md5 |
| sha1 |
suma kontrolna sha1 |
| rmd160 |
suma kontrolna rmd160 |
| tiger |
suma kontrolna tiger |
| R |
p+i+n+u+g+s+m+c+md5 |
| L |
p+i+n+u+g |
| E |
Pusta grupa |
| > |
Rosnący plik z logami p+u+g+i+n+S |
Ponadto jeśli AIDE zostanie skompilowane ze wsparciem dla mhash dostępne będą
dodatkowo takie opcje:
| Flaga |
Opis |
| haval |
suma kontrolna haval |
| gost |
suma kontrolna gost |
| crc32 |
suma kontrolna crc32 |
Przy użyciu powyższych flag można stworzyć własny zestaw reguł. Na przykład:
Listing 1.1: Zbór reguł dla AIDE |
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
|
Ostatnią rzeczą jaką trzeba dopisać do pliku konfiguracyjnego są zasady obsługi
plików i katalogów. Regułę dodajemy poprzez dopisanie nazwy pliku bądź katalogu
wraz z odpowiednim zestawem flag. AIDE doda wszystkie możliwe pliki rekursywnie
o ile nie nakażemy inaczej.
| Flaga |
Opis |
| ! |
Nie dodawać tego pliku bądź katalogu. |
| = |
Dodaj ten katalog, ale nie rekursywnie. |
A oto przykładowy końcowy efekt:
Listing 1.1: /etc/aide/aide.conf |
@@ifndef TOPDIR
@@define TOPDIR /
@@endif
@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif
@@ifhost smbserv
@@define smbactive
@@endif
# The location of the database to be read.
database=file:@@{AIDEDIR}/aide.db
# The location of the database to be written.
database_out=file:aide.db.new
verbose=20
report_url=stdout
# Rule definition
All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160
@@{TOPDIR} Norm
!@@{TOPDIR}etc/aide
!@@{TOPDIR}dev
!@@{TOPDIR}media
!@@{TOPDIR}mnt
!@@{TOPDIR}proc
!@@{TOPDIR}root
!@@{TOPDIR}sys
!@@{TOPDIR}tmp
!@@{TOPDIR}var/log
!@@{TOPDIR}var/run
!@@{TOPDIR}usr/portage
@@ifdef smbactive
!@@{TOPDIR}etc/smb/private/secrets.tdb
@@endif
=@@{TOPDIR}home Norm
|
W powyższym przykładzie definiujemy poprzez makra katalog główny oraz miejsce
gdzie zainstalowano AIDE. AIDE sprawdza plik /etc/aide/aide.db przy
kontrolowaniu integralności plików, ale podczas uaktualniania lub tworzenia
nowej bazy wszystkie informacje zapisuje do pliku
/etc/aide/aide.db.new. Robimy tak, aby zapobiec automatycznemu
nadpisaniu starego pliku z bazą danych. Opcja report_URL nie została
jeszcze zaimplementowana, autor zamierza dzięki niej umożliwić programowi
wysyłanie e-maili oraz wykonywanie skryptów.
AIDE w Gentoo jest instalowane wraz z działającym w większości sytuacji plikiem
konfiguracyjnym oraz dwoma skryptami, skryptem pomagającym w konfiguracji oraz
skryptem do crobtaba. Pierwszy skrypt udostępnia użytkownikowi interfejs,
dzięki któremu cały proces konfiguracji staje się znacznie przyjemniejszy.
Listę wszystkich jego parametrów można uzyskać za pomocą polecenia aide
--help. Na początek powinno wystarczyć aide -i, po chwili skrypt
crontaba odkryje bazę danych i będzie wysyłał e-maile tak jak zostało to tam
skonfigurowane. Radzimy zapoznać się z zawartością pliku
/etc/aide/aide.conf i sprawdzić czy wszystkie ustawienia w nim
zapisane są odpowiednie dla określonej sytuacji.
Uwaga:
Zadanie to może zająć trochę czasu, w zależności od sprzętu i użytych flag.
|
Uwaga:
Jeśli zapomni się o ustawieniu aliasu pocztowego, który będzie przekierowywał
całą pocztę roota na prywatne konto administratora to nigdy nie ujrzy się
żadnego z raportów AIDE.
|
Przechowywanie plików bazy danych na tym samym systemie, na którym dokonujemy
testów wiąże się z pewnym ryzykiem. Jeśli włamywacz będzie świadom tego, że
używamy AIDE zwykle spróbuje zmienić plik bazy danych, uaktualnić go po
wprowadzeniu zmian lub nawet zmodyfikować plik /usr/bin/aide. W
związku z tym warto rozważyć nagrywanie każdej kolejnej wersji pliku z bazą oraz
plików binarnych AIDE na płyty CD.
Więcej informacji znajduje się na stronach projektu AIDE.
1.
Snort
Snort jest to sieciowy system wykrywania włamań (NIDS - Network Intrusion
Detection System). Aby go zainstalować i skonfigurować należy wykonać
następujące czynności:
Listing 1.1: /etc/conf.d/snort.conf |
PIDFILE=/var/run/snort_eth0.pid
MODE="full"
NETWORK="10.0.0.0/24"
LOGDIR="/var/log/snort"
CONF=/etc/snort/snort.conf
SNORT_OPTS="-D -s -u snort -dev -l $LOGDIR -h $NETWORK -c $CONF"
|
Listing 1.1: /etc/snort/snort.conf |
var HOME_NET 10.0.0.0/24
var EXTERNAL_NET any
var SMTP $HOME_NET
var HTTP_SERVERS $HOME_NET
var SQL_SERVERS $HOME_NET
var DNS_SERVERS [10.0.0.2/32,212.242.40.51/32]
var RULE_PATH ./
preprocessor frag2
preprocessor stream4: detect_scans detect_state_problems detect_scans disable_evasion_alerts
preprocessor stream4_reassemble: ports all
preprocessor http_decode: 80 8080 unicode iis_alt_unicode double_encode iis_flip_slash full_whitespace
preprocessor rpc_decode: 111 32771
preprocessor bo: -nobrute
preprocessor telnet_decode
include classification.config
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/porn.rules
include $RULE_PATH/info.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/virus.rules
# include $RULE_PATH/experimental.rules
include $RULE_PATH/local.rules
|
Listing 1.1: /etc/snort/classification.config |
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
# NEW CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable code was detected,1
config classification: string-detect,A suspicious string was detected,3
config classification: suspicious-filename-detect,A suspicious filename was detected,2
config classification: suspicious-login,An attempted login using a suspicious username was detected,2
config classification: system-call-detect,A system call was detected,2
config classification: tcp-connection,A TCP connection was detected,4
config classification: trojan-activity,A Network Trojan was detected, 1
config classification: unusual-client-port-connection,A client was using an unusual port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a non-standard protocol or event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,access to a potentially vulnerable web application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: kickass-porn,SCORE! Get the lotion!,1
|
Więcej informacji znajduje się na stronie projektu Snort.
1.
Wykrywanie nieprawidłowości przy pomocy chkrootkit.
HIDS taki jak AIDE to świetny sposób wykrywania niepożądanych zmian w
systemie. Warto jednak mieć też drugą linię obrony. chkrootkit to program
skanujący najważniejszy pliki systemowe pod kątem obecności rootkitów, czyli
programów pisanych, aby ukryć obecność włamywacza i pozwolić mu na zachowanie
dostępu do komputera. Program skanuje również system w poszukiwaniu śladów
loggerów klawiszy i innych niepożądanych programów. Jest to bardzo użyteczne
narzędzie, posiadające zresztą kilka podobnie działających alternatyw (jak
rkhunter). Mimo wszystko należy pamiętać, że żaden z nich nie gwarantuje
bezpieczeństwa systemu.
Najwygodniejszym sposobem korzystania z chkrootkit jako metody wykrywania
włamań jest uruchamianie go przy pomocy crona. Przede wszystkim trzeba go
jednak zainstalować - poleceniem emerge app-admin/chkrootkit.
chkrootkit może być uruchamiany z linii poleceń przy pomocy komendy o tej
samej nazwie lub poprzez taki wpis w cronie:
Listing 1.1: Planownie chkrootkit jako zadania dla crona |
0 3 * * * /usr/sbin/chkrootkit
|
|
Zaktualizowano 1 listopada 2006 |
Oryginalna wersja tego dokumentu została
po raz ostatni zaktualizowana 19 lipca 2010. Jeśli chcesz pomóc w aktualizacji
tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem
polskiego projektu tłumaczeń dokumentacji Gentoo.
|
|
Donate to support our development efforts.
|
|
|