Icinga 2: DNSBL Check mit Icinga 2 und check_rbl

Viele Mailserver überprüfen vor dem anliefern eine E-Mail, ob der versendende Server auf einer Blacklist steht. Dazu fragen sie via DNS bei einem Blacklist Provider an. Gibt dieser eine IP Adresse aus dem Bereich 127.0.0.1/24 zurück, dann steht der Server auf der Blacklist. Das Resultat: Die E-Mails werden nicht mehr angenommen. Wird der Fehler NXDOMAIN (also „nicht gefunden“) zurück geliefert ist kein Eintrag auf der Blacklist vorhanden.
Für Firmen ist ein Eintrag auf einer Blacklist nichts schönes, doch auch für private Mailserver ist so ein Check sinnvoll. Normalerweise landet man schneller auf einer Blacklist als eine Abusemeldung beim Provider eintrifft und bearbeitet wird. Sobald diese eintrifft, kann man den Provider wenigstes beschwichtigen und sagen, dass das Problem schon bekannt und hoffentlich auch schon behoben ist.

Mit den Boardmitteln check_dns oder check_dig kann man leider nicht arbeiten, da man nicht auf NXDOMAIN prüfen kann.

check_rbl

Es gib auf GitHub das Plugin check_rbl von Matteo Corti, mit dem die Prüfung möglich ist. Das Script nimmt eine Domain oder IP-Adresse und prüft sie gegen eine Liste von Blacklists. Leider wird kein CheckCommand mitgeliefert. Das CheckCommand von Markus Benning hat mir nicht gefallen, da ich dort nicht in der Lage bin verschiedene IPs gegen verschiedenen Blacklists zu checken. Deshalb habe ich es etwas angepasst: Read More „Icinga 2: DNSBL Check mit Icinga 2 und check_rbl“

HTTP Public Key Pinning mit Let’s Encrypt Zertifikaten

Es war mal wieder soweit. Drei Monate sind rum und mein Monitoring vermeldete: „You Certificate expires in 15 days“. Die Erneuerung war dank Let’s Encrypt kein Problem und innerhalb einer Minute durch. Den HTTP Header für HTTP Public Key Pinning anpassen war ein Kampf, da ich keine Dokumentation drüber hatte. Das hole ich jetzt nach.

Hashes erstellen

Für den Header braucht man die Base64 encoded SHA-256 Hashes der Zertifikate. Im HTTP Header müssen mindestens zwei Pins angeben und mindestens ein Pin darf nicht einem Zertifikat in der Chain matchen.
Andere Tutorials erstellen einen „Backup“ Certificate Signing Request. Da das ganze CSR erstellen und signieren lassen der Job vom Let’s Encrypt Client ist, gehe ich einen anderen Weg: Ich denke mir den dritten Pin einfach aus. Ganz sauber ist das nicht, jedoch geht es ohne zwei Pins nicht und es ist besser als gar kein Pinning.
Pin 1 wird vom Zertifikat an sich generiert, der benötigte zweite valide Pin wird vom Let’s Encrypt CA Zertifikat erstellt.

Der Let’s Encrypt Client speichert die Zertifikate und alle anderen benötigten Datein unter /etc/letsencrypt/live/>domain</. Bei mir also unter /etc/letsencrypt/live/blog.veloc1ty.de/.
In diesem Verzeichnis habe ich folgende Dateien: Read More „HTTP Public Key Pinning mit Let’s Encrypt Zertifikaten“

KVM: Wenig Entropie in Guests | Virtualisierter Hardware RNG

Ich habe bei der Diagnose bezüglich langsamen TLS/SSL Verbindungen festgestellt, dass die verfügbare Entropie meiner KVM Guests sehr gering war. Der Wert Betrug ungefähr 150 – 190.
Nach dem Start eines Guests konnte ich sehen, wie der Pool nur sehr langsam gefüllt wurde. Dabei ist es eigentlich kein Wunder, dass die Werte bei KVM Guests ziemlich gering ist: Die Maschinen haben im Vergleich zu physischen Servern fast keine Last oder Hardware, die gute Zufallszahlen zulassen würden.

Exkurs: Entropie und Linux

Linux hat einen Entropie-Pool, der stets mit „qualitativ hochwertige“ Zufallszahlen gefüllt sein sollte. Diesen Pool kann man via den beiden Device Files

  • /dev/random (blocking) und
  • /dev/urandom (non-blocking)

anzapfen.

Jedes Programm, das Zufallszahlen braucht, benutzt sich im Normalfall aus einem der beiden Files. Stark beansprucht wird der Entropie Pool, wenn zum Beispiel mit Kryptographie gearbeitet wird (TLS-Verbindungen, Schlüsselpaare erzeugen, usw). Read More „KVM: Wenig Entropie in Guests | Virtualisierter Hardware RNG“

CPU Upgrade

Seit dem 29.02. sitzt eine neue CPU auf dem Mainboard des Servers.
Zuvor hatte ich einen Intel Xeon E5-2603 v1 auf dem Mainboard. Nun schnurrt ein Intel Xeon E5-2670 v1 auf dem Board, den ich günstig von meinem Ex-Hoster ViralVPS gekauft habe. Insgesamt hat der Server nun 8 Cores mit 16 Threads (vorher: 4 Codes 4 Threads) mit allen Schnick Schnack, den man heutzutage braucht.

Warum der Upgrade

Die „alte“ CPU hatte nur 4 Cores mit 4 Threads und 1,8 GHz. Durch das Tor-Relay und die Folding@Home VM war der Server CPU-technisch ausgelastet. Damit aber alle meine Projekte genug Leistung erhalten musste ich upgraden.
Zuerst dachte ich, dass ich einfach eine zweite CPU vom selben Typ kaufe und dazustecken lasst. Das hätte mich weniger gekostet und hätte einer Verdopplung der Leistung entsprochen. Read More „CPU Upgrade“

Das Hotel WLAN, mein Laptop und Ich

Diese Woche war ich auf Schulung in Hannover. Das Hotel bot auf den Zimmern ein offenes und kostenloses WLAN an. Und mir juckte es richtig in den Fingern das System mal „auf Herz und Nieren“ zu testen – soweit meine H4cks0r Sk!llz das zulassen.

Analyse

Authentifizierung

Das System an sich ist ziemlich simpel aufgebaut. Der Router strahlt ein offenes, unverschlüsseltes WLAN aus und lässt keinen Traffic vor der Authentifizierung via Nutzername und Passwort durch (später dazu aber mehr). Die Login Daten erhält man beim Check-In an der Rezeption zusammen mit der Zimmerkarte.

Der Benutzername ist eine vierstellige alphanumerische Kombination und das Passwort ist immer „PC1“. Eingegeben werde die Logindaten auf einem Captive Portal. Dieses erscheint jedes mal, sobald man eine Webseite unbeachtet des Schemas (http oder https) im Browser aufruft. Traffic wird protokollunabhängig bis zur Authentifikation nicht durchgelassen.

Nach der erfolgreichen Authentifizierung setzt der Router die MAC Adresse des Geräts auf eine Whitelist und der Traffic kann frei fließen. Pro Nutzername und Passwort können mindestens 4 Geräte ins Internet (mehr hatte ich nicht zur Hand). Die Geschwindigkeit pro Gerät ist auf 250 kbit/s limitiert. Read More „Das Hotel WLAN, mein Laptop und Ich“