Verwendete TLS Version und Ciphersuite in NGINX access Log erfassen

Ich wollte wissen welche TLS Versionen für die Aufrufe von techgrube.de verwendet werden. Dabei ging es mir darum herauszufinden ob es nötig ist die ältere Version TLSv1 noch zu unterstützen, oder ob nur noch Version 1.2 zum Einsatz kommt. Leider loggt NGINX diese Information standardmäßig nicht.

Nach kurzem suchen habe ich die Lösung auf serverfault.com gefunden. Damit die TLS-Version und die verwendete Ciphersuite in das access Log aufgenommen wird muss ein benutzerdefiniertes Log-Format erstellt werden welches die folgende Zeile enthält.

'$ssl_protocol/$ssl_cipher '

Weiterlesen

Munin Master-Node Verbindung über TLS herstellen

Den meisten dürfte Munin wohl bekannt sein, da es sich um ein Projekt handelt welches schon lange existiert. Munin ist eine Software zum Überwachen von Computern, besonders von Servern. Munin ist durch Plugins erweiterbar, kann aber bereits standardmäßig eine große Anzahl von Informationen sammeln, wie z.B. Prozessorauslastung, Festplattenbelegung, Netzwerktraffic usw.

Es eignet sich dabei sowohl zum Überwachen eines einzelnen Servers oder einer Vielzahl von Servern. Werden mehrere Maschinen überwacht, so fungiert ein Server als sogenannter Master. Auf diesem werden die Informationen von allen Maschinen gesammelt und ausgewertet. Die anderen Server werden als Nodes bezeichnet. Die Nodes sammeln nur Daten auf der lokalen Maschine und stellen sie dem Master zur Verfügung.

Standardmäßig fragt Munin nur den lokalen Rechner ab. Durch hinzufügen zusätzlicher Nodes in der /etc/munin/munin.conf werden auch die Informationen der entfernten Nodes abgeholt.

Weiterlesen

Zugriffsrechte auf gemeinsame Dateien für mehrere User mit bindfs festlegen

Ich stand an mehreren Stellen vor dem Problem, auf einen gemeinsamen Ordner und Dateien mit verschiedenen Benutzern zugreifen zu wollen. Aus Sicherheitsgründen sollten allerdings nicht alle Benutzer Lese- und Schreibrechte haben, sondern ich wollte die Rechte gerne feiner festlegen.

Das Problem

Konkret hatte ich zwei Fälle.

  1. Lokale User sollten über SAMBA Shares lesend und schreibend auf die Files zugreifen können.
  2. Ein lokal installierter Webserver soll nur lesend auf die Dateien zugreifen können
  3. Ein externer Server soll über einen SSH Zugang lesen und schreiben können.

im zweiten Fall sollte

  1. ein Webserver lesend und schreibend auf ein Verzeichnis und Dateien zugreifen können
  2. ein weiterer Benutzer lesend und schreibend auf das selbe Verzeichnis und Dateien zugreifen.

Grundsätzlich lassen sich beide Fälle lösen, indem alle Benutzer die auf das Verzeichnis lesend und schreibend zugreifen können sollen in eine Benutzergruppe gepackt werden und diese als primäre Gruppe festgelegt wird. Dies war auch meine ursprüngliche Lösung.

Weiterlesen

OpenVPN Server mit IPv4 und IPv6

Ich nutze schon länger einen eigenen VPN Server auf Basis von OpenVPN um meinen Internettraffic in öffentlichen, nicht vertrauenswürdigen Netzwerken zu verschlüsseln. Dieser hat allerdings nur einen IPv4 Tunnel unterstützt. Meine wenig zufriedenstellende Lösung für dieses Problem war immer das deaktivieren von IPv6 in solchen Situationen, um sicherzustellen dass keine Daten über die IPv6 Verbindung am VPN vorbei gelangen.

Da ich diese Situation für nicht akzeptabel hielt habe ich schon länger versucht den Server so zu konfigurieren dass der Client auch eine IPv6 Adresse erhält und IPv6 Traffic durch den VPN Tunnel geleitet wird.

Der einfachste Weg dies zu realisieren war lange Zeit die Nutzung der OpenVPN kompatiblen VPN Software pritunl. Pritunl lässt sich schnell einrichten, lässt sich einfach über ein Webinterface konfigurieren und unterstützt auch IPv6.
Allerdings war Pritunl bei mir nie so zuverlässig wie mein alter OpenVPN Server. Außerdem vergibt Pritunl keine öffentlichen IPv6 Adressen an die Clients sondern, sondern private und leitet den Traffic via NAT über die öffentliche Adresse des Servers. Aus diesem Grund war ich mit Pritunl leider auch nicht zufrieden.

Meine Wunsch war der Aufbau eines Tunnels über IPv4 (da eine IPv4 Verbindung i.d.R. immer vorhanden ist). Außerdem sollte darüber der IPv6 Traffic getunnelt werden und die Clients sollen eine öffentliche IPv6 Adresse aus dem /64 des Servers erhalten

Weiterlesen

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

Ubuntu Homeserver-Virtualisierung mit KVM und QEMU

