doc/de_DE.ISO8859-1/books/handbook/audit/chapter.sgml
2012-09-14 17:47:48 +00:00

840 lines
32 KiB
XML

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!--
The FreeBSD Documentation Project
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/audit/chapter.sgml,v 1.14 2012/02/16 20:28:26 bcr Exp $
basiert auf: 1.36
-->
<!-- Need more documentation on praudit, auditreduce, etc. Plus more info
on the triggers from the kernel (log rotation, out of space, etc).
And the /dev/audit special file if we choose to support that. Could use
some coverage of integrating MAC with Event auditing and perhaps discussion
on how some companies or organizations handle auditing and auditing
requirements. -->
<chapter id="audit">
<chapterinfo>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Geschrieben von </contrib>
</author>
<author>
<firstname>Robert</firstname>
<surname>Watson</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Daniel</firstname>
<surname>Seuffert</surname>
<contrib>Übersetzt von </contrib>
</author>
</authorgroup>
</chapterinfo>
<title>Security Event Auditing</title>
<sect1 id="audit-synopsis">
<title>Einleitung</title>
<indexterm><primary>AUDIT</primary></indexterm>
<indexterm>
<primary>Security Event Auditing</primary>
<see>MAC</see>
</indexterm>
<para>Das &os;-Betriebssystem unterstützt
ein feingranuliertes Sicherheits-Auditing.
Ereignis-Auditing erlaubt die
zuverlässige, feingranulierte und konfigurierbare
Aufzeichnung einer Vielzahl von sicherheitsrelevanten
Systemereignissen einschliesslich Benutzereingaben,
Konfigurationsänderungen sowie Datei- und
Netzwerkzugriffen. Diese Log-Datensätze können
unschätzbar wertvoll sein für direkte
Systemüberwachung, Einbruchserkennung und
Post-Mortem-Analyse. &os; implementiert &sun;s öffentlich
zugängliche <acronym>BSM</acronym> API und Dateiformat. Die
&os;-Implementierung kann mit den Audit-Implementierungen von
&sun; &solaris; und &apple; &macos; X zusammenarbeiten.</para>
<para>Dieses Kapitel konzentriert sich auf die Installation
und Konfiguration des Ereignis-Auditings. Es erklärt
Audit-Richtlinien und stellt ein Beispiel einer
Audit-Konfiguration vor.</para>
<para>Nach dem Lesen dieses Kapitels werden Sie
Folgendes wissen:</para>
<itemizedlist>
<listitem>
<para>Was Ereignis-Auditing ist und wie es arbeitet.</para>
</listitem>
<listitem>
<para>Wie man Ereignis-Auditing in &os; für Benutzer
und Prozesse konfiguriert.</para>
</listitem>
<listitem>
<para>Wie man den Audit-Pfad mittels Audit-Reduktion und
Revisionswerkzeugen überprüft.</para>
</listitem>
</itemizedlist>
<para>Vor dem Lesen dieses Kapitels sollten Sie:</para>
<itemizedlist>
<listitem>
<para>Sowohl &unix; als auch &os;-Basismechanismen
beherrschen (<xref linkend="basics"/>).</para>
</listitem>
<listitem>
<para>Mit den grundlegenden Mechanismen der
Kernel-Konfiguration und -Kompilierung vertraut sein (<xref
linkend="kernelconfig"/>).</para>
</listitem>
<listitem>
<para>Mit den Maßnahmen zur Sicherung von &os;
vertraut sein (<xref linkend="security"/>).</para>
</listitem>
</itemizedlist>
<warning>
<para>Die Audit-Funktionalität in &os; besitzt die
Einschränkungen, dass zur Zeit nicht alle
sicherheitsrelevanten System-Ereignisse auditierbar sind und
dass einige Anmelde-Mechanismen, wie z.B. X11-basierte
Bildschirm-Manager und Daemonen von Drittanbietern, das
Auditing für Benutzeranmeldungen nicht korrekt
konfigurieren.</para>
<para>Das Sicherheits-Auditing ist in der Lage, sehr
detaillierte Log-Dateien von Systemaktivitäten zu
erzeugen. Auf einem ausgelasteten System kann die Pfad-Datei
sehr groß werden, wenn sie für hohe Auflösung
konfiguriert ist, und im Extremfall pro Woche um mehrere
Gigabyte anwachsen. Administratoren sollten daher den
benötigten Plattenplatz in Verbindung mit umfangreichen
Audit-Konfigurationen berücksichtigen. So kann es
wünschenswert sein, ein eigenes
Dateisystem für <filename>/var/audit</filename>
einzusetzen, damit andere Dateisysteme nicht betoffen sind,
wenn das Dateisystem des Audit voll läuft.</para>
</warning>
</sect1>
<sect1 id="audit-inline-glossary">
<title>Schlüsselbegriffe</title>
<para>Vor dem Lesen dieses Kapitels müssen einige
Audit-bezogene Schlüsselbegriffe erläutert
werden:</para>
<itemizedlist>
<listitem>
<para><emphasis>event</emphasis>: Ein auditierbares Ereignis
ist ein Ereignis, das mit dem Audit-Subsystem
aufgezeichnet werden kann. Beispiele für
sicherheitsrelevante Systemereignisse sind etwa das Anlegen
von Dateien, das Erstellen einer Netzwerkverbindung oder
eine Benutzeranmeldung. Ereignisse sind entweder
<quote>attributierbar</quote>, können also zu einen
authentifizierten Benutzer zurückverfolgt werden, oder
sind <quote>nicht-attributierbar</quote>, falls dies nicht
möglich ist. Nicht-attributierbare Ereignisse erfolgen
daher vor der Authentifizierung im Anmeldeprozess
(beispielsweise die Eingabe eines falschen Passworts).</para>
</listitem>
<listitem>
<para><emphasis>class</emphasis>: Ereignisklassen sind
benannte Zusammenstellungen von zusammengehörenden
Ereignissen und werden in Auswahl-Ausdrücken benutzt.
Häufig genutzte Klassen von Ereignissen schließen
<quote>file creation</quote> (fc, Anlegen von Dateien),
<quote>exec</quote> (ex, Ausführung) und
<quote>login_logout</quote> (lo, Anmeldung-Abmeldung)
ein.</para>
</listitem>
<listitem>
<para><emphasis>record</emphasis>: Ein Datensatz ist ein
Audit-Logeintrag, welcher ein Sicherheitsereignis
enthält. Jeder Datensatz enthält einen
Ereignistyp, Informationen über den Gegenstand
(Benutzer), welcher die Aktion durchführt, Datums- und
Zeitinformationen, Informationen über jedes Objekt oder
Argument sowie den Zustand hinsichtlich Erfolg oder
Scheitern der Operation.</para>
</listitem>
<listitem>
<para><emphasis>trail</emphasis>: Ein Audit-Pfad (audit
trail) oder eine Log-Datei besteht aus einer Reihe von
Audit-Datensätzen, die Sicherheitsereignisse
beschreiben. Normalerweise sind die Pfade in grober
zeitlicher Reihenfolge bezüglich des Zeitpunktes,
an welchem ein Ereignis beendet wurde. Nur authorisierte
Prozesse dürfen Datensätze zum Audit-Pfad
hinzufügen.</para>
</listitem>
<listitem>
<para><emphasis>selection expression</emphasis>: Ein
Auswahlausdruck ist eine Zeichenkette, welche eine Liste von
Präfixen und Audit-Ereignisklassennamen enthält,
um Ereignisse abzugleichen.</para>
</listitem>
<listitem>
<para><emphasis>preselection</emphasis>: Die Vorauswahl ist
der Prozess, durch den das System erkennt, welche Ereignisse
von Interesse für den Administrator sind, um die
Erzeugung von Datensätze zu verhindern, welche nicht
von Belang sind. Die Konfiguration der Vorauswahl benutzt
eine Reihe von Auswahl-Ausdrücken, um zu erkennen,
welche Klassen von Ereignissen für welche Benutzer
aufgezeichnet werden sollen sowie globale Einstellungen,
welche sowohl auf authorisierte
als auch unauthorisierte Prozesse angewendet werden.</para>
</listitem>
<listitem>
<para><emphasis>reduction</emphasis>: Die Reduzierung ist
der Prozess, durch den Datensätze von bestehenden
Audit-Pfaden ausgewählt werden für Speicherung,
Ausdruck oder Analyse. Ebenso der Prozess, durch den
unerwünschte Datensätze aus dem Audit-Pfad
entfernt werden. Mittels Reduzierung können
Administratoren Richtlinien für die Speicherung von
Audit-Daten vorgeben. Zum Beispiel können
ausführliche Audit-Pfade für einen Monat
gespeichert werden, um danach den Pfad für
archivarische Zwecke auf die Anmeldeinformationen
zu reduzieren.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="audit-install">
<title>Installation der Audit-Unterstützung</title>
<para>Die Unterstützung des Ereignis-Auditings für den
Benutzerbereich wird bereits als Teil des Basissystems installiert.
Die Audit-Unterstützung ist bereits im &os;-Standardkernel
enthalten, jedoch müssen Sie die folgende Zeile explizit in
Ihre Kernelkonfigurationsdatei aufnehmen und den Kernel neu bauen:</para>
<programlisting>options AUDIT</programlisting>
<para>Bauen und installieren Sie den Kernel wie in
<xref linkend="kernelconfig"/> beschrieben ist.</para>
<para>Nachdem der Kernel mit Audit-Unterstützung
gebaut und installiert ist und das System neu gestartet wurde,
aktivieren Sie den Audit-Daemon
durch das Einfügen der folgenden Zeile in die Datei
&man.rc.conf.5;:</para>
<programlisting>auditd_enable="YES"</programlisting>
<para>Die Audit-Unterstützung kann nun durch einen
Neustart des Systems oder durch das manuelle Starten
des Audit-Daemon aktiviert werden:</para>
<programlisting>/etc/rc.d/auditd start</programlisting>
</sect1>
<sect1 id="audit-config">
<title>Die Konfiguration des Audit</title>
<para>Alle Konfigurationsdateien für das Sicherheits-Audit
finden sich unter
<filename class="directory">/etc/security</filename>.
Die folgenden Dateien müssen vorhanden sein, bevor
der Audit-Daemon gestartet wird:</para>
<itemizedlist>
<listitem>
<para><filename>audit_class</filename>&nbsp;&ndash;&nbsp;Enthält
die Definitionen der Audit-Klassen.</para>
</listitem>
<listitem>
<para><filename>audit_control</filename>&nbsp;&ndash;&nbsp;Steuert
Teile des Audit-Subsystems wie Audit-Klassen, minimaler
Plattenplatz auf dem Audit-Log-Datenträger, maximale
Größe des Audit-Pfades usw.</para>
</listitem>
<listitem>
<para><filename>audit_event</filename>&nbsp;&ndash;&nbsp;Wörtliche
Namen und Beschreibungen von System-Audit-Ereignissen sowie
eine Liste, welche Klassen welches Ereignis
aufzeichnen.</para>
</listitem>
<listitem>
<para><filename>audit_user</filename>&nbsp;&ndash;&nbsp;Benutzerspezifische
Audit-Erfordernisse, welche mit den globalen Vorgaben bei
der Anmeldung kombiniert werden.</para>
</listitem>
<listitem>
<para><filename>audit_warn</filename>&nbsp;&ndash;&nbsp;Ein
anpassbares Shell-Skript, welches von
<application>auditd</application> benutzt wird, um
Warnhinweise in aussergewöhnlichen Situationen zu
erzeugen, z.B. wenn der Platz für die
Audit-Datensätze knapp wird oder wenn die Datei des
Audit-Pfades rotiert wurde.</para>
</listitem>
</itemizedlist>
<warning>
<para>Audit-Konfigurationsdateien sollten vorsichtig gewartet und
bearbeitet werden, da Fehler in der Konfiguration zu falscher
Aufzeichnung von Ereignissen führen könnten.</para>
</warning>
<sect2>
<title>Ereignis-Auswahlausdrücke</title>
<para>Auswahlausdrücke werden an einigen Stellen
der Audit-Konfiguration benützt, um zu bestimmen,
welche Ereignisse auditiert werden sollen. Die Ausdrücke
enthalten eine Liste der Ereignisklassen, welche verglichen
werden sollen, jede mit einem Präfix, welches anzeigt,
ob verglichene Datensätze akzeptiert oder ignoriert
werden sollen und optional, um anzuzeigen, ob der Eintrag
beabsichtigt, erfolgreiche oder fehlgeschlagene Operationen
zu vergleichen. Auswahlausdrücke werden von links nach
rechts ausgewertet und zwei Ausdrücke werden durch
Aneinanderhängen miteinander kombiniert.</para>
<para>Die folgende Liste enthält die
Standard-Ereignisklassen für das Audit und ist in
<filename>audit_class</filename> festgehalten:</para>
<itemizedlist>
<listitem>
<para><literal>all</literal>&nbsp;&ndash;&nbsp;<emphasis>all</emphasis>&nbsp;&ndash;&nbsp;Vergleiche
alle Ereignisklassen.</para>
</listitem>
<listitem>
<para><literal>ad</literal>&nbsp;&ndash;&nbsp;<emphasis>administrative</emphasis>&nbsp;&ndash;&nbsp;Administrative
Aktionen ausgeführt auf dem System als Ganzes.</para>
</listitem>
<listitem>
<para><literal>ap</literal>&nbsp;&ndash;&nbsp;<emphasis>application</emphasis>&nbsp;&ndash;&nbsp;Aktionen
definiert für Applikationen.</para>
</listitem>
<listitem>
<para><literal>cl</literal>&nbsp;&ndash;&nbsp;<emphasis>file
close</emphasis>&nbsp;&ndash;&nbsp;Audit-Aufrufe für
den Systemaufruf <function>close</function>.</para>
</listitem>
<listitem>
<para><literal>ex</literal>&nbsp;&ndash;&nbsp;<emphasis>exec</emphasis>&nbsp;&ndash;&nbsp;Ausführung
des Audit-Programms. Auditierung von
Befehlszeilen-Argumenten und Umgebungsvariablen wird
gesteuert durch &man.audit.control.5; mittels der
<literal>argv</literal> und
<literal>envv</literal>-Parametergemäss der
<literal>Richtlinien</literal>-Einstellungen.</para>
</listitem>
<listitem>
<para><literal>fa</literal>&nbsp;&ndash;&nbsp;<emphasis>file
attribute access</emphasis>&nbsp;&ndash;&nbsp;Auditierung
des Zugriffs auf Objektattribute wie &man.stat.1;,
&man.pathconf.2; und ähnlichen Ereignissen.</para>
</listitem>
<listitem>
<para><literal>fc</literal>&nbsp;&ndash;&nbsp;<emphasis>file
create</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse,
bei denen eine Datei als Ergebnis angelegt wird.</para>
</listitem>
<listitem>
<para><literal>fd</literal>&nbsp;&ndash;&nbsp;<emphasis>file
delete</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse,
bei denen Dateilöschungen vorkommen.</para>
</listitem>
<listitem>
<para><literal>fm</literal>&nbsp;&ndash;&nbsp;<emphasis>file
attribute modify</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse,
bei welchen Dateiattribute geändert werden, wie
&man.chown.8;, &man.chflags.1;, &man.flock.2; etc.</para>
</listitem>
<listitem>
<para><literal>fr</literal>&nbsp;&ndash;&nbsp;<emphasis>file
read</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse, bei
denen Daten gelesen oder Dateien zum lesen geöffnet
werden usw.</para>
</listitem>
<listitem>
<para><literal>fw</literal>&nbsp;&ndash;&nbsp;<emphasis>file write</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse,
bei welchen Daten geschrieben oder Dateien geschrieben
oder verändert werden usw.</para>
</listitem>
<listitem>
<para><literal>io</literal>&nbsp;&ndash;&nbsp;<emphasis>ioctl</emphasis>&nbsp;&ndash;&nbsp;Nutzung
des Systemaufrufes &man.ioctl.2; durch Audit.</para>
</listitem>
<listitem>
<para><literal>ip</literal>&nbsp;&ndash;&nbsp;<emphasis>ipc</emphasis>&nbsp;&ndash;&nbsp;Auditierung
verschiedener Formen von Inter-Prozess-Kommunikation
einschliesslich POSIX-Pipes und System V
<acronym>IPC</acronym>-Operationen.</para>
</listitem>
<listitem>
<para><literal>lo</literal>&nbsp;&ndash;&nbsp;<emphasis>login_logout</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse
betreffend &man.login.1; und &man.logout.1;, welche auf
dem System auftreten.</para>
</listitem>
<listitem>
<para><literal>na</literal>&nbsp;&ndash;&nbsp;<emphasis>non
attributable</emphasis>&nbsp;&ndash;&nbsp;Auditierung
nicht-attributierbarer Ereignisse (Ereignisse, die nicht auf
einen bestimmten Benutzer zurückgeführt werden
können).</para>
</listitem>
<listitem>
<para><literal>no</literal>&nbsp;&ndash;&nbsp;<emphasis>invalid
class</emphasis>&nbsp;&ndash;&nbsp;Kein Abgleich von
Audit-Ereignissen.</para>
</listitem>
<listitem>
<para><literal>nt</literal>&nbsp;&ndash;&nbsp;<emphasis>network</emphasis>&nbsp;&ndash;&nbsp;Audit-Ereignisse
in Zusammenhang mit Netzwerkaktivitäten wie
z.B. &man.connect.2; und &man.accept.2;.</para>
</listitem>
<listitem>
<para><literal>ot</literal>&nbsp;&ndash;&nbsp;<emphasis>other</emphasis>&nbsp;&ndash;&nbsp;Auditierung
verschiedener Ereignisse.</para>
</listitem>
<listitem>
<para><literal>pc</literal>&nbsp;&ndash;&nbsp;<emphasis>process</emphasis>&nbsp;&ndash;&nbsp;Auditierung
von Prozess-Operationen wie &man.exec.3; und
&man.exit.3;.</para>
</listitem>
</itemizedlist>
<para>Diese Ereignisklassen können angepasst werden durch
Modifizierung der Konfigurationsdateien
<filename>audit_class</filename> und
<filename>audit_event</filename>.</para>
<para>Jede Audit-Klasse in dieser Liste ist kombiniert mit
einem Präfix, welches anzeigt, ob
erfolgreiche/gescheiterte Operationen abgebildet werden, und
ob der Eintrag den Abgleich hinzufügt oder entfernt
für die Klasse und den Typ.</para>
<itemizedlist>
<listitem>
<para>(none) Kein Präfix, sowohl erfolgreiche als
auch gescheiterte Vorkommen eines Ereignisses werden
auditiert.</para>
</listitem>
<listitem>
<para><literal>+</literal> Auditiere nur erfolgreiche
Ereignisse in dieser Klasse.</para>
</listitem>
<listitem>
<para><literal>-</literal> Auditiere nur gescheiterte
Operationen in dieser Klasse.</para>
</listitem>
<listitem>
<para><literal>^</literal> Auditiere weder erfolgreiche
noch gescheiterte Ereignisse in dieser Klasse.</para>
</listitem>
<listitem>
<para><literal>^+</literal> Auditiere keine erfolgreichen
Ereignisse in dieser Klasse.</para>
</listitem>
<listitem>
<para><literal>^-</literal> Auditiere keine gescheiterten
Ereignisse in dieser Klasse.</para>
</listitem>
</itemizedlist>
<para>Das folgende Beispiel einer Auswahl-Zeichenkette
wählt erfolgreiche und gescheiterte
Anmelde/Abmelde-Ereignisse aus, aber nur erfolgreich beendete
Ausführungs-Ereignisse:</para>
<programlisting>lo,+ex</programlisting>
</sect2>
<sect2>
<title>Konfigurationsdateien</title>
<para>In den meisten Fällen müssen Administratoren
nur zwei Dateien ändern, wenn sie das Audit-System
konfigurieren: <filename>audit_control</filename> und
<filename>audit_user</filename>. Die erste Datei steuert
systemweite Audit-Eigenschaften und -Richtlinien; die zweite
Datei kann für die Feinanpassung der Auditierung von
Benutzern verwendet werden.</para>
<sect3 id="audit-auditcontrol">
<title>Die <filename>audit_control</filename>-Datei</title>
<para>Die <filename>audit_control</filename>-Datei legt eine
Anzahl Vorgabewerte fest. Beim Betrachten des Inhaltes der
Datei sehen wir Folgendes:</para>
<programlisting>dir:/var/audit
flags:lo
minfree:20
naflags:lo
policy:cnt
filesz:0</programlisting>
<para>Die Option <option>dir</option> wird genutzt, um eines
oder mehrere Verzeichnisse festzulegen, in welchen
Audit-Protokolle gespeichert werden. Gibt es mehrere
Verzeichniseinträge, werden diese in der
angegebenen Reihenfolge genutzt, bis sie jeweils
gefüllt sind. Es ist üblich, Audit so zu
konfigurieren, dass die Audit-Logs auf einem dedizierten
Dateisystem abgelegt werden, um Wechselwirkungen zwischen
dem Audit-Subsystem und anderen Subsystemen zu verhindern,
falls das Dateisystem voll läuft.</para>
<para>Das <option>flags</option>-Feld legt die systemweite
Standard-Vorauswahl-Maske für attributierbare (direkt
einem Benutzer zuordenbare) Ereignisse fest. Im
obigen Beispiel werden alle gescheiterten und erfolgreichen
Anmelde- und Abmelde-Ereignisse für alle Benutzer
aufgezeichnet.</para>
<para>Die Option <option>minfree</option> definiert den
minimalen Prozentsatz an freiem Plattenplatz für das
Dateisystem, in welchem der Audit-Pfad abgespeichert wird.
Wenn diese Schwelle überschritten ist, wird ein
Warnhinweis erzeugt. Das obige Beispiel legt den minimalen
freien Platz auf zwanzig Prozent fest.</para>
<para>Die <option>naflags</option>-Option bestimmt diejenigen
Audit-Klassen, für die nicht-attributierbare Ereignisse
aufgezeichnet werden sollen (beispielsweise Anmeldeprozesse
und System-Daemonen.</para>
<para>Die Option <option>policy</option> legt eine durch Kommata
getrennte Liste von policy-Flags fest, welche verschiedene
Aspekte des Audit-Verhaltens steuern. Der vorgegebene Flag
<literal>cnt</literal> zeigt an, dass das System trotz eines
Audit-Fehlers weiterlaufen soll (dieses Flag wird dringend
angeraten). Ein anderes, häufig genutztes Flag ist
<literal>argv</literal>, welches dazu führt, dass
Befehlszeilen-Argumente für den Systemauruf
&man.execve.2; als Teil der Befehlsausführung
aufgezeichnet werden.</para>
<para>Die <option>filesz</option>-Option spezifiziert die
maximale Größe in Bytes, welche eine
Audit-Pfad-Datei wachsen darf, bevor sie automatisch beendet
und rotiert wird. Die Standardvorgabe <literal>0</literal>
setzt die automatische Log-Rotation ausser Kraft. Falls die
angeforderte Dateigröße größer Null
und gleichzeitig unterhalb des Minimums von 512K ist, dann
wird die Angabe verworfen und ein Log-Hinweis wird
erzeugt.</para>
</sect3>
<sect3 id="audit-audituser">
<title>Die Datei <filename>audit_user</filename></title>
<para>Die <filename>audit_user</filename>-Datei erlaubt es dem
Administrator, weitere Audit-Erfordernisse für bestimmte
Benutzer festzulegen. Jede Zeile konfiguriert das Auditing
für einen Benutzer über zwei Felder: Das erste Feld
ist <literal>alwaysaudit</literal>, welches eine Ansammlung
von Ereignissen vorgibt, welche immer für diesen Benutzer
aufgezeichnet werden. Das zweite Feld
<literal>neveraudit</literal> legt eine Menge an Ereignissen
fest, die niemals für diesen Benutzer auditiert werden
sollen.</para>
<para>Das folgende Beispiel einer
<filename>audit_user</filename>-Datei zeichnet
Anmelde/Abmelde-Ereignisse, erfolgreiche
Befehlsausführungen für den Benutzer
<username>root</username>, Anlegen von Dateien und
erfolgreiche Befehlsausführungen für den Benutzer
<username>www</username> auf. Falls das Beispiel zusammen
mit der vorstehend als Beispiel gezeigten Datei
<filename>audit_control</filename> benutzt wird, dann ist
der Eintrag <literal>lo</literal> für Benutzer
<username>root</username> überflüssig und
Anmelde/Abmelde-Ereignisse werden für den Benutzer
<username>www</username> ebenfalls aufgezeichnet.</para>
<programlisting>root:lo,+ex:no
www:fc,+ex:no</programlisting>
</sect3>
</sect2>
</sect1>
<sect1 id="audit-administration">
<title>Administration des Audit-Subsystems</title>
<sect2>
<title>Audit-Pfade betrachten</title>
<para>Audit-Pfade werden im binären BSM-Format
gespeichert, daher benötigen Sie spezielle Werkzeuge, um
derartige Dateien zu ändern oder Sie in Textdateien zu
konvertieren. Der
Befehl &man.praudit.1; wandelt alle Pfad-Dateien in ein
einfaches Textformat um. Der Befehl &man.auditreduce.1; kann
genutzt werden, um die Pfad-Dateien für Analyse,
Ausdruck, Archivierung oder andere Zwecke zu reduzieren.
<command>auditreduce</command> unterstützt eine Reihe von
Auswahl-Parametern einschliesslich Ereignistyp,
Ereignisklasse, Benutzer, Datum oder Uhrzeit des Ereignisses und
den Dateipfad oder das Objekt, mit dem gearbeitet
wurde.</para>
<para>Das Dienstprogramm <command>praudit</command> schreibt
zum Beispiel den gesamten Inhalt einer angegebenen
Audit-Protokolldatei in eine simple Textdatei:</para>
<screen>&prompt.root; <userinput>praudit /var/audit/AUDITFILE</userinput></screen>
<para><filename><replaceable>AUDITFILE</replaceable></filename>
ist hier die zu schreibende Protokolldatei.</para>
<para>Audit-Pfade bestehen aus einer Reihe von Datensätzen,
die wiederum aus Kürzeln (token) gebildet werden, die von
<command>praudit</command> fortlaufend zeilenweise ausgegeben
werden. Jedes Kürzel ist von einem bestimmten Typ, z.B.
enthält <literal>header</literal> einen
audit-Datensatz-Header oder <literal>path</literal>
enthält einen Dateipfad von einer Suche. Hier ein
Beispiel eines <literal>execve</literal>-Ereignisses:</para>
<programlisting>header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133</programlisting>
<para>Dieser Audit stellt einen erfolgreichen
<literal>execve</literal>-Aufruf dar, in welchem der Befehl
<literal>finger doug</literal> ausgeführt wurde. Das
Kürzel des Argumentes enthält die Befehlszeile,
welche die Shell an den Kernel weiterleitet. Das Kürzel
<literal>path</literal> enthält den Pfad zur
ausführbaren Datei (wie vom Kernel wahrgenommen). Das
Kürzel <literal>attribute</literal> beschreibt die
Binärdatei (insbesondere den Datei-Modus, der genutzt
werden kann, um zu bestimmen, ob setuid auf die Applikation
angewendet wurde). Das Kürzel <literal>subject</literal>
beschreibt den untergeordneten Prozess und speichert daher in
Aufeinanderfolge Audit-Benutzer-ID, effektive Benutzer-ID und
Gruppen-ID, wirkliche Benutzer-ID und Grppen-ID, Process-ID,
Session- ID, Port-ID und Anmelde-Adresse. Beachten Sie, dass
Audit-Benutzer-ID und wirkliche Benutzer-ID abweichen: Der Benutzer
<username>robert</username> wurde zum Benutzer
<username>root</username>, bevor er diesen Befehl
ausführte, aber er wird auditiert mit dem
ursprünglich authentifizierten Benutzer. Schließlich zeigt
das Kürzel <literal>return</literal> die erfolgreiche
Ausführung an und <literal>trailer</literal> schließt
den Datensatz ab.</para>
<para><command>praudit</command> unterstützt auch
die Ausgabe im XML-Format (die sie über die Option
<option>-x</option> auswählen können).</para>
</sect2>
<sect2>
<title>Audit-Pfade reduzieren</title>
<para>Da Audit-Protokolldateien sehr groß sein können,
wird ein Administrator höchstwahrscheinlich eine Auswahl
an Datensätzen verwenden, wie z.B. alle Datensätze
zu einem bestimmten Benutzer:</para>
<screen>&prompt.root; <userinput>auditreduce -u trhodes /var/audit/AUDITFILE | praudit</userinput></screen>
<para>Dies wird alle Audit-Datensätze des Benutzers
<username>trhodes</username> auswählen, die in der
Datei
<filename><replaceable>AUDITFILE</replaceable></filename>
gespeichert sind.</para>
</sect2>
<sect2>
<title>Delegation von Rechten für Audit-Reviews</title>
<para>Mitglieder der Gruppe <groupname>audit</groupname> haben
die Erlaubnis, Audit-Pfade in <filename>/var/audit</filename>
zu lesen; standardmässig ist diese Gruppe leer, daher
kann nur der Benutzer <username>root</username> die Audit-Pfade
lesen. Benutzer können der Gruppe
<groupname>audit</groupname> hinzugefügt werden, um
Rechte für Audit-Reviews zu gewähren. Da die
Fähigkeit, Inhalte von Audit-Protokolldateien zu verfolgen,
tiefgreifende Einblicke in das Verhalten von Benutzern und
Prozessen erlaubt, wird empfohlen, dass die Gewährung von
Rechten für Audit-Reviews mit Bedacht erfolgt.</para>
</sect2>
<sect2>
<title>Aktive Überwachung mittles Audit-Pipes</title>
<para>Audit-Pipes sind nachgebildete (geklonte)
Pseudo-Geräte im Dateisystem des Gerätes, welche es
Applikationen erlauben, die laufenden Audit-Datensätze
anzuzapfen. Dies ist vorrangig für Autoren von Intrusion
Detection Software und Systemüberwachungsprogrammen von
Bedeutung. Allerdings ist für den Administrator das
Audit-Pipe-Gerät ein angenehmer Weg, aktive
Überwachung zu gestatten, ohne Gefahr von Problemen durch
Besitzerrechte der Audit-Pfad-Datei oder Unterbrechung des
Stroms von Ereignissen durch Log-Rotation. Um den laufenden
Audit-Ereignisstrom zu verfolgen, geben Sie bitte folgende
Befehlszeile ein:</para>
<screen>&prompt.root; <userinput>praudit /dev/auditpipe</userinput></screen>
<para>In der Voreinstellung kann nur der Benutzer
<username>root</username> auf die
Audit-Pipe-Geräte-Knotenpunkte zugreifen. Um sie allen
Mitgliedern der Gruppe <groupname>audit</groupname>
zugänglich zu machen, fügen Sie eine
<literal>devfs</literal>-Regel in
<filename>devfs.rules</filename> hinzu:</para>
<programlisting>add path 'auditpipe*' mode 0440 group audit</programlisting>
<para>Lesen Sie &man.devfs.rules.5; für weitere
Informationen, wie das devfs-Dateisystem konfiguriert
wird.</para>
<warning>
<para>Es ist sehr leicht, Rückmeldungszyklen von
Audit-Ereignissen hervorzurufen, in welcher das Betrachten
des Resultates eines Audit-Ereignisses in die Erzeugung von
mehr Audit-Ereignissen mündet. Wenn zum Beispiel der
gesamte Netzwerk-I/O auditiert wird, während
&man.praudit.1; in einer SSH-Sitzung gestartet wurde, dann
wird ein kontinuierlicher, mächtiger Strom von
Audit-Ereignissen erzeugt, da jedes ausgegebene Ereignis
wiederum neue Ereignisse erzeugt. Es ist anzuraten,
<command>praudit</command> an einem Audit-Pipe-Gerät
nur von Sitzungen anzuwenden (ohne feingranuliertes
I/O-Auditing), um dies zu vermeiden.</para>
</warning>
</sect2>
<sect2>
<title>Rotation von Audit-Pfad-Dateien</title>
<para>Audit-Pfade werden nur vom Kernel geschrieben und nur
vom Audit-Daemon <application>auditd</application> verwaltet.
Administratoren sollten nicht versuchen, &man.newsyslog.conf.5;
oder andere Werkzeuge zu benutzen, um Audit-Protokolldateien
direkt zu rotieren. Stattdessen sollte das
<command>audit</command> Management-Werkzeug benutzt werden,
um die Auditierung zu beenden, das Audit-System neu zu
konfigurieren und eine Log-Rotation durchzuführen. Der
folgende Befehl veranlasst den Audit-Daemon, eine neue
Protokolldatei anzulegen und dem Kernel zu signalisieren, die
neue Datei zu nutzen. Die alte Datei wird beendet und
umbenannt. Ab diesem Zeitpunkt kann sie vom Administrator
bearbeitet werden.</para>
<screen>&prompt.root; <userinput>audit -n</userinput></screen>
<warning>
<para>Falls der <application>auditd</application>-Daemon
gegenwärtig nicht läuft, wird dieser Befehl scheitern
und eine Fehlermeldung wird ausgegeben.</para>
</warning>
<para>Das Hinzufügen der folgenden Zeile in
<filename>/etc/crontab</filename> wird die Log-Rotation alle
zwölf Stunden durch &man.cron.8; erzwingen:</para>
<programlisting>0 */12 * * * root /usr/sbin/audit -n</programlisting>
<para>Die Änderung wird wirksam, sobald Sie die neue
<filename>/etc/crontab</filename> gespeichert haben.</para>
<para>Die automatische Rotation der Audit-Pfad-Datei in
Abhängigkeit von der Dateigröße ist möglich
durch die Angabe der Option <option>filesz</option> in
&man.audit.control.5;. Dieser Vorgang ist im Abschnitt
Konfigurationsdateien dieses Kapitels beschrieben.</para>
</sect2>
<sect2>
<title>Komprimierung von Audit-Pfaden</title>
<para>Da Audit-Pfad-Dateien sehr groß werden können,
ist es oft wünschenswert, Pfade zu komprimieren oder
anderweitig zu archivieren, sobald sie vom Audit-Daemon
geschlossen wurden. Das Skript
<filename>audit_warn</filename> kann genutzt werden, um
angepasste Aktionen für eine Vielzahl von audit-bezogenen
Ereignissen auszuführen, einschliesslich der sauberen
Beendigung von Audit-Pfaden, wenn diese geschlossen werden.
Zum Beispiel kann man die folgenden Zeilen in das
<filename>audit_warn</filename>-Skript aufnehmen, um
Audit-Pfade beim Beenden zu komprimieren:</para>
<programlisting>#
# Compress audit trail files on close.
#
if [ "$1" = closefile ]; then
gzip -9 $2
fi</programlisting>
<para>Andere Archivierungsaktivitäten können das
Kopieren zu einem zentralen Server, die Löschung der alten
Pfad-Dateien oder die Reduzierung des alten Audit-Pfades durch
Entfernung nicht benötigter Datensätze
einschliessen. Das Skript wird nur dann ausgeführt, wenn
die Audit-Pfad-Dateien sauber beendet wurden, daher wird es
nicht auf Pfaden laufen, welche durch ein unsauberes Herunterfahren
des Systems nicht beendet wurden.</para>
</sect2>
</sect1>
</chapter>