SHA512 Passwort-Hash für Nginx Basic Auth nutzen

Vor einiger Zeit rief Mike Kuketz in seinem Microblog dazu auf MD5 htpasswd Hashes zu ersetzen. Dabei empfiehlt er anstatt MD5 oder SHA1 auf bcrypt zu wechseln.

Für den Apache Webserver können Bcrypt verschlüsselte Passwörter einfach mit dem tool htpasswd und dem Schalter -B erzeugt werden (htpasswd -Bc passwordfile username). Apache unterstützt die Formate bcrypt, apr1 (MD5), SHA1, crypt () und unverschlüsselten Plain text.

Das Nginx Basic Auth Modul versteht jedoch keine bcrypt Hashes.

Tatsächlich unterstützt Nginx laut Dokumentation nur Plain text, crypt(),  apr1 (MD5), SHA1 und SSHA (salted SHA1) welche alle als mehr oder weniger anfällig für Kollissionsangriffe gelten (unterschiedliche Passwörter können den selben Hash ergeben).

Weiterlesen

Nginx Logfiles anonymisieren und mit AWstats auswerten

Bei AWStats handelt es sich um ein recht bekanntes Werkzeug zum Auswerten von Serverlogfiles. Es eignet sich wunderbar um einen Eindruck davon zu bekommen wie häufig eine Webseite aufgerufen wird und auch welche Beiträge am beliebtesten sind. Eine Demo des Tools findet sich auf der offiziellen Webseite des Projekts. Der Vorteil gegenüber richtigen Tracking Lösungen wie Google Analytics oder Piwik ist, dass nur Daten ausgewertet werden welche sowieso schon in den Serverlogfiles vorhanden sind. Da keine zusätzlichen Daten über Cookies oder Javascript Code erfasst wird ist das Tracking allerdings auch weniger genau.

Ein Problem bei der Auswertung von Serverlogs ist dass in der Standardkonfiguration alle Webserver die vollständige IP Adresse der Besucher speichern. Auch wenn dies rechtlich noch nicht abschließend geklärt sein mag, handelt es sich nach Ansicht vieler Fachleute bei der IP Adresse um ein personenbezogenes Datum, welches ohne ausdrückliche Einwilligung des Besuchers nicht ausgewertet werden darf. Aus rechtlichen Erwägungen und aus Respekt vor der Privatsphäre der Webseitenbesucher müssen die Logfiles also zuerst einmal anonymisiert, also mit verkürzeter IP Adresse gespeichert werden.

Der nächste Stolperstein ist Nginx selber. AWStats liegt als Perl Skript vor, welche von Nginx selbst jedoch nicht ausgeführt werden können.

Weiterlesen

Selbstgebauter Homeserver/NAS mit Ubuntu Server

In vielen Haushalten stehen mittlerweile zentrale Netzwerkspeicher, sogenannte NAS. Die Vorteile eines solchen Systems liegen auf der Hand. So hat man einen Datenspeicher der für den ganzen Haushalt z.B. Filme und Musik zur Verfügung stellt. Außerdem ermöglichen einem solche Systeme oft den Zugriff auf seine Daten von außerhalb des Hauses, ohne dass man seine Daten in fremde Hände geben muss. Auch die Backupstrategie wird vereinfacht wenn alle wichtigen Daten zentral vorgehalten werden.

Nun gibt es zwei Möglichkeiten sich einen solchen Netzwerkspeicher zu besorgen. Entweder man kauft sich ein fertiges NAS System, oder man baut sich ein solches selbst. Dies bedeutet zwar mehr Arbeit, man wird dafür aber mit einem System belohnt, welches nahezu alle denkbaren Serverdienste zur Verfügung stellen kann. Unabhängig davon was der Hersteller an Funktionen eingebaut hat.

Seit 2009 tut mein bisheriger Homeserver zuverlässig seinen Dienst. Besonders aufgrund des mittlerweile völlig unzeitgemäßen Stromverbrauchs der alten Hardware war eine Überarbeitung angebracht. In dieser Artikelreihe beschreibe ich wie man sich einen Homeserver/NAS auf Basis von Ubuntu Server aufbauen  und konfigurieren kann, als flexible Alternative zu den heute häufig eingesetzten fertig NAS Systemen.

Die Anforderungen an das System sind folgende:

  1. Möglichst geringer Stromverbrauch, da das System 24/7 laufen soll
  2. Schutz der Daten vor einem Festplattenausfall durch Speicherung auf einem RAID Verbund.
  3. Bereitstellen von Netzwerkfreigaben zum einfachen Zugriff auf die Zentralen Daten mit Windows und Linux
  4. Synchronisieren bestimmter Daten über mehrere Geräte (so dass diese auch lokal vorliegen)
  5. Zugriff auf die Daten von unterwegs
  6. Datenbankserver für das Mediacenter KODI
  7. Streamen von Medien für unterwegs auf Mobilgeräte
  8. Tägliches automatisches und verschlüsseltes Backup der wichtigsten Daten auf einen Cloudspeicher außer Haus.
  9. Manuelles Backup sämtlicher Daten auf einen externen Datenträger

Weiterlesen

HTTP Public Key Pinning (HPKP) mit Apache/Ubuntu Webserver