Seit mehreren Jahren betreibe ich einen Homeserver auf Ubuntu Server Basis, ähnlich wie im Artikel Selbstgebauter Homeserver/NAS mit Ubuntu Server beschrieben. Im Gegensatz zum Artikel befinden sich die Daten jedoch auf einem verschlüsselten Laufwerk. Dies bedeutet dass ich beim Booten des Rechners immer das Passwort zum entschlüsseln der Laufwerke über eine am Homeserver angeschlossene Tastatur eingeben muss. Es hat außerdem den Nachteil dass bei einem unbeabsichtigten Neustart, z.B. aufgrund einer Stromschwankung, der Homeserver solange nicht erreichbar ist bis das Passwort eingegeben wurde. Wenn ich mich in diesem Fall außer Haus befinde kann ich von unterwegs nicht auf meine Daten zugreifen.

Aus diesem Grund habe ich mich als Wochenendprojekt mit der Virtualisierung eines Homeservers beschäftigt. Hierbei wurde ein unverschlüsseltes Hostsystem eingerichtet, was auch nach einem Stromausfall wieder vollständig starten kann. Darauf wurde eine Virtuelle Maschine erstellt, deren virtuelles Laufwerk bei der Installation verschlüsselt wurde. Über eine virtuelle Maschinenverwaltung kann man dann von einem beliebigen Rechner aus das Festplattenpasswort für den Homeserver während des Bootprozesses eingeben.

Das Setup hat außerdem den Vorteil dass nach Bedarf einfach zusätzliche virtuelle Computer erstellt werden können, um z.B. Software zu testen oder ein anderes Betriebssystem zu nutzen.

Zur Virtualisierung habe ich KVM verwendet und zur Verwaltung den virt-manager.

Weiterlesen

Nextcloud/Owncloud File Cache aktualisieren

Ich hatte das Problem das meine Nextcloud-Installation Datein, welche nicht über das Webinterface hochgeladen wurden, sondern direkt auf dem Server erzeugt wurden nicht im Webinterface angezeigt hat.

Wenn Nextcloud/Owncloud vorhandene Dateien ignoriert hilf das manuelle aktualisieren des file caches mit folgendem Befehl:

sudo -u www-data php /pfad/zu/nextcloud/console.php files:scan --all

Je nach Größe der Nextcloud Installation kann der Scan eine ganze Weile dauern. Anschließend sind jedoch auch die bisher nicht erkannten Dateien im Webinterface sichtbar.

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

Postfix mit Domainfactory als Smarthost konfigurieren

Im Artikel Postfix mit Gmail als Smarthost konfigurieren habe ich beschrieben wie man auf einem Ubuntu Server Postfix installiert und so konfiguriert dass der Computer mit Postfix über den Google Mailserver Emails verschicken kann. Dies ist sinnvoll um sich bei bestimmten Ereignissen automatisch informieren zu lassen.

Dieser Beitrag zeigt, ergänzend zum Artikel Postfix mit Gmail als Smarthost konfigurieren wie die Konfiguration aussehen kann um über seinen bei Domainfactory registrierte Domain bzw. Emailadresse Mails via Postfix zu versenden.

Weiterlesen

Teil 8 – Selbstgebauter Homeserver/NAS: Backup

Dieser Artikel ist Teil der Reihe Selbstgebauter Homeserver/NAS mit Ubuntu Server


Da auf dem Homeserver, bzw. NAS alle wertvollen Daten gespeichert werden, sollen diese natürlich auch entsprechend gesichert werden. Vor einem Festplattenausfall schützt zwar das RAID, nicht jedoch vor versehentlichem, oder absichtlichem löschen von Dateien.

In diesem Artikel beschreibe ich zwei Backuplösungen, die beide parallel eingesetzt werden.

Einerseits findet ein tägliches, automatisches und verschlüsseltes Backup auf einen Cloudspeicher statt. Dieses ist stets aktuell und sichert außerdem auch den Zugriff auf die Dateien im Falle eines Wohnungsbrandes oder Diebstahls der eigenen Hardware. Durch die oftmals eingeschränkte Internetanbindung Zuhause und die Kosten für Cloudspeicherplatz ist es evtl. sinnvoll hier nicht alle Dateien zu sichern, und z.B. große Videodateien von der Cloudsicherung auszunehmen.

Zusätzlich werden ALLE Daten in unregelmäßigen Abständen manuell auf eine externe Festplatte gesichert. Diese Backup ist somit nicht immer ganz aktuell, enthält jedoch alle Dateien und ist im Normalfall nicht an einen Rechner angeschlossen. Dies schützt vor einem Amok laufenden Backupprogramm, sowie vor böswilligem löschen der Backups durch eine Person die sich unberechtigten Zugriff auf unser, oder das Cloudsystem verschafft haben könnte.

Das Cloudbackup

Hierfür nutze ich Duplicati 2.0, welches noch in der Preview Phase ist, bei mir jedoch seit vielen Monaten zuverlässig seinen Dienst tut. Das Programm unterstützt die Verschlüsselung von Backups, sowie eine Vielzahl an Speicheranbietern wie Amazon S3, Dropbox, Google Drive, Microsoft Azure, Microsoft One Drive oder den Zugriff via WebDAV, SSH oder das unsichere FTP. Das Backupprogramm lässt sich entweder über die Kommandozeile, oder bequem im Browser über ein Webinterface steuern.

Weiterlesen

1 2 3 7