ident: Wissen wer der User ist...

Eigentlich wäre es uns natürlich am liebsten, wenn wir uns im Internet alle zu benehmen wüssten, dass Spam der Vergangenheit angehört und Menschen fair genug miteinander umgehen, ohne die Identifizierung einzelner vereinfachen zu müssen. Leider sind wir von einer solchen Gesellschaft aber noch etwas zu weit entfernt. Wir waren nämlich vor kurzem doch etwas überrumpelt, als nach immerhin 3 Jahren des Uberspace-Betriebs der erste Hinweis auf gerade angeblich akut stattfindendes, missbräuchliches Verhalten eines unserer User bei uns einging.

Nun können wir uns in solchen Fällen natürlich nicht darauf verlassen, dass ein Auflisten der aktuellen Prozesse sowie der Netzwerkverbindungen eines bestimmten Protokolls ausreicht, um den Vorfall zu analysieren und den User zu identifizieren.

Hier kommt im akuten Fall das in RFC 1413 spezifizierte ident-Protokoll ins Spiel. Entschieden haben wir uns für die Implementierung oidentd, schon aus den Gründen, dass wir uns aus den EPEL-Repositories bedienen konnten.

Server-Betreiber, die das ident-Protokoll unterstützen, erhalten von unseren Hosts für jede neue Verbindung ein eindeutiges, zufälliges und pseudonymisiertes Identifikatsmerkmal, mit dem sich individuelle, wiederkehrende Nutzer also weder identifizieren noch tracken lassen können.

In unserem Log gibt es hingegen durchaus die Möglichkeit, kurzfristig den zufälligen, pseudonymisierten Wert einem tatsächlichen Uberspace-Accout zuzuordnen. Angenommen also, wir erhalten vom Operator eines IRC-Netzes den Hinweis auf akutes Fehlverhalten eines Nutzers, so muss dieser uns lediglich einen Log-Auszug aus dem Verbindungsaufbau des Nutzers oder die Ausgabe des whois-Befehls mitteilen:

[18:59:06] foobar23 has userhost 8Grnl9G87U@andromeda.uberspace.de and real name "Unknown"

Auf unserer Seite könnten wir diesen Nutzer, der sich einen beliebigen Nickname ausssuchen kann, anhand des Zufallswertes 8Grnl9G87U einem tatsächlichen Uberspace-Account zuordnen:

[root@andromeda ~]# grep 8Grnl9G87U /var/log/oidentd/current | tai64nlocal 2015-01-13 18:59:12.233800500 [orwell.freenode.net] Successful lookup: 33376 , 6667 : daniel (8Grnl9G87Uy)

Nun können wir schnell auf die Abuse-Meldung reagieren, bevor der Vorfall ggfs. soweit eskaliert, dass es zu einer Anzeige und damit zu strafrechtlichen Ermittlungen kommt, die uns unter Umständen sogar dazu verpflichten könnten, vorübergehend erheblich mehr zu protokollieren oder gar Daten herauszugeben. Selbstredend geben wir dabei nicht etwa den Usernamen heraus, sondern benutzen die ident-Informationen, um die Abuse-Meldung an den entsprechenden User weiterzuleiten, um dessen Feedback zu bitten und ggf. in einer gütlichen Einigung zu vermitteln.

Um gar nicht erst in die Lage versetzt zu werden, Daten zu speichern, die wir gar nicht speichern möchten, sorgen wir dafür, dass das Logfile, in welchem die ident-Zufallswerte mit Usernamen korreliert werden, täglich rotiert und neben dem aktuellen Tag nur die zwei vorherigen aufbewahrt werden, um den Zweck des Logs auf die Bearbeitung akuter Abuse-Meldungen zu beschränken.

(Dass Freenode hier ausgerechnet den Server 'orwell' für diesen Test auserkoren hat, ist purer Zufall. Wirklich.)