Diese Seite beschreibt die Konfiguration verschiedener Webdienste mit dem Blick auf die Privatsphäre der jeweiligen Nutzer*innen. Pfadangaben und änhliches beziehen sich auf eine [[https://debian.org|Debian]]-Jessie-Installation. <> = Transportwegverschlüsselung = Mittlerweile gibt es mit [[https://letsencrypt.org/|Let's Encrypt]] eine ziemlich einfache Möglichkeit, Zertifikate zu Erstellen, die für verschlüsselte Verbindungen benötigt werden. Im Internet gibt es dazu zahlreichen Anleitungen, die das genaue vorgehen für den jeweiligen Dienst beschreiben. = ejabberd = Ejabberd ist ein häufig genutzter Jabber/XMPP-Server. Seit Version [[https://www.ejabberd.im/node/24959|15.06]] lässt sich das [[http://docs.ejabberd.im/admin/guide/configuration/#logging|Logging]] so einstellen, dass keine sensiblen Daten erhoben werden. Dazu {{{/etc/ejabberd/ejabberd.yml}}} bearbeiten:{{{ hide_sensitive_log_data: true }}} = Horde = Jeder ausgehenden Mail fügt [[http://www.horde.org/|Horde]] einen Header-Eintrag mit der aktuellen IP-Adresse hinzu, die die Horde-Session gestartet hat. Dies kann recht einfach geändert werden - [[Horde unter Debian installieren#Privatsp.2BAOQ-hre_erh.2BAPY-hen|siehe]] = nginx = == access.log anonymisieren == [[http://nginx.org/|Nginx]] legt standardmäßig die Datei {{{/var/log/nginx/access.log}}} an, in der alle Anfragen inkl. der jeweiligen IP gespeichert werden. Nun gibt es mehrere Möglichkeiten, das Verhalten zu beeinflussen - dazu muss jeweils die Datei {{{/etc/nginx/nginx.conf}}} im Abschnitt '''http''' bearbeitet werden: * Logging deaktivieren:{{{ access_log off; }}} * IP-Adresse durch Platzhalten ''[ip-addr]'' ersetzen<>:{{{ log_format noip '[ip-addr] - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log noip; }}} == error.log anonymisieren == Das Format der Datei {{{/var/log/nginx/error.log}}} kann nicht beeinflusst werden. Sofern der error-Log nicht deaktiviert werden soll<>, lassen sich die IP-Adressen per [[WikiPediaDe:Sed_(Unix)|sed]] anonymisieren. Ein cron-Job mit dem folgenden Kommando könnte diese Aufgabe regelmäßig übernehmen: {{{ sed 's/\([0-9]\{1,3\}\.\)\{3,3\}[0-9]\{1,3\}/x.x.x.x/g' -i /var/log/nginx/error.log }}} Es ist auch möglich, nginx entsprechend zu [[https://gist.github.com/nilnilnil/6383186|patchen]]. = Redmine = Redmine schreibt seine Logdaten in der Standardkonfiguration nach {{{/var/log/redmine/default/production.log}}}. Die IP-Adresse kann ähnlich wie bei [[#error.log_anonymisieren|nginx]] anonymisiert werden. <> = Postfix = == Mailheader == Die Header von ausgehenden Mails geben gewöhnlich viele Infos über die Einsenderin preis (bpsw. aktuelle IP-Adresse, benutzer Mailclient etc.). Diese Header lassen sich heraus filtern. Dazu {{{/etc/postfix/master.cf}}} bearbeiten und für die Einlieferung per Client auf dem Submission-Port einen weiteren Service definieren:{{{ submission inet n - - - - smtpd -o cleanup_service_name=subclean ... subclean unix n - - - 0 cleanup -o header_checks=regexp:/etc/postfix/header_treatment }}} Die Datei {{{/etc/postfix/header_treatment}}} wird nun entsprechend gefüllt. Die mit IGNORE markierten Header werden dabei entfernt und die IP-Adresse ersetzt<>:{{{ /^Mail-System-Version:/ IGNORE /^Mailer:/ IGNORE /^Originating-Client:/ IGNORE /^User-Agent:/ IGNORE /^X-Enigmail-Version:/ IGNORE /^X-Mailer:/ IGNORE /^X-MimeOLE:/ IGNORE /^X-Newsreader:/ IGNORE /^X-Originating-IP:/ IGNORE /^X-Sender:/ IGNORE /^Received:.*\(Postfix/ IGNORE /^Received:.* with (E?SMTPS?A?) id ([a-zA-Z0-9]+)/ REPLACE Received: by mail.example.org (Postfix) with $1 id $2 /^\s*(Received: from)[^\n]*(.*)/ REPLACE $1 [127.0.0.1] (localhost [127.0.0.1]) }}} == Logging == Unter Debian loggt Postfix über DebianPackage:rsyslog nach {{{/var/log/mail.*}}}. Mit dem Modul [[http://www.rsyslog.com/howto-anonymize-messages-that-go-to-specific-files/|mmanon]] lassen sich die IP-Adressen anonymisieren. Dazu in {{{/etc/rsyslog/rsyslog.conf}}} folgenden Eintrag ergänzen:{{{ $ModLoad mmanon ... mail.* action(type="mmanon") mail.* -/var/log/mail.log }}} Üblicherweise werden die Mail-Logdateien mehrere Wochen gespeichert und mittels DebianPackage:logrotate rotiert. Anpassen lässt sich das Verhalten etwas versteckt in der Datei {{{/etc/logrotate.d/rsyslog}}}. = Seafile = [[https://www.seafile.com/en/home/|Seafile]] speichert in der aktuellen Version einige Daten zu den Nutzer*innen wie Plattform, Version des Seafile-Clients, Name des Geräts und IP-Adresse. Abrufbar sind diese über die Admin-Oberfläche und sollen die Fehlersuche vereinfachen. Mögen einige dieser Informationen dazu ganz brauchbar sein, sind andere zu sensibel, bspw. ''Name des Geräts'' (= Hostname) oder die IP-Adresse. Eine einfache Möglichkeit, diese Daten loszuwerden, ist mittels eines cron-Jobs die entsprechenden Daten aus den Datenbank-Tabellen zu entfernen. Dazu kann ein sql-Skript erstellt werden. In unserem Beispiel heißt das Skript {{{clear_seafile_data.sql}}}. Die zu löschenden Daten befinden sich in der Seahub-mysql-Datenbank:{{{ use seahub-db; update `api2_tokenv2` set `device_name` = 'device'; update `api2_tokenv2` set `last_login_ip` = '0.0.0.0'; }}} Das Skript kann per cron mit der Zeile {{{mysql < clear_seafile_data.sql}}} aufgerufen werden. = SSH = Die IP-Adressen der sich einloggenden Clients werden unter {{{/var/log/auth.log}}} protokolliert. Unter Debian ist rsyslog dafür zuständig, dass durch das Modul [[https://www.rsyslog.com/doc/v8-stable/configuration/modules/mmanon.html|mmanon]] die IP-Adressen anonymisieren kann. Das Verhindern von Brute-Force-Angriffe mit [[https://www.fail2ban.org/wiki/index.php/Main_Page|fail2ban]] würde so allerdings nicht funktionieren - dafür werden die vollständigen IP-Adressen in der Logdatei benötigt. Eine Möglichkeit ist, die IP-Adressen mit [[#error.log_anonymisieren|sed]] per Cron zu anonymisieren. Der Cron-Job sollte seltener laufen, als die im jeweiligen Jail definierte {{{findtime}}}. Zudem enthalten unter {{{/var/log}}} die binären Dateien {{{wtmp, btmp, lastlog}}} die vollständigen Anmeldeinformationen. Ein kurze Test mit den Tools {{{last, lastb, lastlog}}} zeigt dir den Umfang. Diese Dateien kannst du ebenfalls per Cron, bspw. mit einem einfachen {{{echo > /var/log/last}}}, leeren. ---- = Fussnoten, Hinweise =