= 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: * Die Daten sollen verschlüsselt gespeichert werden * Der Schlüssel für die Daten soll nicht durch eine Person alleine . wiederherstellbar sein * Die Daten sollen, nach Ablauf der 6 Monatsfrist, einfach löschbar sein (kein . aufwendiger Prozess um das Erstellungsdatum heruaszufinden) 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 [[http://www.ping.de/~dh/log113ad/|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 [[http://cr.yp.to/daemontools.html|Daemontools]] von Dan Bernstein verwendet werden. Ein {{{run}}}-Script könnte dabei wie folgt aussehen: {{{ #!/bin/sh 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.