Die meisten Webdienste, die eine Zwei-Faktor-Authentifizierung anbieten, unterstützen das TOTP (Time-based one time password) -Verfahren. Dabei bleiben die Codes nur eine gewisse Zeit lang gültig und ändern sich ständig. Zugriff auf die Codes bekommt man bei den Yubikeys nur über eine dritte Software, die mit dem Yubikey kommuniziert. Das liegt daran, dass der Yubikey keine eigenständige Code-Berechnung ausführen kann, weil ihm für eine eigene Systemuhr die notwendige Energieversorgung fehlt. Die Berechnung des Codes geschieht immer im Yubikey selbst – die geheimen Schlüssel verlassen also niemals den Yubikey. Die Clientprogramme liefern dem Yubikey nur die Systemzeit, holen die fertig generierten Einmalcodes ab und zeigen sie an. „Yubikey Authenticator“ heißt der TOTP Client für den Yubikey, den es für Android, Linux, Windows und MacOS gibt.
TOTP mit Yubikey auf Smartphone und Desktop
Let’s Encrypt Zertifikate im Manual Mode abholen
Let’s Encrypt ist auf das automatische Abholen und Einrichten von TLS-Zertifikaten ausgelegt. Für Anwender, die mehr Kontrolle über den Prozess haben wollen, gibt es aber auch einen „Manual Mode“, der folgende Vorteile hat:
- Die Zertifikate können von jedem Rechner aus abgeholt werden (Der LE Client muss nicht auf dem Zielserver laufen)
- Der Webserver muss nicht wegen des LE Clients kurzzeitig abgeschaltet werden.
Und so funktioniert’s: Auf von einem beliebigen Rechner aus kann mit dem Let’s Encrypt ACME Client eine Zertifikatsanfrage abgeschickt werden. Zur Bestätigung des Domainbesitzes müssen in einem bestimmten Unterverzeichnis des Ziel-Webservers (Domain-Ziel) Dateien mit einem bestimmten Inhalt hinterlegt werden (=> Challenge-Dateien). Der ACME Server überprüft daraufhin, ob die Dateien unter den jeweiligen Domains erreichbar sind und der Inhalt korrekt ist. Wenn das der Fall ist, ist der Domainbesitz bestätigt und die Zertifikate werden ausgehändigt.
PHP-Anwendungen unter eigenen Benutzern ausführen
Kaum einer meiner Server läuft nur mit einer einzigen Anwendung. Der Webserver, auf dem dieser Blog läuft, beherbergt nicht nur thomas-leister.de, sondern auch noch zwei andere Blogs und weitere PHP-basierte Webdienste, die ich zur Verfügung stelle. Aus Sicht eines Hackers ein lohnenswertes Ziel: Wird über eine PHP-Anwendung wie z.B. einen schlecht gepflegten WordPress-Blog Zugriff auf das Dateisystem des Servers erlangt, kann der Hacker nicht nur die unsichere Webapplikation angreifen, sondern auch alle anderen Anwendungen, die unter dem PHP-User laufen. Aus diesem Grund ist es sinnvoll, die PHP-Anwendungen etwas voneinander abzuschotten, sodass ein Angreifer von der einen PHP-Anwendung aus keine andere PHP-Anwendung beeinträchtigen kann. Dies erreicht man, indem man für jede Anwendung einen eigenen User anlegt, der PHP ausführt. Die Verzeichnisrechte werden so gesetzt, dass nur der jeweils zugedachte PHP-User Zugriff auf die Anwendungsdateien hat und keine weiteren Änderungen im Dateisystem vornehmen kann.
Anleitung für Let’s Encrypt: Kostenlose TLS Zertifikate für alle
Das Let’s Encrypt Projekt (hinter dem unter anderem Mozilla, Facebook und Cisco als Sponsoren stecken) ist gestern in den Public Beta Betrieb übergegangen. Von nun an können nach belieben kostenlose TLS (aka SSL)-Zertifikate für die eigenen Domains erstellt werden. Für den Erhalt eines Zertifikats sind nur wenige, einfache Schritte erforderlich, die ich im Folgenden erkläre:
Fehlerbehebung: Plötzliche PHP-FPM Abstürze mit Nginx
Auf meinen Server setze ich mittlerweile nur noch den Nginx-Webserver ein. PHP gibt es dafür nicht als Modul (so wie bei Apache), sondern es läuft als Extra-Prozess mit Socket, über den Nginx mit dem PHP-Prozess kommuniziert. In den letzten Monaten hatte ich immer wieder Probleme mit PHP. Der PHP-FPM Prozess verabschiedete sich immer wieder spontan und ohne Fehler in den Logs. Nach viel Recherche bin ich schließlich auf den rettenden Tipp gekommen: Man solle doch mal APC für PHP deaktivieren.
Dazu wird in der Datei /etc/php5/fpm/conf.d/20-apcu.ini die Zeile „extension=apcu.so“ mit einem vorangestellten Semikolon „;“ einfach auskommentiert und der PHP-FPM Service neu gestartet.
Seit der Deaktivierung von APC habe ich keine PHP-Abstürze mehr und der Webserver tut seinen Job wieder zuverlässig.
Windows folgt symbolischen Links in Samba Freigaben nicht
Da in unserem Haus leider nicht jeder einen Linux-Rechner hat, sondern auch Windows 7 noch im Einsatz ist, beherrscht unser Storage-Server im Keller nicht nur den Dateizugriff via sftp, sondern auch Windows-Freigaben via Samba. Gestern musste ich feststellen, dass die Windows-Rechner auf einen bestimmten Ordner innerhalb einer Freigabe nicht zugreifen konnte, obwohl die Zugriffsrechte für den entsprechenden Benutzer einwandfrei waren. Der Zugriffsfehler kam daher, dass das Folgen von symbolischen Links in Samba per default nicht aktiviert ist.
Ubuntu Server: Logs in Echtzeit auslesen mit Log.io
Mit der freien Node.js Anwendung Log.io könnt ihr eure Serverlogs in Echtzeit auslesen und auf einem Web-Frontend gesammelt anzeigen lassen. Einfache Filter sind ebenfalls verfügbar. Die Basisinstallation ist schnell erledigt und auch für Einsteiger kein Problem.
Postfix: Catch-All für nicht existierende Postfächer [Update]
Catch-All Aliase erlauben es, alle eingehenden E-Mails auf eine bestimmte Domain an ein oder mehrere einzelne Postfächer weiter zu leiten. Man kann sich das vorstellen wie einen Trichter: Egal an welches Postfach einer Domain eine E-Mail verschickt wird – sie landet letztendlich immer bei einer bestimmten definierten Adresse.
Das kann man sich zunutze machen, wenn man beispielsweise E-Mails an nicht (mehr?) existierende Postfächer abfangen und an ein einzelnes Sammelpostfach weiterleiten will.