Update to r44378:

Finish editorial review of Event Auditing.
This commit is contained in:
Bjoern Heidotting 2016-06-11 07:13:59 +00:00
parent 2f2aedb466
commit 61775e990d
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48917

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/audit/chapter.xml,v 1.14 2012/02/16 20:28:26 bcr Exp $
basiert auf: r44377
basiert auf: r44378
-->
<!-- Need more documentation on praudit, auditreduce, etc. Plus more info
on the triggers from the kernel (log rotation, out of space, etc).
@ -264,6 +264,12 @@ requirements. -->
<entry>Vergleicht alle Ereisnisklassen.</entry>
</row>
<row>
<entry>aa</entry>
<entry>authentifizierung und autorisierung</entry>
<entry></entry>
</row>
<row>
<entry>ad</entry>
<entry>administrative</entry>
@ -547,6 +553,11 @@ expire-after:10M</programlisting>
dem Audit-Subsystem und anderen Subsystemen zu verhindern,
falls das Dateisystem voll läuft.</para>
<para>Ist die Option <option>dist</option> auf
<literal>on</literal> oder <literal>yes</literal> gesetzt,
wird ein Link der Dateien des Audit-Trails in
<filename>/var/audit/dist</filename> erstellt.</para>
<para>Das <option>flags</option>-Feld legt die systemweite
Standard-Vorauswahl-Maske für attributierbare (direkt
einem Benutzer zuordenbare) Ereignisse fest. Im
@ -558,34 +569,34 @@ expire-after:10M</programlisting>
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>
Warnhinweis erzeugt.</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>
aufgezeichnet werden sollen, wie beispielsweise
Anmeldeprozesse, Authentifizierung und Autorisierung.</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
Aspekte des Audit-Verhaltens steuern. Der 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
empfohlen). 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>
maximale Größe der Audit-Datei, bevor sie automatisch
beendet und rotiert wird. Der Wert <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
angeforderte Dateigröße unterhalb des Minimums von 512K
ist, dann wird die Angabe verworfen und ein Log-Hinweis wird
erzeugt.</para>
<para>Die Option <option>expire-after</option> legt fest, wann
die Audit-Dateien verfallen und entfernt werden.</para>
</sect3>
<sect3 xml:id="audit-audituser">
@ -594,13 +605,12 @@ expire-after:10M</programlisting>
<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>
für einen Benutzer über zwei Felder:
<literal>alwaysaudit</literal> gibt eine Ansammlung von
Ereignissen vor, welche immer für diesen Benutzer
aufgezeichnet werden. <literal>neveraudit</literal> legt
Ereignisse fest, die niemals für diesen Benutzer auditiert
werden sollen.</para>
<para>Das folgende Beispiel einer
<filename>audit_user</filename>-Datei zeichnet
@ -608,9 +618,8 @@ expire-after:10M</programlisting>
Befehlsausführungen für den Benutzer
<systemitem class="username">root</systemitem>, Anlegen von Dateien und
erfolgreiche Befehlsausführungen für den Benutzer
<systemitem class="username">www</systemitem> auf. Falls das Beispiel zusammen
mit der vorstehend als Beispiel gezeigten Datei
<filename>audit_control</filename> benutzt wird, dann ist
<systemitem class="username">www</systemitem> auf. Falls die
voreingestellte <filename>audit_control</filename> benutzt wird, dann ist
der Eintrag <literal>lo</literal> für <systemitem
class="username">root</systemitem> überflüssig und
Anmelde/Abmelde-Ereignisse werden für <systemitem
@ -624,32 +633,30 @@ www:fc,+ex:no</programlisting>
</sect1>
<sect1 xml:id="audit-administration">
<title>Administration des Audit-Subsystems</title>
<title>Audit-Trails</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. Eine Reihe von
Auswahl-Parametern werden von &man.auditreduce.1; unterstützt,
<para>Weil Audit-Trails werden im binären
<acronym>BSM</acronym>-Format gespeichert werden, gibt es
verschiedene Werkzeuge, um derartige Dateien zu ändern oder
sie in Textdateien zu konvertieren. Der
Befehl <command>praudit</command> wandelt alle Pfad-Dateien in
ein einfaches Textformat um. Der Befehl
<command>auditreduce</command> kann genutzt werden, um die
Pfad-Dateien für Analyse, Ausdruck, Archivierung oder andere
Zwecke zu reduzieren. Eine Reihe von Auswahl-Parametern
werden von &man.auditreduce.1; unterstützt,
einschliesslich Ereignistyp, Ereignisklasse, Benutzer, Datum
oder Uhrzeit des Ereignisses und den Dateipfad oder das
Objekt, mit dem gearbeitet wurde.</para>
<para>Das Dienstprogramm &man.praudit.1; schreibt zum Beispiel
den gesamten Inhalt einer angegebenen Audit-Protokolldatei in
eine simple Textdatei:</para>
<para>Der folgende Befehl schreibt den gesamten Inhalt einer
angegebenen Audit-Protokolldatei in eine Textdatei:</para>
<screen>&prompt.root; <userinput>praudit /var/audit/AUDITFILE</userinput></screen>
<screen>&prompt.root; <userinput>praudit /var/audit/<replaceable>AUDITFILE</replaceable></userinput></screen>
<para><filename><replaceable>AUDITFILE</replaceable></filename>
ist hier die zu schreibende Protokolldatei.</para>
<para><replaceable>AUDITFILE</replaceable> 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
@ -670,82 +677,67 @@ 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,
<literal>finger doug</literal> ausgeführt wurde.
<literal>exec arg</literal> 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
Binärdatei und enthält 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
angewendet wurde. Das Kürzel <literal>subject</literal>
speichert die 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
<systemitem class="username">robert</systemitem> wurde zum Benutzer
<systemitem class="username">root</systemitem>, 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>
Audit-Benutzer-ID und wirkliche Benutzer-ID abweichen, da der
Benutzer <systemitem class="username">robert</systemitem> zum
Benutzer <systemitem class="username">root</systemitem> wurde,
bevor er diesen Befehl ausführte, aber er wird auditiert mit
dem ursprünglich authentifizierten Benutzer. Das Kürzel
<literal>return</literal> zeigt die erfolgreiche Ausführung an
und <literal>trailer</literal> schließt den Datensatz
ab.</para>
<para>&man.praudit.1; unterstützt auch die Ausgabe im
<acronym>XML</acronym>-Format (die sie über die Option
<option>-x</option> auswählen können).</para>
</sect2>
<para>Die Ausgabe im <acronym>XML</acronym>-Format wird
ebenfalls unterstützt und kann über die Option
<option>-x</option> ausgewählt werden.</para>
<sect2>
<title>Audit-Pfade reduzieren</title>
<para>Da Audit-Protokolldateien sehr groß sein können, kann mit
Hilfe von <command>auditreduce</command> auch nur eine
Teilmenge der Datensätze ausgewählt werden. Dieses Beispiel
selektiert alle Datensätze des Benutzers <systemitem
class="username">trhodes</systemitem> aus der Datei
<filename>AUDITFILE</filename>:</para>
<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
<systemitem class="username">trhodes</systemitem> auswählen,
die in
<filename><replaceable>AUDITFILE</replaceable></filename>
gespeichert sind.</para>
</sect2>
<sect2>
<title>Delegation von Rechten für Audit-Reviews</title>
<screen>&prompt.root; <userinput>auditreduce -u <replaceable>trhodes</replaceable> /var/audit/<replaceable>AUDITFILE</replaceable> | praudit</userinput></screen>
<para>Mitglieder der Gruppe <systemitem
class="groupname">audit</systemitem> haben die Erlaubnis,
Audit-Pfade in <filename>/var/audit</filename> zu lesen;
standardmässig ist diese Gruppe leer, daher
kann nur der Benutzer <systemitem class="username">root</systemitem> die Audit-Pfade
lesen. Benutzer können der Gruppe
<systemitem class="groupname">audit</systemitem> hinzugefügt werden, um
class="groupname">audit</systemitem> sind berechtigt,
Audit-Pfade in <filename>/var/audit</filename> zu lesen. In
der Voreinstellung ist diese Gruppe leer, daher kann nur der
Benutzer <systemitem class="username">root</systemitem> die
Audit-Pfade lesen. Benutzer können der Gruppe <systemitem
class="groupname">audit</systemitem> 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>
Pseudo-Geräte, 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 das
Audit-Pipe-Gerät ein angenehmer Weg für den Administrator,
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
folgendes ein:</para>
<screen>&prompt.root; <userinput>praudit /dev/auditpipe</userinput></screen>
@ -755,7 +747,7 @@ trailer,133</programlisting>
Mitgliedern der Gruppe <systemitem class="groupname">audit</systemitem>
zugänglich zu machen, fügen Sie eine
<literal>devfs</literal>-Regel in
<filename>devfs.rules</filename> hinzu:</para>
<filename>/etc/devfs.rules</filename> hinzu:</para>
<programlisting>add path 'auditpipe*' mode 0440 group audit</programlisting>
@ -768,58 +760,55 @@ trailer,133</programlisting>
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
Netzwerk-<acronym>I/O</acronym> auditiert wird, während
<command>praudit</command> in einer
<acronym>SSH</acronym>-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, &man.praudit.1; an
einem Audit-Pipe-Gerät nur von Sitzungen anzuwenden (ohne
feingranuliertes I/O-Auditing), um dies zu vermeiden.</para>
Ereignisse erzeugt. Daher ist anzuraten,
<command>praudit</command> an einem Audit-Pipe-Gerät nur
von Sitzungen anzuwenden (ohne feingranuliertes
<acronym>I/O</acronym>-Auditing), um dies zu
vermeiden.</para>
</warning>
</sect2>
<sect2>
<title>Rotation von Audit-Pfad-Dateien</title>
<title>Rotation und Komprimierung von Audit-Pfad-Dateien</title>
<para>Audit-Pfade werden nur vom Kernel geschrieben und nur
vom Audit-Daemon &man.auditd.8; verwaltet. Administratoren
<para>Audit-Pfade werden vom Kernel geschrieben und vom
Audit-Daemon &man.auditd.8; verwaltet. Administratoren
sollten nicht versuchen, &man.newsyslog.conf.5; oder andere
Werkzeuge zu benutzen, um Audit-Protokolldateien direkt zu
rotieren. Stattdessen sollte das &man.audit.8;
Management-Werkzeug benutzt werden, um die Auditierung zu
rotieren. Stattdessen sollte <command>audit</command> 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>
sie vom Administrator bearbeitet werden:</para>
<screen>&prompt.root; <userinput>audit -n</userinput></screen>
<warning>
<para>Falls der &man.auditd.8;-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>
zwölf Stunden durchgeführt:</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 Änderung wird wirksam, sobald
<filename>/etc/crontab</filename> gespeichert wird.</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>
<filename>audit.control</filename>. Dieser Vorgang ist in
<xref linkend="audit-config"/> beschrieben.</para>
<para>Da Audit-Pfad-Dateien sehr groß werden können,
ist es oft wünschenswert, Pfade zu komprimieren oder
@ -829,8 +818,8 @@ trailer,133</programlisting>
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
Zum Beispiel kann man die folgenden Zeilen in
<filename>/etc/security/audit_warn</filename> aufnehmen, um
Audit-Pfade beim Beenden zu komprimieren:</para>
<programlisting>#
@ -840,14 +829,14 @@ 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>
<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 einschließen. Dieses 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>