Die verschlüsselte Übertragung von Webseiten via HTTPS funktioniert sicher und zuverlässig. Weniger sicher und zuverlässig ist jedoch die verwendete Technik zur Identifizierung des Gegenübers. Derzeit sollen Certificate Authorities (CAs) sicherstellen dass man beim Aufruf von z.B. https://www.techgrube.de auch wirklich direkt mit techgrube.de spricht und nicht etwa mit einer Phisingsite. Das Problem ist dass die gängigen Browser hunderten von CAs vertrauen. Wenn ich als Webseitenbetreiber mir ein Zertifikat von „TrustedCA Number 1“ erstellen lassen hindert das einen Angreifer nicht daran sich ein gültiges Zertifikat von „TrustedCA Number2“ erstellen zu lassen. Der Besucher merkt nicht dass er auf eine falsche Seite umgeleitet wurde.

Die Gefahr dass eine HTTPS Verbindung aufgebrochen und vom Besucher unbemerkt neu verschlüsselt wird ist dabei keineswegs nur eine theoretische. So hat die auf Lenovo vorinstallierte Adware Superfish genau das gemacht. Auch in Unternehmen ist dies aus „Sicherheitsgründen“ nicht unüblich.

HTTP Public Key Pinning (kurz: HPKP) kann diese Problematik deutlich entschärfen.

Weiterlesen

IP Adressen in Apache Logfiles anonymisieren

Bei Apache auf einem Ubuntu Server wird in der Standardeinstellung von jedem Besucher die vollständige IP Adresse in den Logfiles gespeichert und erst nach einem Jahr gelöscht.
Wenn man IP Adressen speichert befindet man sich nach wie vor in einer rechtlichen Grauzone (BGH bestätigt: Webserver-Logfiles nicht nach § 100 Abs. 1 TKG erlaubt) Aber schon aus Rücksicht vor der Privatsphäre der eigenen Besucher sollten deren IP Adressen nicht komplett gespeichert werden. Außerdem gilt wie immer: Je weniger sensible Daten man vorhält desto weniger können einem auch abhanden kommen.
Man kann nun die Logfiles komplett deaktivieren, die IP Adressen von Apache entfernen lassen oder mithilfe eines Skripts die IP Adressen zu anonymisieren. Apache selbst biete nur die Möglichkeit eine IP Adresse komplett durch Nullen zu ersetzen. Die Möglichkeit die Adresse nur zu anonymisieren indem ein Teil der IP Adresse durch Nullen ersetzt wird gibt es nicht.

Diese Möglichkeit bietet ein Skript der Swiss Privacy Foundation, welches hier heruntergeladen werden kann: Anonip ist ein Tool zur Anonymisierung von IP-Adressen in Logdateien

Im Gegensatz zu vielen anderen Methoden die ich im Internet gefunden habe funktioniert diese Skript zuverlässig sowohl mit IPv4 als auch mit IPv6 Adressen.

Weiterlesen

Aufruf von Apache mod_status gibt Fehler 404 aus

Bei der Einrichtung von Munin auf einem Webserver mit Apache konnte munin nicht auf die von mod_status erzeugte Statusseite zugreifen. Ein Autoconftest für das Plugin apache_accesse ergab folgende Fehlermeldung

# /etc/munin/plugins/apache_accesses autoconf
no (apache server-status not found. check if mod_status is enabled)

Ein Test ob mod_status überhaupt aktiviert war ergab dass dieser aktiv war

# a2enmod status
Module status already enabled

Laut Apache accesslog hat Munin jedoch die richtige Adresse abgefragt

"GET /server-status?auto HTTP/1.1" 301 405 "-" "munin/2.0.19-3 (libwww-perl/6.05)"

Weiterlesen

SSL für phpMyAdmin erzwingen

Schnell kann es einem passieren, dass man sich in phpMyAdmin einloggt und beim aufrufen der Seite vergisst das https voranzustellen. Dann steht man vor der unschönen Situation, dass man gerade sein MySQL Passwort unverschlüsselt über das Internet übertragen hat.

phpMyAdmin bietet die Möglichekeit die Verwendung von SSL zu erzwingen, ohne das man die URL rewrite Funktion des Webservers bemühen muss.

Dazu einfach in der Configdatei /etc/phpmyadmin/config.inc.php am Ende folgende Zeile eintragen:

$cfg['ForceSSL'] = TRUE;

Dies führt dazu dass phpMyAdmin immer über https aufgerufen wird.


Creative Commons Lizenzvertrag
Dieser Artikel ist lizenziert unter einer Creative Commons Namensnennung 3.0 Deutschland Lizenz.


 

 

Nginx: The plain HTTP request was sent to HTTPS port

Wenn man im Configfile von Nginx nur einen Serverblock für http und https verwendet kann es bei falscher Konfiguration sein, dass Nginx folgende Fehlermeldung im Browser ausgibt:

„The plain HTTP request was sent to HTTPS port“

Dies passiert besonders leicht, wenn man sich aus den zwei getrennten Serverblöcken in der Defaultconfig einen gemeinsamen Block zusammenkopiert.

 

Weiterlesen

Apache: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

Beim Neustarten von Apache kommt jedesmal die Fehlermeldung „Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName“
Das Problem lässt sich ganz einfach beheben, indem der Servername in der httpd.conf  definiert wird. Dazu folgendes in Terminal eingeben:

sudo nano /etc/apache2/httpd.conf

und im Texteditor die Zeile

ServerName MYSERVER

hinzufügen. Anschließend mit

sudo /etc/init.d/apache2 restart

Apache neustarten. Das Problem sollte nun behoben sein.


Creative Commons Lizenzvertrag
Dieser Artikel ist lizenziert unter einer Creative Commons Namensnennung 3.0 Deutschland Lizenz.


 

 

1 2