Der PING »Daten sicher loggen«-Dämon

Mit der Speicherpflicht nach §113a des TKG wurde eine neue Möglichkeit zur sicheren Aufbewarung von Verbindungsdaten notwendig. Wenn schon Verbindungsdaten für 6 Monate gespeichert werden müssen, dann aber so, dass sichergestellt ist, dass kein Zugriff auf die Daten für andere Zwecke geschehen kann.

Sicher gibt es sicher nie, aber einfach Logfiles herumliegen zu lassen, trifft es bestimmt nicht. Daher wurden folgende Vorgaben getroffen:

Für diesen Zweck wurde das Projekt »log113ad« begonnen.

Funktionsweise

Die eigentlichen Logdaten werden von den Programmen, bei denen sie anfallen (z.B. Radius-Server für Einwahl), zusammengefasst (es wird meist mehr als ein Datum pro Dienst verlangt) und an den Logger-Dämon übertragen.

Die Übertragung zum Logger-Dämon, der als Instanz auf allen System läuft, auf denen entsprechende Daten anfallen, geschieht dabei über Unix-Domain-Sockets (AF_LOCAL). Durch die Repräsentation als Datei im Dateisystem und im Zusammenspiel mit den Unix-Berechtigungen, ist so auch sichergestellt, dass ein Zugriff auf den Kommunikationskanal nur mit entsprechenden Berechtigungen aus den Systemen selber möglich ist.

Der Logger-Dämon speichert alle ihm zugetragenen Daten in einer mit AES verschlüsselten Datei zusammen. Der symmetrische Schlüssel für das AES-Logfile wird dabei beim Starten des Dämons und nach spätestens 24 Stunden aus Zufallszahlen generiert. Die Schlüssel werden für den späteren Zugriff auf die Log-Dateien durch eine entsprechende Schachtelung von OpenPGP-Blöcken so gesichert, dass nur zwei Vorstandsmitglieder zusammen an die Schlüssel gelangen können. Jedes Miglied des geschäftsführenden Vorstandes (nach BGB) hält dabei einen (selber erstellten) Schlüssel.

Inbetriebnahme

Um Daten vom log113ad speichern zu lassen, sind zum einen der Dämon selber und zum anderen entspechend angepasste Programme erforderlich.

Installation und Inbetriebnahme des »log113ad«

Die Installation des log113ad geschieht entweder direkt aus dem ausgepackten Quelltext, oder auf Debian (Etch) Systemen über ein Debian-Paket.

Installation aus dem Source

Der log113ad verwendet die GNU-Autotools und kann daher wie jedes andere (GNU) Programm übersetzt und installiert werden.

Der Übersetzungs- und Installationsvorgang kann somit wie folgt geschehen:

daniel@random:~/log113ad-0.30$ ./configure
...
daniel@random:~/log113ad-0.30$ make
...
daniel@random:~/log113ad-0.30$ sudo make install

Nach dem Aufruf von make install befindet sich in /usr/local/sbin ein log113ad Binary.

Neben dem log113ad-Binary werden noch Installationen von GnuPG, sowie AESPipe benötigt.

Der normale Quelltext beinhaltet (im Gegensatz zum Debian-Paket) noch kein Init-Script, dies ist für eine spätere Version geplant. Viele Betriebssystem bieten allerdings einen Mechanismus der nach dem Start des Systems eigene Dienste starten kann (vergl. rc.local).

Anstelle von einem Init-Script kann allerdings auch ein System zur Überwachung von Server-Prozessen wie z.B. die Daemontools von Dan Bernstein verwendet werden. Ein run-Script könnte dabei wie folgt aussehen:

exec env - HOME=/var/lib/log113ad PATH=$PATH /usr/local/sbin/log113ad -k 0xA3833AB7F9354A2B -k 0xB02C3D69174E895F \
        -k 0x0769691F1E18DE98 -k 0x73F96642CC433098 -F -u log113ad \
        -g log113ad -s /var/run/log113ad/socket -p /var/run/log113ad/pid \
        -d /var/log/log113ad -G /usr/bin/gpg -A /usr/bin/aespipe

