Gentoo Logo

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

(Krok 1)
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 ./

(Krok 2)
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

(Krok 3)
include classification.config

(Krok 4)
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.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.