Gentoo Logo

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


13. Aufspüren von Eindringlingen

Inhalt:

13.a. AIDE (Advanced Intrusion Detection Environment)

Aide ist ein Host-basierendes Eindringlingserkennungssystem (HIDS, Host-based Intrusion Detection System), eine kostenlose Alternative zu Tripwire (falls Sie bereits mit Tripwire vertraut sind, sollten Sie keine Schwierigkeiten haben die Konfigurationsdateien für Aide zu erlernen). HIDS werden zu Entdeckung von Änderungen an wichtigen Systemkonfigurations- und Binärdateien verwendet. In der Regel, indem sie einen kryptographischen Hash-Wert für jede der zu prüfenden Dateien erstellen und diesen an einem sicheren Ort speichern. In regelmäßigen Abständen (z.B. täglich) werden die als "gut" bekannten Werte mit denen der derzeitigen Kopien der Dateien verglichen, um herauszufinden, ob die Datei geändert wurde. HIDS sind eine gute Methode um unerlaubte Änderungen am System zu entdecken, aber es braucht ein wenig Arbeit sie ordentlich einzurichten und gut zu verwenden.

Die Konfigurationsdatei basiert auf regulären Ausdrücken, Makros und Regeln für Dateien und Verzeichnisse. Wir haben die folgenden Makros:

Makro Beschreibung Syntax
ifdef wenn definiert @@ifdef "name"
ifndef wenn nicht definiert @@ifndef "name"
define definiert eine Variable @@define "name" "value"
undef undefiniert eine Variable @@undef "name"
ifhost wenn "hostname" @@ifhost "hostname"
ifnhost wenn "hostname" nicht @@ifnhost "hostname"
endif Endif muss nach jedem der obigen Makros, außer define und undef, benutzt werden. @@endif

Diese Makros sind sehr praktisch, wenn Sie mehr als ein Gentoo System haben und auf allen Aide benutzen wollen. Aber nicht alle Maschinen haben dieselben Dienste oder gar Benutzer.

Als nächstes haben wir Gruppen von Flags um Überprüfungen an Dateien und Ordnern durchzuführen. Diese sind eine Kombination aus Berechtigungen, Dateieigenschaften und kryptographischen Hashes/Prüfsummen.

Flag Beschreibung
p Berechtigungen
i Inode
n Anzahl der Links
u Benutzer
g Gruppe
s Größe
b Blockzahl
m mtime
a atime
c ctime
S Überprüfung ob die Größe wächst
md5 MD5 Checksumme
sha1 SHA1 Checksumme
rmd160 RMD160 Checksumme
tiger Tiger Checksumme
R p+i+n+u+g+s+m+c+md5
L p+i+n+u+g
E Leere Gruppe
> Wachsende Protokolldatei p+u+g+i+n+S

Und wenn Aide mit mhash-Unterstützung kompiliert ist, hat es noch einige weitere Funktionen:

Flag Beschreibung
haval HAVAL Checksumme
gost GOST Checksumme
crc32 CRC32 Checksumme

Nun können Sie Ihre eigenen auf den oben genannten Flags basierenden Regeln definieren, indem Sie diese folgendermaßen kombinieren:

Befehlsauflistung 1.1: Erstellen eines Regelsatzes für AIDE

All=R+a+sha1+rmd160
Norm=s+n+b+md5+sha1+rmd160

Das letzte was wir tun müssen um unsere eigene Konfigurationsdatei zu erstellen ist zu schauen wie man diese Regeln einer Datei oder einem Verzeichnis hinzufügt. Um eine Regel einzugeben, kombinieren Sie Datei oder Verzeichnis und die Regel. AIDE wird alle Dateien rekursiv hinzufügen, es sei denn Sie spezifizieren eine alternative Regel.

Flag Beschreibung
! Diese Datei oder dieses Verzeichnis nicht hinzufügen.
= Dieses Verzeichnis hinzufügen, aber nicht rekursiv.

Lassen Sie uns also ein vollständiges Beispiel betrachten:

Befehlsauflistung 1.2: /etc/aide/aide.conf

@@ifndef TOPDIR
@@define TOPDIR /
@@endif

@@ifndef AIDEDIR
@@define AIDEDIR /etc/aide
@@endif

@@ifhost smbserv
@@define smbactive
@@endif

# Der Ort der Datenbank die gelesen werden soll.
database=file:@@{AIDEDIR}/aide.db

# Der Ort der Datenbank, die erstellt werden soll.
database_out=file:aide.db.new

verbose=20
report_url=stdout

# Regeldefinition
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