Wie dabei dem Aufruf entnommen werden kann, empfiehlt es sich den log113ad unter einer eigenen Benutzerkennung zu starten. Diese kann mittels den Parametern -u oder --user (für den Benutzer) bzw. -g oder --group (für die Gruppe) gesetzt werden. Fehlen die beiden Parameter versucht log113ad eine gleichnamigen Benutzer und eine gleichnamige Gruppe zu verwenden.

Neben dem zu verwendenden Benutzer und der zu verwendenden Gruppe können auch einige weitere Optionen gesetzt werden. Mit dem Parameter -s oder --socket kann das zu verwendende Unix-Domain-Socket angegeben werden. Es handelt sich dabei um eine Datei, die beim Start des log113ad angelegt wird. Somit ist zu beachten, dass der Benutzer, mit dessen Rechte der log113ad ausgeführt wird, die benötigten Rechte besitzt um im angegebenen Pfad Dateien anlegen und löschen zu können. Wird der Parameter nicht angegeben, wird /var/run/log113ad/socket angenommen.

Analog dazu verhält es sich bei dem Parameter -p bzw. --pid. Diese Datei wird beim starten angelegt und beinhaltet die Prozess-ID des Server-Prozesses. Wird der Parameter nicht angegeben, wird /var/run/log113ad/pid angenommen.

Der letzte wichtige Parameter ist -d bzw. --dir, welcher das Logverzeichnis angibt. Hier werden sowohl die verschlüsselten Log-Dateien angelegt, als auch die GPG-Verschlüsselten Schlüssel zu diesen. Wird der Parameter nicht angegeben, wird /var/log/log113ad als Vorgabe verwendet.

Für die restlichen Parameter sei erstmal auf die Online-Hilfe, die mit dem Parameter -h bzw. --help eingesehen werden kann, verwiesen. Für eine spätere Version ist geplant diese Informationen in eine Mangepage zu übernehmen.

Installation auf einem Debian (Etch) System

Für die Installation auf einen Debian-System kann das PING Pakete-Repository verwendet werden. Hierfür sind in die Datei /etc/apt/sources.list folgende Zeilen einzutragen:

deb http://donotdisturb.ping.de/pingian etch local
deb-src http://donotdisturb.ping.de/pingian etch local

Danach kann das Paket und alle Abhängigkeiten über apt-get install log113ad installiert werden.

Es wird automatisch ein Benutzer angelegt und die benötigten Verzeichnisse erstellt. Bevor der log113ad-Dämon allerdings in der Datei /etc/defaults/log113ad konfiguriert und gestartet werden kann sind noch ein paar Dinge von Hand zu erledigen.

Installation der GnuPG-Schlüssel

Der log113ad-Dämon benötigt zur Arbeit die Kennung (Key-ID) von vier PGP-Schlüsseln. Diese müssen dem GnuPG des Benutzers, unter dessen Kennung der Dämon läuft, bekannt sein.

Der Import der Schlüssel geschieht dabei auf normalen Wege. Nähere Informationen hierzu ist der GnuPG-Dokumentation zu entnehmen.

gpg --import /path/to/key.asc

In einigen GnuPG-Versionen ist es des Weiteren erforderlich das Trust-Level auf Ultimate (5) zu setzen, da GnuPG sonst beim Verwenden der Schlüssel nachfragt.

gpg --edit-key 0xdeadbeaf
 trust
 5
 save

Um die langen KeyIDs anzeigen zu lassen dient das Kommando

gpg --list-keys --keyid-format 0xlong

Sind alle Schlüssel importiert und wird ihnen ausreichend vertraut, müssen die Key-IDs als Parameter dem log113ad-Dämon übergeben werden. Dies kann z.B. so aussehen:

log113ad -k 0xA3833AB7F9354A2B -k 0xB02C3D69174E895F -k 0x0769691F1E18DE98 -k 0x73F96642CC433098

Wird das Debian-Paket verwendet, werden diese Parameter in der Datei /etc/defaults/log113ad konfiguriert.

Software/log113ad (zuletzt geändert am 2010-02-14 18:47:18 durch BodoBellut)