840 lines
32 KiB
XML
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> – Enthält
|
|
die Definitionen der Audit-Klassen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>audit_control</filename> – 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> – 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> – Benutzerspezifische
|
|
Audit-Erfordernisse, welche mit den globalen Vorgaben bei
|
|
der Anmeldung kombiniert werden.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename>audit_warn</filename> – 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> – <emphasis>all</emphasis> – Vergleiche
|
|
alle Ereignisklassen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ad</literal> – <emphasis>administrative</emphasis> – Administrative
|
|
Aktionen ausgeführt auf dem System als Ganzes.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ap</literal> – <emphasis>application</emphasis> – Aktionen
|
|
definiert für Applikationen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>cl</literal> – <emphasis>file
|
|
close</emphasis> – Audit-Aufrufe für
|
|
den Systemaufruf <function>close</function>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ex</literal> – <emphasis>exec</emphasis> – 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> – <emphasis>file
|
|
attribute access</emphasis> – Auditierung
|
|
des Zugriffs auf Objektattribute wie &man.stat.1;,
|
|
&man.pathconf.2; und ähnlichen Ereignissen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>fc</literal> – <emphasis>file
|
|
create</emphasis> – Audit-Ereignisse,
|
|
bei denen eine Datei als Ergebnis angelegt wird.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>fd</literal> – <emphasis>file
|
|
delete</emphasis> – Audit-Ereignisse,
|
|
bei denen Dateilöschungen vorkommen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>fm</literal> – <emphasis>file
|
|
attribute modify</emphasis> – 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> – <emphasis>file
|
|
read</emphasis> – Audit-Ereignisse, bei
|
|
denen Daten gelesen oder Dateien zum lesen geöffnet
|
|
werden usw.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>fw</literal> – <emphasis>file write</emphasis> – Audit-Ereignisse,
|
|
bei welchen Daten geschrieben oder Dateien geschrieben
|
|
oder verändert werden usw.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>io</literal> – <emphasis>ioctl</emphasis> – Nutzung
|
|
des Systemaufrufes &man.ioctl.2; durch Audit.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ip</literal> – <emphasis>ipc</emphasis> – Auditierung
|
|
verschiedener Formen von Inter-Prozess-Kommunikation
|
|
einschliesslich POSIX-Pipes und System V
|
|
<acronym>IPC</acronym>-Operationen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>lo</literal> – <emphasis>login_logout</emphasis> – Audit-Ereignisse
|
|
betreffend &man.login.1; und &man.logout.1;, welche auf
|
|
dem System auftreten.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>na</literal> – <emphasis>non
|
|
attributable</emphasis> – Auditierung
|
|
nicht-attributierbarer Ereignisse (Ereignisse, die nicht auf
|
|
einen bestimmten Benutzer zurückgeführt werden
|
|
können).</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>no</literal> – <emphasis>invalid
|
|
class</emphasis> – Kein Abgleich von
|
|
Audit-Ereignissen.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>nt</literal> – <emphasis>network</emphasis> – Audit-Ereignisse
|
|
in Zusammenhang mit Netzwerkaktivitäten wie
|
|
z.B. &man.connect.2; und &man.accept.2;.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>ot</literal> – <emphasis>other</emphasis> – Auditierung
|
|
verschiedener Ereignisse.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><literal>pc</literal> – <emphasis>process</emphasis> – 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>
|