Upload
lykiet
View
213
Download
1
Embed Size (px)
Citation preview
ITS-9.1 1
9.2 Überwachungssysteme
Automatische Protokollierung sicherheitsrelevanter Ereignisse
ermöglicht Entdeckung/Rekonstruktion von erfolgreichen - und erfolglosen - Angriffen,
ermöglicht eventuell, den Angreifer auf frischer Tat zu ertappen,
ist sinnvoll, weil hohe Sicherheit unverhältnismäßig teuer sein kann,
ist sinnvoll, weil 100% Sicherheit unmöglich ist,
ist empfehlenswert bei allen sicherheitskritischen Systemen
ITS-9.1 2
9.2.1 Protokollierung
Betriebssystem protokolliert Ereignisse
- zu Abrechnungszwecken,- zu Sicherheitszwecken
Sicherheitsrelevante Ereignisse sind verzeichnet
- teils in den Abrechnungsprotokollen,- teils in zusätzlichen Sicherheitsprotokollen.
(audit logs, audit trails, audit data, ...; audit = „Buchprüfung“)
(security auditing)
ITS-9.1 3
Aspekte der Protokollierung:
was soll protokolliert werden?lokales Ein/Ausloggen, Zugang übers Netz,sicherheitsbezogene Systemaufrufe, ...
wie viel soll protokolliert werden?wenig → unzureichende Informationviel → Informationsüberflutung
wo kann das Protokoll sicher abgelegt werden?- schreibgeschützte Datei- andere Maschine, evtl. besonders gesichert (loghost)- Papier/sicherer Drucker! (+ physisch sichern)
ITS-9.1 4
Problematische Aspekte der Protokollierung:
wie können die Daten sinnvoll ausgewertet werden?
verstößt die Protokollierung gegen den Datenschutz?
(aktuelle Forschung: pseudonymisierte Protokollierungmit Aufdeckung der Pseudonyme bei hinreichendem Verdacht)
ITS-9.1 5
9.2.1.1 Protokollierung in Unix
wird (wenig) unterstützt - für Abrechnung,- für Systemverwaltung,- für Fehlerverfolgung,- in Ermangelung eines besseren auch für Sicherheitsüberwachung
unterschiedlich für Linux, Solaris, . . .
Was, wie viel, wo ?
Aufruf der Bibliotheksroutine syslog veranlasst Nachricht an Systemprozess syslogd, der die Protokollierung übernimmt.
Verhalten von syslogd wird durch /etc/syslog.conf bestimmt:
ITS-9.1 6
jefe: m /etc/syslog.conf#ident "@(#)syslog.conf 1.5 98/12/14 SMI" /* SunOS 5.0 */## Copyright (c) 1991-1998 by Sun Microsystems, Inc.# All rights reserved.## syslog configuration file.## This file is processed by m4 so be careful to quote (`') names# that match m4 reserved words. Also, within ifdef's, arguments# containing commas must be quoted.#*.err; kern.notice; auth.notice /dev/sysmsg*.err; kern.debug; daemon.notice; mail.crit /var/adm/messages
*.alert; kern.err; daemon.err operator*.alert root
*.emerg *
.....
usw. „facilities“: user, kern, mail, auth, daemon, ...„level“: emerg, alert, err, ... (von syslog)„action“: Datei/Gerät oder Benutzer (falls aktiv) oder loghost
ITS-9.1 7
Typische Dateien (viele Variationen bei Unix-Varianten!):
/var/log/syslog /authlog
/...
/var/adm/utmp
/wtmp Benutzungszeiten, anzeigbar mit Befehl last
/messages Nachrichten für Systemverwalter /lastlog
/...
/var/audit/...
ITS-9.1 8
Beispiel Benutzungszeiten:
jefe: last | morelohr pts/2 lohr.dialup.fu-b Sun Jun 9 14:35 still logged inlohr pts/2 lohr.dialup.fu-b Sun Jun 9 13:10 - 14:07 (00:57)schweppe pts/2 tarent.icsi.berk Thu Jun 6 17:51 - 17:52 (00:00)idys pts/2 darwin Thu Jun 6 11:28 - 11:28 (00:00)schweppe pts/2 fondue.icsi.berk Wed Jun 5 21:39 - 21:53 (00:14)schweppe pts/2 fondue.icsi.berk Wed Jun 5 21:20 - 21:22 (00:02)schweppe pts/2 fondue.icsi.berk Wed Jun 5 20:28 - 20:33 (00:05)schweppe pts/2 fondue.icsi.berk Wed Jun 5 19:55 - 20:13 (00:18)schweppe pts/2 fondue.icsi.berk Wed Jun 5 19:01 - 19:18 (00:16)idys pts/2 i40s12.ipd.uni-k Tue Jun 4 14:35 - 14:35 (00:00)oracle pts/2 elfe Mon Jun 3 12:40 - 12:41 (00:01)koenig pts/2 orakel Mon Jun 3 12:39 - 12:39 (00:00)lohr pts/2 lohr.dialup.fu-b Sat Jun 1 20:07 - 22:31 (02:23)lichtblu pts/2 troll Sat Jun 1 15:21 - 15:21 (00:00)root pts/2 stucki Fri May 31 19:41 - 19:41 (00:00)root pts/2 bombadil Fri May 31 13:05 - 13:31 (00:25)schweppe pts/2 pd9e6aa49.dip.t- Fri May 31 07:39 - 07:39 (00:00)voges pts/6 server9.gameserv Thu May 30 15:24 - 15:24 (00:00)schweppe pts/6 pd9e6b258.dip.t- Thu May 30 07:38 - 07:41 (00:02)schweppe pts/6 pd9e6b7c9.dip.t- Wed May 29 08:17 - 08:19 (00:01)lohr pts/6 lohr.dialup.fu-b Tue May 28 13:21 - 15:20 (01:59)
Beispiele Warn- und Fehlermeldungen:
jefe: more messages.3May 13 11:14:50 jefe bootpd[28515]: [ID 864722 daemon.notice] IP address not found: 160.45.110.120May 13 11:14:53 jefe last message repeated 1 timeMay 14 10:08:59 jefe bootpd[15814]: [ID 688103 daemon.notice] IP address not found: 160.45.110.188May 14 10:09:03 jefe last message repeated 1 timeMay 14 16:27:11 jefe ufs: [ID 845546 kern.notice] NOTICE: alloc: /export/home: file system fullMay 14 16:28:19 jefe last message repeated 17 timesMay 14 19:07:28 jefe afpd[19008]: [ID 988586 daemon.error] afp_flushfork: of_find: No such file or directoryMay 15 13:40:35 jefe bootpd[19585]: [ID 205861 daemon.notice] IP address not found: 160.45.110.142May 15 13:40:39 jefe last message repeated 1 timeMay 15 18:59:36 jefe /usr/dt/bin/ttsession[29901]: [ID 862433 daemon.error] child (29937) exited due to signal 1May 16 17:12:17 jefe ufs: [ID 845546 kern.notice] NOTICE: alloc: /export: file system full
IP address not found: 160.45.110.120
IP address not found: 160.45.110.188
NOTICE: alloc: /export/home: file system full
afp_flushfork: of_find: No such file or directoryIP address not found: 160.45.110.142
child (29937) exited due to signal 1 NOTICE: alloc: /export: file system full
ITS-9.1 10
athos: more messages.0Dec 7 13:57:38 athos nfs: [ID 333984 kern.notice] NFS server datsche not responding still tryingDec 7 13:57:38 athos last message repeated 1 timeDec 7 14:15:38 athos nfs: [ID 333984 kern.notice] NFS server datsche not responding still tryingDec 7 14:21:02 athos nfs: [ID 563706 kern.notice] NFS server datsche okDec 7 14:21:02 athos last message repeated 2 timesDec 7 16:18:05 athos krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/openeepr: undefined symbolDec 7 16:18:05 athos krtld: [ID 826211 kern.notice] 'plat_stdin_is_keyboard'Dec 7 16:18:05 athos krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/openeepr: undefined symbolDec 7 16:18:05 athos krtld: [ID 826211 kern.notice] 'plat_stdout_is_framebuffer'Dec 7 16:18:05 athos krtld: [ID 472681 kern.notice] WARNING: mod_load: cannot load module 'openeepr'Dec 7 16:18:05 athos pseudo: [ID 129642 kern.info] pseudo-device: ramdisk1024Dec 7 16:18:05 athos genunix: [ID 936769 kern.info] ramdisk1024 is /pseudo/ramdisk@1024Dec 7 16:18:05 athos pseudo: [ID 129642 kern.info] pseudo-device: lockstat0Dec 7 16:18:05 athos genunix: [ID 936769 kern.info] lockstat0 is /pseudo/lockstat@0Dec 7 16:18:05 athos pseudo: [ID 129642 kern.info] pseudo-device: fcp0Dec 7 16:18:05 athos genunix: [ID 936769 kern.info] fcp0 is /pseudo/fcp@0
etc.
ITS-9.1 11
9.2.1.2 Sicherheits-Protokollierung in Solaris
beim Einsatz des Basic Security Module (BSM)
(Alle BSM-Daten findet man unter dem Verzeichnis /etc/security)
Was, wie viel, wo ?
Obligatorische Protokollierung durch Betriebssystem-Kern über Audit Daemon auditd gemäß den Angaben in
/etc/security/audit_control
(was soll protokolliert werden?)
/etc/security/audit_data(wo soll protokolliert werden?)
ITS-9.1 12
Typischer Inhalt von /etc/security/audit_control :
dir: /etc/security/audit/localhost dir: /etc/security/audit.aux/localhost flags: lo,ad,-all,^-fm naflags: lo,ad
Ereignisklassen mit Präfixen (s.S. 13/14)
Typischer Inhalt von /etc/security/audit_data :
64:/etc/security/audit/elfe/20020506081249.not_terminated.elfe
Audit Daemon current audit log file
Inhalt eines audit log file:
binär codierte Ereignisdaten – siehe audit.log(4)
ITS-9.1 13
Ereignisklassen ( /etc/security/audit_class ) :
no no_class null value for turning off event preselection fr file_read Read of data, open for reading, etc. fw file_write Write of data, open for writing, etc. fa file_attr_acc Access of object attributes: stat, pathconf, etc. fm file_attr_mod Change of object attributes: chown, flock, etc. fc file_creation Creation of object fd file_deletion Deletion of object cl file_close close(2) system call pc process Process operations: fork, exec, exit, etc. nt network Network events: bind, connect, accept, etc. ip ipc System V IPC operations na non_attrib non-attributable events ad administrative administrative actions: mount, exportfs, etc. lo login_logout Login and logout events ap application Application auditing io ioctl ioctl(2) system call ex exec exec(2) system call ot other Everything else all all All flags set
ITS-9.1 14
# File Format:## mask:name:description#0x00000000:no:invalid class0x00000001:fr:file read0x00000002:fw:file write0x00000004:fa:file attribute access0x00000008:fm:file attribute modify0x00000010:fc:file create0x00000020:fd:file delete0x00000040:cl:file close0x00000100:nt:network0x00000200:ip:ipc0x00000400:na:non-attribute0x00001000:lo:login or logout0x00004000:ap:application0x00010000:ss:change system state0x00020000:as:system-wide administration0x00040000:ua:user administration0x00070000:am:administrative (meta-class)0x00080000:aa:audit utilization0x000f0000:ad:old administrative (meta-class)0x00100000:ps:process start/stop0x00200000:pm:process modify0x00300000:pc:process (meta-class)0x20000000:io:ioctl0x40000000:ex:exec0x80000000:ot:other0xffffffff:all:all classes (meta-class)
ITS-9.1 15
Präfixe von Ereignisklassen:
+ erfolgreiche Operationen protokollieren
- abgewiesene Operationen protokollieren
(ohne) erfolgreiche und abgewiesene Op. protokollieren
^ . . . nicht protokollieren
naflags (non-attributable flags):
für Ereignisse, die keinem bestimmten Benutzerzugeordnet werden können
ITS-9.1 16
Ereignisse ( /etc/security/audit_event ):
Nummer : Name : Ereignis : Ereignisklasse(n)
0:AUE_NULL:indir system call:no 1:AUE_EXIT:exit(2):pc 2:AUE_FORK:fork(2):pc 3:AUE_OPEN:open(2) - place holder:fa 4:AUE_CREAT:creat(2):fc 5:AUE_LINK:link(2):fc 6:AUE_UNLINK:unlink(2):fd 7:AUE_EXEC:exec(2):pc,ex 8:AUE_CHDIR:chdir(2):pc 9:AUE_MKNOD:mknod(2):fc10:AUE_CHMOD:chmod(2):fm11:AUE_CHOWN:chown(2):fm12:AUE_UMOUNT:umount(2) - old version:ad13:AUE_JUNK:junk:no14:AUE_ACCESS:access(2):fa15:AUE_KILL:kill(2):pc16:AUE_STAT:stat(2):fa
. . . usw.
ITS-9.1 17
Befehle audit, auditon, auditreduce, praudit, ...
(nur für Systemverwalter) :
audit -s konfiguriert den Audit Daemon gemäßaudit_control
audit –n veranlaßt den Audit Daemon, mit neuerzeugter Protokoll-Datei weiterzuarbeiten
audit –t veranlaßt den Audit Daemon, die aktuelleProtokolldatei zu schließen und dasProtokollieren einzustellen
ITS-9.1 18
Verarbeitung der protokollierten Daten:
auditreduce hat Filter-Funktion
praudit produziert lesbare Version
Beispiele:(Verarbeitung aller Daten aus /etc/security/audit/server/files/*)
% auditreduce -d 19880413 -u lorenz -c lo | praudit day user class
after before user% auditreduce -a 19880413 -b 19880416 -u lorenz
-m AUE_CHDIR | praudit event
ITS-9.1 19
9.2.1.3 Protokollierung in Windows
3 Protokolle werden geführt:
Systemprotokollfür allgemeine Ereignisse
Sicherheitsprotokollfür sicherheitsrelevante Ereignisse
Anwendungsprotokollfür anwendungsbezogene Ereignisse
Start\Einstellungen\Systemsteuerung\Verwaltung\Ereignisanzeige
Eigenschaften eines Ereignisses abfragen:
Ereignistypen sind 1. Fehler (sicherheitsrelevant:)2. Warnung 4. Erfolgsüberwachung3. Informationen 5. Fehlerüberwachung
ITS-9.1 23
Steuerung der Protokollierung sicherheitsrelevanter Ereignisse(durch den Systemverwalter):
Start – Einstellungen – Systemsteuerung – Verwaltung – Lokale Sicherheitsrichtlinie
Überwachungsrichtlinien
ITS-9.1 24
Systemverwalter kann Überwachung dateispezifisch steuern:
Eigenschaften\Sicherheitseinstellungen der Datei (4.3.2.2)
ITS-9.1 26
9.2.2 Angriffsentdeckung
(intrusion detection)
mittels automatischer On-Line-Auswertung der Protokolle:
Entdeckung bestimmter Verhaltensmuster Sicherheitsadministrator alarmieren
Anomalie-Erkennung (anomaly detection):
Anomalien gegenüber den „normalen“ Abläufen entdecken- schwierig (z.B. Einsatz neuronaler Netze),- typisches Problem „falscher Alarm versus Nichterkennung“
Missbrauchs-Erkennung (misuse detection):
vorgegebene – unzulässige oder verdächtige – Muster entdecken- mit regelbasierten Systemen gut handhabbar,- aber man muss die Angriffe kennen!
ITS-9.1 27
9.2.2.1 Angriffssprachen für Missbrauchs-Erkennung
(attack languages)
erlauben Beschreibung von Mustern (signatures)missbräuchlicher oder verdächtiger Benutzung
Beispiel 1: Muster: nach login 3-mal falsches Passwort eingegeben
Beispiel 2: Vor.: ~lohr/private hat Schutzstatus rwx--x--x
Muster: wiederholter Versuch von ls -l ~lohr/private/test mit verschiedenen test
ITS-9.1 28
Beispiel 3:
Vor.: hosts enthält den Textelfe.inf.fu-berlin.de alt
Muster: elfe:alt% cp hosts ~lohr/.rhosts elfe:alt% rlogin -l lohr elfe
(ermöglicht – im Standard-Unix – das Einloggen als lohr ohne Angabe eines Passworts)
Beispiel 4: Angriff über setuid Shell script(siehe 4.3.3, Beispiel 3)
ITS-9.1 29
Angriffssprache STATL [Kemmerer et al. 2000](State Transition Analysis Technique Language):
Modellierung:
endlicher Automat, als Diagramm graphisch darstellbar Zustandsübergang = sicherheitsrelevantes Ereignis Auszeichnung unerwünschter Zustände Alarm
Erkennungssystem
verarbeitet die gemeldeten Ereignisse, z.B. von BSM (6.1.2), gemäß den mit STATL formulierten Vorgaben, die nach Übersetzung als Plugins hinzugefügt werden
ITS-9.1 30
Obiges Beispiel 3:
elfe:alt% cp hosts ~lohr/.rhostselfe:alt% rlogin -l lohr elfe
Modellierung des Angriffsmusters
– als Diagramm:
s0 s1 s2 s3create login readrhosts
(da .rhosts vorhanden!)
– als STATL-Text:
ITS-9.1 31
– als STATL-Text:
use unix, bsm; Bezugnahme auf Bibliotheken
scenario rhostsAttack { int user; Buchführung über Daten int pid; int inode;
Abstraktion eines BSM event typeinitial state s0 { }
transition create (s0 -> s1) nonconsuming {Voraussetzung: [WRITE w] : (w.euid!=0) && (w.owner!=w.ruid)Buchführung: { inode = w.inode; }}
state s1 { }
. . . . . . . . . (nächste Seite)
ITS-9.1 32
. . . . .
transition login (s1 -> s2) nonconsuming { [EXECUTE e] : match_name(e.objname, "login") { user = e.ruid; pid = e.pid; } }
state s2 { }
transition readrhosts (s2 -> s3) consuming { [READ r] : (r.pid == pid) && (r.inode ==inode) }
state s3 {string username;userid2name(user,username);log("rhosts attack by %s", username);}
}
ITS-9.1 33
..... und zahlreiche weitere Intrusion-Detection-Systeme,
auch kommerziell oder Open Source, insbesondere für
Network Intrusion Detection, z.B.
Snort (http://www.snort.org):
analysiert übers Netz eintreffende Datenpakete(packet sniffing, ähnlich tcpdump u.a.)
Vorteil: Paketinhalt detailliert analysierbar
Nachteil: zustandslos