Speicherung von IP-Adressen

Alles, was sonst nirgendwo reinpasst

Speicherung von IP-Adressen

Beitragvon Coolcat » 16.02.08 18:57

In den letzten Tagen gab es wieder ein paar lustige Gerichtsurteile:
http://www.heise.de/newsticker/meldung/103440
http://www.golem.de/0802/57686.html

Vom Prinzip ist das ganze ja richtig, nur das ganze hätte man sich sparen können, gäbe es keine VDS. Leider protokolliert quasi jede Standard-Anwendung (Apache, Mediawiki, phpBB, punBB, Wordpress, ...) die IP-Adressen der Nutzer, weshalb man die nun eigentlich patchen müsste um sich rechtlich abzusichern. Einige Patches gibt es hier, jedoch filtern diese die IP komplett bzw. setzen sie auf 0.0.0.0

Um Angriffe nachzuvollziehen reicht das nicht, besser ist ein Hashwert der IP. Für mein Mediawiki habe ich einen Patch geschrieben und Apache leitet Logfiles durch ein Perl-Skript, welches die IP-Adressen ersetzt. Beide verwenden die ersten 4 Zeichen von MD5 als Hash. Mehr Zeichen dürfen es nicht sein, da sonst die Funktion umkehrbar wäre, was ja nicht möglich sein darf.

Ich veröffentliche den Kram hier da ich ja hier sicher nicht der einzige bin der hier ein MediaWiki bzw. einen Apache betreibt. Es ist ja nicht nötig das noch jemand ein paar Stunden damit vergeudet...insbesondere hatten schon ein paar Leute danach gefragt. Wir können derartige Patches ja hier sammeln. :)


MediaWiki 1.11.0
Dieser Patch ersetzt IP-Adressen überall durch Strings wie "guest-E462". Außerdem werden Benutzernamen die mit "guest-" beginnen verboten, damit es nicht zu Kollisionen kommt.

includes/ProxyTools.php
Code: Alles auswählen
72,78c72
<               //$ipchain = array( IP::canonicalize( $_SERVER['REMOTE_ADDR'] ) );
<
<               // IP-hashing
<               $iparray = array( IP::canonicalize( $_SERVER['REMOTE_ADDR'] ) );
<               $hash = substr(md5($iparray[0]),0,4);
<               $username = 'guest-'.strtoupper($hash);
<               $ipchain = array($username);
---
>               $ipchain = array( IP::canonicalize( $_SERVER['REMOTE_ADDR'] ) );


includes/User.php
Code: Alles auswählen
459,463c459
<                       !in_array( $name, $wgReservedUsernames ) &&
<
<                       // username may not start with "guest-", because this
<                       // is used for IP-hashing
<                       substr_compare("guest-", $name, 0, 6, true) != 0;
---
>                       !in_array( $name, $wgReservedUsernames );



Apache 2
Apache besitzt bereits eine eingebaute Funktion um die Logfiles durch eigene Skript zu leiten. Das unten folgende Skript z.B. nach /usr/bin/iphash kopieren und dann in der Apache-Konfigdatei wie folgt einbinden:
Code: Alles auswählen
ErrorLog "|/usr/bin/iphash /var/log/httpd/error_log"

IP-Adressen werden durch Hash-Werte ersetzt, z.B. "[IP-HASH-4e04]". Die IP 127.0.0.1 (localhost) wird nicht ersetzt, weitere Ausnahmen für IP-Adressen oder Hashwerte können definiert werden. Der Output-Buffer wird alle 15 Sekunden geleert.

(Habt Nachsicht...ist mein erstes Perl-Skript, thx@HE für die Geduld mit mir :P)

Code: Alles auswählen
#! /usr/bin/perl -w
# Replace IP addresses in Apache logfiles by MD5 hashes.
# Author: Martin Weusten

# -------------------------------------------

use Digest::MD5;
use IO::Handle;

# -------------------------------------------

# IP addresses that should not be replaced
$blocked_ip[0] = '127.0.0.1';

# hash values that should not be replaced
# (!!) if you want to use this, uncomment lines 70-75 below (!!)
# $blocked_hash[0] = '[IP-HASH-f528]'; # just example

# flush buffer every $flushtime seconds
$flushtime = 15;

# -------------------------------------------

# flush buffer on exit
$SIG{INT} = $SIG{TERM} =
   sub {
      close($OUT);
      exit;
   };
# flush buffer every $flushtime seconds
$SIG{ALRM} =
   sub {
      $OUT->flush();
      alarm $flushtime;
   };
alarm $flushtime;

# -------------------------------------------