Im obigen Beispiel definieren wir einige Makros, die angeben wo das topdir beginnt und wo das AIDE Verzeichnis ist. AIDE überprüft die /etc/aide/aide.db Datei wenn die Integrität einer Datei überprüft wird. Jedoch wenn ein Update vorgenommen wird oder eine neue Datei erstellt wird, speichert es die Informationen in /etc/aide/aide.db.new. Dies geschieht, damit die ursprünglich Datenbankdatei nicht automatisch überschrieben wird. Die Option report_URL ist eine noch nicht implementierte Funktion, die wirklich noch keine Bedeutung hat.Die Absicht des Autoren war es, dass es möglich wäre eine Email zu senden oder vielleicht sogar ein Skript auszuführen.

Das AIDE Ebuild enthält seit neuestem eine funktionierende Standardkonfigurationsdatei, ein Hilfsskript und ein Crontab-Skript. Das Hilfsskript erledigt eine Vielzahl von Aufgaben für Sie und stellt ein Interface bereit, dass etwas Skript-freundlicher ist. Um alle verfügbaren Optionen zu betrachten, geben Sie einfach aide --help ein. Alles was benötigt wird um loszulegen ist aide -i und das Crontab-Skript sollte die Datenbank aufspüren und je nach Bedarf täglich Mails versenden. Wir empfehlen, dass Sie sich mit der /etc/aide/aide.conf Datei vertraut machen und sicherstellen, dass dort korrekt wiedergespiegelt wird, was sich auf Ihrem Rechner befindet.

Notiz: Abhängig von Ihrer CPU, Festplattenzugriffsgeschwindigkeit und den benutzten Flags für Dateien, kann dies einige Zeit in Anspruch nehmen.

Notiz: Denken Sie daran es so einzustellen, dass Sie die Post für root bekommen. Ansonsten werden Sie niemals wissen was AIDE berichtet.

Nun gibt es einige Probleme damit die Datenbankdateien lokal zu speichern, denn der Angreifer wird (wenn er weiß, dass Aide installiert ist) höchstwahrscheinlich versuchen die Datenbankdatei zu verändern, ein Update der Datenbankdatei durchzuführen oder /usr/bin/aide zu verändern. Deswegen sollten Sie eine CD oder anderes Medium erstellen auf das Sie eine Kopie der Datenbankdatei und der Aide Binärdateien ablegen.

Weitere Informationen gibt es auf der AIDE Projektseite.

13.b. Snort

Snort ist ein "Network Intrusion Detection System" (NIDS). Benutzen Sie zur Installation und Konfiguration die folgenden Beispiele.

Befehlsauflistung 2.1: /etc/conf.d/snort

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"

Befehlsauflistung 2.2: /etc/snort/snort.conf

(Schritt 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 ./

(Schritt 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

(Schritt 3)
include classification.config

(Schritt 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

Befehlsauflistung 2.3: /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

Weitere Informationen gibt es auf der Snort Webseite.

13.c. Auffinden von böswilliger Software mit chkrootkit

HIDS wie AIDE sind sehr gut, um Änderungen am System zu bemerken, aber es schadet nie, eine weitere Verteidigungslinie zu haben. chkrootkit ist ein Werkzeug, welches typische Systemdateien auf die Anwesenheit von Rootkits untersucht -- Programme welche entworfen wurden, um das Vorgehen eines Eindringlings zu verstecken und seinen Zugriff aufrecht zu erhalten. Es durchsucht Ihr System auch nach Spuren von Keyloggern und anderer sog. Malware (Schadsoftware). Auch wenn chkrootkit (und Alternativen wie rkhunter) sinnvolle Werkzeuge zur Systempflege und zum Aufspüren eines Eindringlings nach einem Angriff sind, so können sie doch nicht garantieren, dass das System sicher ist.

Die beste Art um mit chkrootkit einen Eindringling aufzuspüren ist es das Programm routinemäßig von cron ausführen zu lassen. Zu Beginn wird mit emerge app-forensics/chkrootkit installiert. chkrootkit kann in der Kommandozeile mit demselben Namen, oder durch cron mit einen Eintrag wie folgt, ausgeführt werden:

Befehlsauflistung 3.1: chkrootkit als cronjob einrichten

0 3 * * * /usr/sbin/chkrootkit

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 19. Juli 2010

Die Originalversion dieses Dokuments wurde zuletzt am 10. April 2014 aktualisiert

Zusammenfassung: Eindringlinge ausfindig machen.

Kim Nielsen
Autor

John P. Davis
Bearbeiter

Eric R. Stockbridge
Bearbeiter

Carl Anderson
Bearbeiter

Jorge Paulo
Bearbeiter

Sven Vermeulen
Bearbeiter

Benny Chuang
Bearbeiter

Sune Jeppesen
Bearbeiter

Tiemo Kieft
Bearbeiter

Zack Gilburd
Bearbeiter

Dan Margolis
Bearbeiter

Joshua Saddler
Bearbeiter

Jan Hendrik Grahl
Übersetzer

Tobias Scherbaum
Übersetzer

Matthias Geerdsen
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

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