Verbessern des Datenverständnisses
Rocco Gagliardi
Ein Mac ist ein Mac und er funktioniert. Vor einem Macbook Retina werden Sie sich wohl fühlen, so lange sie sich mit OS X zurecht finden.
Was passiert aber hinter dem wunderschönen Sonnenuntergang in Yosemite? Werden die Aktionen eines Users oder einer Applikation geloggt? Kann OS X in einer zertifizierten Umgebung gebraucht werden, wenn ein komplettes Audit notwendig ist?
Unter OS X besteht die Möglichkeit mit Console.app
einen Blick auf die standardmässig generierten Logfiles des Systems zu werfen. Wenn Sie Superuserberechtigungen haben, dann können Sie die geschützten Logfiles des Systems ansehen und somit authd
wie auch andere spezifische Logs in der Apple System Log Facility (ASL) einsehen.
Aber das ist nur das Logging und das reicht für eine zertifizierte Umgebung einfach nicht aus. Denn in solchen Umgebungen ist auditing zwingend notwendig.
Auditing einer Infrastruktur, andererseits, rapportiert jede Instanz eines Low-Level-Events, egal von welchem Programm ausgelöst. – Security Log, Part 1: Experience with Log Management – What is a log
Security Auditing beinhaltet das Erkennen, das Aufzeichnen, das Abspeichern und die Analyse von Informationen im Zusammenhang mit sicherheitsrelevanten Aktivitäten. Der daraus resultierende Auditreport kann Aufschluss darüber geben, welche sicherheitsrelevanten Aktivitäten wo stattgefunden haben und welcher User dafür verantwortlich ist – Common Criteria, Class Family Audit: Security Audit
Mit OS X Panther (10.03.6, 2004) ist Apple dem Audit-Problem begegnet, indem sie sowohl die Server- wie auch die Desktop-Version an NIAP überreicht haben um die Common Criteria Certification zu erhalten. Common Criteria ist ein international anerkanntes Set von Security Standards und stellt eine klare und verlässliche Evaluation der Sicherheitsmöglichkeiten eines IT-Produkts dar. Sicherheitsbewusste Konsumenten beachten die Common Criteria Certification als einen entscheidenden Faktor beim Kauf.
Im Jahre 2004 hat Apple die neue Software openBSM veröffentlicht. Das Programm wurde von McAfee Research, der Security-Research-Abteilung McAfees, geschrieben. Zudem waren Wayne Salamon, Robert Watson und SPARTA Inc. Involviert. Das Basic Security Module (BSM) Interface und das Audit Event Stream Format wurden von Sun Microsystems definiert. Um alle Involvierten zu sehen, können Sie die komplette Liste ansehen.
Gleichzeitig wurde der Common Criteria Configuration and Administration Guide veröffentlicht, der Security Administratoren helfen sollte, das OS richtig zu konfigurieren.
Etwas ältere Leser werden BSM kennen. Es ist nicht wirklich neu. Es ist das Solaris Basic Security Module, ein von Sun Microsystems geschaffenes Tool, das die DoD _C2-Level_-Zertifizierung von Solaris 2.5.1 sicherstellt. Das war anno 1996. Das Tool kann jeden sys
-Call zurückverfolgen indem die Ausführung jeden laufenden Prozesses abgefangen wird, die Informationen in einer Binary gespeichert und bei Bedarf rapportiert wird.
Die Hauptkonfigurationsdatei für Auditing ist /etc/security/audit_control
. In dieser Datei setzen wir die Classes der Events, für die wir Audit-Records erstellen wollen und wo wir diese abgespeichert haben wollen.
Die standardmässige Konfiguration unter Yosemite /etc/security/audit_control
lautet:
# # $P4: //depot/projects/trustedbsd/openbsm/etc/audit_control#8 $ # dir:/var/audit flags:lo,aa minfree:5 naflags:lo,aa policy:cnt,argv filesz:2M expire-after:10M superuser-set-sflags-mask:has_authenticated,has_console_access superuser-clear-sflags-mask:has_authenticated,has_console_access member-set-sflags-mask: member-clear-sflags-mask:has_authenticated
Einige Parameter sind selbsterklärend. Für eine komplette Liste verweise ich Sie an die audit_control(5)-Seite. Die folgenden Parameter sind interessant:
Parameter | Beschreibung |
---|---|
flags | Spezifiziert, welche Audit-Event-Klassen auditiert für alle User auditiert werden. |
naflags | Beinhaltet die Audit Flags, die definieren, welche Event-Classes auditiert werden und was passiert, wenn eine Action nicht einem spezifischen User zugeordnet werden kann. |
policy | Eine Liste globaler Audit-Policy-Flags, die verschiedene Verhaltensweisen spezifizieren, zum Beispiel Fail Stop, Auditing von Pfaden und Argumenten, etc. |
Was auditiert werden kann wird mit flags
festgesetzt. Die folgende Tabelle listet auf, welche Event classes auditiert werden können.
Code | Class | Beschreibung der Class |
---|---|---|
0×00000000 | no | invalid class |
0×00000001 | fr | file read |
0×00000002 | fw | file write |
0×00000004 | fa | file attribute access |
0×00000008 | fm | file attribute modify |
0×00000010 | fc | file create |
0×00000020 | fd | file delete |
0×00000040 | cl | file close |
0×00000080 | pc | process |
0×00000100 | nt | network |
0×00000200 | ip | ipc |
0×00000400 | na | non attributable |
0×00000800 | ad | administrative |
0×00001000 | lo | login_logout |
0×00002000 | aa | authentication and authorization |
0×00004000 | ap | application |
0×20000000 | io | ioctl |
0×40000000 | ex | exec |
0×80000000 | ot | miscellaneous |
0xffffffff | all | all flags set |
Die Audit Policy Flags spezifizieren wie das System auf einige Events reagiert soll oder welche Details geloggt werden sollen.
Policy Flag | Beschreibung |
---|---|
cnt | Erlaubt es Prozessen, weiter zu laufen auch wenn Events nicht einem Audit unterzogen werden. Aktuell ist das not recoverable |
ahlt | Fail Stop_-Befehl für das System wenn ein Event keinem Audit unterzogen werden kann. Das beinhaltet, dass noch offene Aufzeichnungen auf eine Disk gespült werden und das Operating System dann angehalten wird. |
argv | Audit command line arguments für execve(2). |
arge | Audit environmental variable arguments für execve(2). |
seq | Fügt den generierten Audit Records ein _unique audit sequence number token hinzu. (Nicht in FreeBSD und Darwin enthalten) |
group | Fügt den generierten Audit Records weitere Gruppen hinzu. Das geht nicht in FreeBSD und Darwin, wo weitere Gruppen nie in Records inkludiert werden. |
trail | Fügt den Audit Records ein Trailer Token hinzu. Das geht nicht in FreeBSD und Darwin, wo Trailer Tokens immer inkludiert sind |
path | Beinhaltet sekundäre Dateipfade in den Audit Records. Das geht nicht in FreeBSD und Darwin, wo weitere Gruppen nie in Records inkludiert werden. |
zonename | Fügt den Records ein Zone ID Token hinzu. Diese Funktion ist nicht in FreeBSD und Darwin implementiert. FreeBSD Audit Records inkludiert aktuell weder jail ID noch Name. |
perzone | Aktiviert Auditing für jede lokale Zone. Dies ist nicht in FreeBSD oder Darwin implementiert. Dort werden Audit Records aller Jails gesammelt und in einem global trail platziert. In einem Jail werden nur limitierte Audit Controls zugelassen. |
Alle! Das ist die Standardantwort. Wenn Sie das tun, dann werden Sie jede Information, die das System generiert, sammeln. Aber diese Sammlung hat einen grossen Einfluss auf das System selbst:
Auf einem Server-System muss die Policy so angepasst werden, damit Sicherheit und Availability des Systems gewahrt werden.
Minimal empfohlene Classes: lo
, ad
, na
. Das beinhaltet:
lo
)ad
), unter anderem filesystem mounts und Usergenerierungna
)Die TSF soll alle Actions auflisten, sobald diese eine potentielle Verletzung der Sicherheitsrichtlinien erkennen. Das openBSM-Paket hat ein Tool namens auditfilterd
, das aber, als Standard, weder kompiliert noch auf OS X installiert ist, da es nie den Status experimental verlassen hat. Dennoch ist der Source Code erhältlich und, mit einigen Fixes, sogar auf OS X lauffähig sein. Damit kann mit einem Live Log herumgespielt werden. Zudem kann auch /dev/auditpipe
angebunden werden.
/etc/security/audit_control
beinhaltet Einstellungen, die zur Generierung der Audit Records notwendig sind. In einigen Fällen, in denen Feineinstellungen nötig sind, kann die Datei /etc/security/audit_user
spezifische Audit-Einstellungen für spezifische User enthalten. Das Verhalten des Systems kann spezifiziert werden: Wenn nötig kann das System im Falle von Audit-Problemen angehalten werden./dev/auditpipe
, die den Berechtigungen einer Device Node untergeordnet sind. Sie bieten eine Art Wegkreuzung für den Audit Event Stream. Da der Mechanismus klonbar ist kann mehr als eine Instanz dessen aufgerufen werden. Jede Instanz wird unabhängig von den anderen Zugriff auf alle Aufzeichnungen erlauben.Starten Sie praudit
in /dev/auditpipe
um das Audit Log in Echtzeit zu dekodieren.
rcc@mpb~$ sudo praudit /dev/auditpipe header,88,11,SecSrvr AuthEngine,0,Tue Dec 16 11:20:06 2014, + 119 msec subject,-1,root,wheel,root,wheel,40,100000,41,0.0.0.0 text,begin evaluation return,success,0 trailer,88 ...
Lassen Sie auditreduce
laufen um die Records zu filtern. Die Resultate sind immer noch in Binary und müssen mit praudit
konvertiert werden.
rcc@mpb~$ sudo auditreduce -cfd /dev/auditpipe T:I#O/Users/rcc/Library/Application Support
/etc/security/audit_event
ausgegeben. UIDs
und GIDs
werden expandiert und benannt. Datums- und Zeitangaben sind in von Menschen lesbarer Form dargestellt.Starten Sie praudit
um den Binary Record in von Menschen lesbarer Form darzustellen.
rcc@mpb~$ sudo auditreduce -cfd /dev/auditpipe | praudit header,311,11,rename(2),0,Tue Dec 16 11:26:48 2014, + 572 msec path,/Users/rcc/Library/Application Support/TextMate/Session/.dat29f8.0b3 path,/Users/rcc/Library/Application Support/TextMate/Session/.dat29f8.0b3 attribute,100644,rcc,staff,16777220,10648235,0 path,/Users/rcc/Library/Application Support/TextMate/Session/Info.plist subject,rcc,rcc,staff,rcc,staff,10744,100005,50331650,0.0.0.0 return,success,0 trailer,311
Auditing ist aus zwei Gründen wichtig:
Es gibt weitere Felder, in denen Auditing ebenfalls hilft. Da wäre unter anderem die Analyse der Security Policies in Bezug auf korrekte Implementation oder Debug Auditing, das wichtige Auskunft über unser Security-Modell geben kann.
openBSM bietet ein Auditingsystem an, das Teil des Core OS X ist.
Die Security Event Auditing Facility ist in der Lage, detaillierte Logs der Systemaktivität zu generieren. In einem sehr beschäftigten System können Trail-File-Daten sehr gross werden, wenn sie sehr detailliert konfiguriert werden. Das kann zu Datenmengen von mehreren Gigabyte pro Woche führen. Administratoren sollten die Anforderungen an den Speicherbedarf von grossen Audit-Konfigurationen stets beachten.
Während der Recherche zu diesem Artikel ist ein LoL Boundary Check aufgetaucht: openbsm/sys/bsm/audit_kevents.h
/* * The reserved event numbers for kernel events are 1...2047 and 43001..44900. */ #define AUE_IS_A_KEVENT(e) (((e) > 0 && (e) < 2048) || \ ((e) > 43000 && (e) < 45000))
Das Problem liegt entgegen den Angaben der Datei openbsm/etc/audit_event
im Kommentar, nicht im Code.
# Allocation of BSM event identifier ranges: # # 0 Reserved and invalid # 1 - 2047 Reserved for Solaris kernel events # 2048 - 5999 Reserved and unallocated # 6000 - 9999 Reserved for Solaris user events # 10000 - 32767 Reserved and unallocated # 32768 - 65535 Available for third party applications # # Of the third party range, OpenBSM allocates from the following ranges: # # 43000 - 44999 Reserved for OpenBSM kernel events # 45000 - 46999 Reserved for OpenBSM application events
Unsere Spezialisten kontaktieren Sie gern!
Rocco Gagliardi
Rocco Gagliardi
Rocco Gagliardi
Rocco Gagliardi
Unsere Spezialisten kontaktieren Sie gern!