open($OUT,'>>'.$ARGV[0]);

# scan STDIN for IP-Addresses
while (<STDIN>) {
   s/(^|\s)((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}))($|\s|])/HASH()/ge
} continue {
   print $OUT $_;
}

close($OUT);

# -------------------------------------------

sub HASH {
   # check if all numbers are between 0 and 255
   if ($3>255 || $4>255 || $5>255 || $6>255) {
      return $1.$2.$7
   }
   
   # check if this IP should not be replaced
   $ip = $2;
   foreach my $block (@blocked_ip) {
      if ($ip eq $block) {
         return $1.$2.$7
      }
   }

   # compute hash
   $hash = "[IP-HASH-".substr(Digest::MD5::md5_hex($ip), 0, 4)."]";

#    # check if this hash should not be replaced
#    foreach my $block (@blocked_hash) {
#       if ($hash eq $block) {
#          return $1.$2.$7
#       }
#    }

   # ok, replace it
   return $1.$hash.$7
}
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon zven » 16.02.08 19:41

Um das aber noch etwas genauer festzuhalten:
...dem Bundesjustizministerium untersagt, über seine Webseite personenbezogene Daten über das Ende des jeweiligen Nutzungsvorgangs hinaus zu speichern

Beim Infostudium-Wiki sind nicht registrierte Benutzer nicht zugelassen, somit werden IPs nur für die Session gespeichert. Bei phpBB müsste es auch keine Probleme geben. Diese Programme müssen je nach Modus nicht verändert werden.

Hauptproblem dürfte Webserver-Software wie Apache, lighthttpd und IIS sein. Ich frage mich, ob die Autoren extra ein German-Law-Mod herausbringen, die die IPs unkenntlich machen. Wobei ich aber noch nicht weiß, welchen Zeitabschnitt man unter "Nutzungsvorgang" versteht. Vielleicht würde es ausreichen, dass zum Beispiel awstats die Statistik erstellt und dann die Logfiles löscht. Also keine Archivierung?

Und noch was zu WordPress, das ich ja gerne verwende: Man müsste auf jeden Fall die Kommentar-Funktion sowie Statistik-Plugins ausschalten.

Lustig.
zven
Promoter
 
Beiträge: 701
Registriert: 12.09.05 19:12
Studiengang: ?
Studiert seit: ?

Beitragvon Coolcat » 16.02.08 19:47

MediaWiki speichert die IP von jedem Nutzer der eine Änderung macht, ob registriert oder nicht. (zumindest in der Default-Einstellung) Das ist einfach nicht notwendig, ein Hash reicht hier völlig.

Für Statistiken braucht man die IPs nicht zu speichern, auch hier reichen Hashwert um zu verhindern das Nutzer mehrfach gezählt werden.
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: Speicherung von IP-Adressen

Beitragvon fw » 16.02.08 19:54

Coolcat hat geschrieben:Vom Prinzip ist das ganze ja richtig [...] Leider protokolliert quasi jede Standard-Anwendung (Apache, Mediawiki, phpBB, punBB, Wordpress, ...) die IP-Adressen der Nutzer


Leider? Wenn ich einen Server betreibe will ich auch bitteschön protokollieren dürfen wer darauf zugreift. Das ist echt der größte Schwachsinn den ich seit langem gelesen habe. Mit Datenschutz hat das meiner Ansicht nach nichts zu tun.
Benutzeravatar
fw
 
Beiträge: 1356
Registriert: 17.05.06 19:37
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: Mathe

Beitragvon zven » 16.02.08 20:03

coolcat hat mich auf ne mediawiki-tabelle aufmerksam gemacht. Tabelle "Recentchanges". Kann man aber per Einstellung abschalten und habe ich eben gemacht. Müsste vorerst reichen.

Aso: Habt ihr denn auch schon alle eure E-Mails gelöscht? :-D
zven
Promoter
 
Beiträge: 701
Registriert: 12.09.05 19:12
Studiengang: ?
Studiert seit: ?

Beitragvon Coolcat » 16.02.08 20:05

http://www.mediawiki.org/wiki/Recentchanges_table#rc_ip
(das reicht aber nur wenn man nur Änderungen von registrierten Nutzern zulässt)
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Beitragvon zven » 16.02.08 20:26

Für MediaWiki, phpBB und WordPress gibt's hier Anleitungen:
http://www.daten-speicherung.de/index.p ... -adressen/
zven
Promoter
 
Beiträge: 701
Registriert: 12.09.05 19:12
Studiengang: ?
Studiert seit: ?


Zurück zu Off-Topic