IT security, FreeBSD, Linux, mail server hardening, post-quantum crypto, DNS, retro computing & hands-on hardware hacks. Privater Tech-Blog seit 2003.

Kategorie: Kernel-Error-Blog (Seite 16 von 47)

Persönlicher Tech-Blog von Sebastian van de Meer — Beiträge zu IT-Security, Netzwerken, FreeBSD, Linux, Elektronik und Maker-Projekten.

TLS 1.0 und 1.1 abschalten: Postfix, Dovecot und Nginx auf TLS 1.2+ umstellen

TLS 1.0 stammt von 1999, TLS 1.1 von 2006. Beide Versionen haben bekannte Schwächen (BEAST, POODLE, fehlende AEAD-Cipher) und werden seit 2020 von keinem Browser mehr unterstützt. Qualys SSL Labs vergibt seit 2020 maximal ein B-Rating wenn TLS 1.0 oder 1.1 aktiv ist. Es gibt keinen Grund mehr, diese Protokolle anzubieten.

Postfix

In der main.cf die Mindestversion auf TLS 1.2 setzen. Die Einstellungen gelten getrennt für eingehende (smtpd) und ausgehende (smtp) Verbindungen:

# Eingehend (smtpd)
smtpd_tls_mandatory_protocols = >=TLSv1.2
smtpd_tls_protocols = >=TLSv1.2

# Ausgehend (smtp)
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_protocols = >=TLSv1.2

Die Syntax >=TLSv1.2 gibt es seit Postfix 3.6. Bei älteren Versionen muss man die alten Protokolle einzeln ausschließen: !SSLv2, !SSLv3, !TLSv1, !TLSv1.1. Wenn OpenSSL 1.1.1+ oder neuer installiert ist, wird TLS 1.3 automatisch unterstützt und bevorzugt.

Dovecot

In conf.d/10-ssl.conf:

ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
ssl_prefer_server_ciphers = yes

ssl_min_protocol gibt es seit Dovecot 2.3.15. In älteren Versionen heißt es ssl_protocols = !SSLv3 !TLSv1 !TLSv1.1. Die Cipher-Liste enthält nur AEAD-Cipher mit Forward Secrecy.

Nginx

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;

Die TLS-1.3-Cipher (TLS_AES_*) werden von OpenSSL automatisch bevorzugt und lassen sich nicht über ssl_ciphers deaktivieren. Die Reihenfolge in der Cipher-Liste gilt nur für TLS 1.2.

stunnel

Wer stunnel als TLS-Wrapper nutzt (z.B. für DNS over TLS):

options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1

Prüfen

Nach der Umstellung prüfen ob die alten Protokolle wirklich deaktiviert sind:

# TLS 1.0 testen (sollte fehlschlagen)
openssl s_client -connect smtp.example.de:25 -starttls smtp -tls1 2>&1 | grep "Protocol"

# TLS 1.2 testen (sollte funktionieren)
openssl s_client -connect smtp.example.de:25 -starttls smtp -tls1_2 2>&1 | grep "Protocol"

Für Webserver hilft Qualys SSL Labs. Wer noch einen Schritt weitergehen will: Mit ECDSA-Zertifikaten wird der Handshake schneller und mit Post-Quantum Key Exchange ist der Schlüsselaustausch auch gegen Quantencomputer abgesichert. Fragen? Einfach melden.

BGP und wie sicher ist das Internet?

Das Internet funktioniert nicht, wie euer normales Netzwerk zuhause. Es basiert in den weitesten Teilen auf BGP, dem Border Gateway Protocol. Natürlich kann es auch dabei zu Problemen kommen, mal macht ein Mensch einen Fehler, mal Hardware oder Software oder eine Regierung möchte etwas „blockieren“… Naja, oder die bösen Hacker halt.

Unter folgendem Link, werden BGP Probleme visualisiert und mit einer Historie versehen:

https://web.archive.org/web/20240420082316/http://bgpstream.com/

Klickt unbedingt auch mal auf „More detail“ bei einem Event und schaut euch das Replay an, das ist nicht nur interessant, sondern auch lehrreich. Viel besser zu verstehen, als wenn man nur die BGP Events im Log fliegen sieht!

So long..

Siehe auch: IPv4-Adressen sind aufgebraucht

Fragen? Einfach melden.

Jabber / XMPP R.I.P.

Ich habe gerade eben meinen Openfire abgeschaltet und werde ihn nicht mehr einschalten. Jabber / XMPP war eine wirklich schöne Möglichkeit der Kommunikation. Der Aufwand SPAM zu filtern und das Teil selbst zu betreiben steht aber inzwischen einfach in keinem Verhältnis mehr. Zudem hat sich Jabber nur minimal weiterentwickelt. Inzwischen ist es von vielen schönen Lösungen überholt worden.

Meine Kommunikation läuft inzwischen mehr über Matrix/Riot oder Slack Chat als über Jabber.

Siehe auch: Eigenen Jabber-Server betreiben

Fragen? Einfach melden.

Loadbalancer IP (SLB) in RackTables anlegen: Schritt-für-Schritt-Anleitung

Racktables ist zur Dokumentation seiner Assets im Rack nicht das schlechteste Tool. Es hat ganz klar seine Grenzen aber oft erfüllt es die Anforderungen.

Wie füge ich in Racktables einen Load Balancer hinzu? Vor dieser Frage stand ich vor einiger Zeit. Mein erster Anlaufpunkt war natürlich das Racktables Wiki. Leider wurde ich daraus nicht wirklich schlauer. Die google Suche: „How to add LoadBalancers to racktables“ hat mir ebenfalls nicht geholfen. Irgendwann bin ich auf den Hinweis zur User Interfaceconfiguration „IPV4LB_LISTSRC“ gestoßen. Ab da öffneten sich meine Augen.

Die Option ist im default mit einem false deaktiviert. Aktiviert man sie mit einem einfachen true, tauchen einfach alle Hardwareserver als Load Balancer unter IP SLB ==> Load balancers auf. Das ist fast gut. Fast… ja fast weil dort eigentlich nur die Load-Balancer auftauchen sollten. Da kam mir die Funktion der Tags in den Sinn. Nach diesen lässt sich bei Racktables nicht nur filtern, sondern man kann darauf aufbauend auch Dinge im Interface umorganisieren. Einfachstes Beispiel ist sicher der Tag „Poweroff“, welcher ausgeschaltete Systeme in der Rackübersicht andersfarbig darstellt, wenn man dem Tag eine andere Farbe zugewiesen hat.

Genau so bekommt man nun ebenfalls die Load balancers ins IP SLB von Racktables. Als erstes legt man also einen Tag an, der jedem Load balancer zugewiesen wird: Configuration ==> Tag tree ==> Edit tree

Nun weißt man dieses Tag dem jeweiligen Load Balancer Object zu.

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - View

Nun geht es weiter unter Configuration ==> User Interface ==> Change

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - User Interface

Dort muss die Option IPV4LB_LISTSRC so geändert werden, dass unser neues Tag in geschweiften Klammern steht. In meinem Beispiel ist es das Tag LoadBalancer und dieses findet sich wie folgt in der Konfiguration:

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - IPV4LB_LISTSRC

Das war es auch schon. Ab jetzt wird jedes Object unter Racktables ==> IP SLB ==> Load balancers auftauchen, welches das Tag LoadBalancer bekommen hat.

Screenshot der RackTables-Seite zur IP SLB-Konfiguration - Load balancers

Wenn man es einmal verstanden hat, ganz einfach oder? Viel Spaß.

Fragen? Einfach melden.

SSD Secure Erase mit FreeBSD: So löschst du deine SSD sicher

Um alle Daten einer SSD möglichst sicher zu löschen gibt es im ATA die Funktion: „ATA Secure Erase“. Möchte man nun seine SSD schnell und einfach von allen Daten befreien (dd mit Nullen ist ja eher eine schlechte und nicht funktionsfähige Möglichkeit bei SSDs), nutzt man einfach diese Funktion.

Bei einem FreeBSD sieht dieses unter optimalen Bedingungen wie folgt aus:

root@sun-wks:/usr/home/kernel # camcontrol security ada4 -s Erase -e Erase
pass7: <OCZ-AGILITY3 2.15> ATA8-ACS SATA 3.x device
pass7: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes)

You are about to ERASE ALL DATA from the following device:
pass7,ada4: <OCZ-AGILITY3 2.15> ATA8-ACS SATA 3.x device

Are you SURE you want to ERASE ALL DATA? (yes/no) yes
Issuing SECURITY_SET_PASSWORD password='Erase', user='master', mode='high'
Issuing SECURITY_ERASE_PREPARE
Issuing SECURITY_ERASE_UNIT password='Erase', user='master'

Erase Complete

Optimale Bedingungen?

Das eine oder andere BIOS „schützt“ die Festplatten vor dieser Funktion und sorgt dafür das sie nicht genutzt werden kann. Hier hilft es die Platte erst nach dem Boot anzuschließen. Um die Funktion nutzen zu können muss der SSD ebenfalls erst ein Kennwort gegeben werden. Ohne gesetztes Kennwort kann die Funktion ebenfalls nicht genutzt werden. Ich habe dieses in einem Abwasch erledigt indem ich erst das Kennwort und dann direkt die Funktion mit dem gesetzten Kennwort aufrufe (-s Erase -e Erase) Erase ist also in meinem Beispiel das gesetzte Kennwort.

Da wir gerade dabei sind… Viele SSDs habe eine Art „Selbstheilungsmodus“… Ist diese aktiviert prüft sich die SSD selbst und repariert sich, soweit möglich. Dieser Modus wird aktiviert wenn die SSD am Strom aber nicht am Datenbus angeschlossen ist. Bedeutet. SATA/SAS Kabel abziehen. Strom anschließen/einschalten und warten. In der Regel sollten SSDs nach knapp 4 Stunden mit ihrer „Selbstheilung“ fertig sein. Dieses lässt sich natürlich im Anschluss noch einmal wiederholen. Funktioniert die SSD nach zwei Durchläufen noch nicht wie gewünscht, wird sie wohl wirklich kaputt sein.

Fragen? Dann Fragen.

Siehe auch: ZFS Encryption

Fragen? Einfach melden.

Telekom SmartHome: Firmware-Updates für HomeMatic-Geräte über die CCU2

Die QIVICON Home Base vom Telekom SmartHome kann keine Firmware-Updates auf die HomeMatic-Geräte von eQ-3 aufspielen. Bei den älteren HomeMatic-Geräten war das kein Problem, Updates waren selten und betrafen keine kritischen Funktionen. Bei den neueren HomeMatic IP Geräten sieht das anders aus. Die Firmware ändert sich regelmäßig, neue Funktionen kommen dazu und Bugs werden behoben. Ein Zwischenstecker fungiert zum Beispiel erst ab einem bestimmten Firmwarestand als Repeater im Mesh-Netzwerk.

Der Update-Weg über die CCU2

Zum Updaten gibt es zwei Möglichkeiten: Einen Funk-Konfigurationsstick für USB oder die CCU2 Zentrale von eQ-3. Ich habe mir die CCU2 besorgt. Der Ablauf pro Gerät sieht so aus:

1. Gerät vom Telekom SmartHome ablernen
2. Gerät an der CCU2 anlernen
3. Firmware-Update durchführen
4. Gerät von der CCU2 ablernen
5. Gerät am Telekom SmartHome wieder anlernen

Das ist aufwendig. Für jedes einzelne Gerät. Und bei den HomeMatic IP Geräten dauert ein Firmware-Update zwischen 8 und 42 Stunden. Die Firmware ist dabei knapp über 100 KB groß. Bei den älteren HomeMatic-Geräten ist das gleiche Update in fünf Minuten erledigt. Warum der Funkweg bei den IP-Geräten so langsam ist, erschließt sich mir nicht.

Warum nicht gleich die CCU2?

Das Telekom SmartHome hat einen Vorteil der schwer wiegt: Man kann Geräte verschiedener Hersteller miteinander kombinieren. HomeMatic, Philips Hue, Schellenberg Rolladen, DECT-Steckdosen. Das können die reinen eQ-3 Lösungen wie CCU2 mit Orbylon oder pocket control nicht in dem Umfang. Dafür nimmt man den umständlichen Firmware-Update-Prozess in Kauf.

Siehe auch: Telekom SmartHome im Test: Erfahrungen mit QIVICON und Home Base​

Fragen? Einfach melden.

DNS over TLS mit Stunnel und BIND9: Eigenen DoT-Server einrichten

DNS-Abfragen laufen normalerweise im Klartext über UDP Port 53. Jeder der den Traffic mitlesen kann (ISP, Hotspot-Betreiber, Geheimdienst) sieht welche Domains aufgelöst werden. RFC 7858 definiert DNS over TLS (DoT): DNS-Abfragen über eine TLS-verschlüsselte TCP-Verbindung auf Port 853.

BIND9 konnte zum Zeitpunkt dieses Beitrags kein natives DoT. Die Lösung: stunnel als TLS-Wrapper vor den BIND stellen. stunnel terminiert die TLS-Verbindung auf Port 853 und leitet die entschlüsselten DNS-Pakete an BIND auf Port 53 weiter.

Stunnel-Konfiguration

Unter FreeBSD liegt die Konfiguration in /usr/local/etc/stunnel/conf.d/. Für IPv4 und IPv6 jeweils eine Sektion:

# /usr/local/etc/stunnel/conf.d/dnstls.conf

[dns4]
accept = 853
connect = 127.0.0.1:53
cert = /usr/local/etc/stunnel/ssl/dns.crt
key = /usr/local/etc/stunnel/ssl/dns.key
CAfile = /usr/local/etc/stunnel/ssl/ca.crt

[dns6]
accept = :::853
connect = ::1:53
cert = /usr/local/etc/stunnel/ssl/dns.crt
key = /usr/local/etc/stunnel/ssl/dns.key
CAfile = /usr/local/etc/stunnel/ssl/ca.crt

accept ist der Port auf dem stunnel lauscht (853 = DoT-Standard). connect ist der lokale BIND9. Das Zertifikat muss für den Hostnamen des DNS-Servers gültig sein, sonst schlägt die Validierung auf der Client-Seite fehl.

Testen

TLS-Verbindung prüfen:

openssl s_client -connect ns1.kernel-error.de:853

In der Ausgabe sollte Verify return code: 0 (ok) stehen und eine TLS-1.2- oder TLS-1.3-Verbindung angezeigt werden.

DNS-Abfrage über TLS mit getdns_query (in den FreeBSD-Ports als getdns):

getdns_query @ns1.kernel-error.de -s -a -A -l L www.kernel-error.de AAAA

Die Option -l L erzwingt TLS. Bei Erfolg kommt ein JSON-Objekt mit "status": GETDNS_RESPSTATUS_GOOD und der aufgelösten Adresse zurück. Alternativ kann man mit kdig (aus dem Paket knot-utils) testen:

kdig +tls @ns1.kernel-error.de www.kernel-error.de AAAA

Clients

Android 9+ hat DoT nativ eingebaut (Einstellungen → Netzwerk → Privates DNS). Dort den Hostnamen des eigenen DNS-Servers eintragen. Unter Linux kann systemd-resolved DoT, oder man nutzt stubby als lokalen DoT-Proxy.

Weiterentwicklung

Siehe auch: RFC 7858 – DNS over Transport Layer Security, DNS over TLS (DoT) mit BIND, Stunnel und Android 9 einrichten, DNS over TLS mit BIND, Stunnel und Android 9: Eigener DoT-Server, BIND auf FreeBSD: DoT & DoH einrichten mit Views, IP‑Trennung und Testplan für IPv4/IPv6.

Neben DoT gibt es inzwischen auch DNS over HTTPS (DoH), das DNS-Abfragen über HTTPS auf Port 443 tunnelt. DoH hat den Vorteil, dass es durch Firewalls und Proxies nicht blockiert werden kann, weil es wie normaler HTTPS-Traffic aussieht. Mein DNS-Resolver dns.kernel-error.de bietet inzwischen beides an. Fragen? Einfach melden.

Arbeit im Kindergarten

Es gibt Tage, da fragt man sich ob man wirklich in einem IT-Unternehmen arbeitet oder doch im Kindergarten gelandet ist. Heute war so ein Tag.

Kollektivstrafe: Kein Kaffee

Die Kaffeemaschine ist abgeschaltet worden. Nicht kaputt, nicht leer, abgeschaltet. Weil eine unserer Küchen nicht ordentlich gehalten wurde. Dreckiges Geschirr neben der Spüle statt in der Spülmaschine. Jemand hat seinen Teller einfach auf die Arbeitsplatte gestellt und ist gegangen. Wie ein Kleinkind das erwartet, dass Mama hinterherräumt.

Die Reaktion der Geschäftsführung: Kollektivstrafe. Kein Kaffee mehr für den Rest des Tages. Für alle. Weil ein paar Leute sich benehmen wie Fünfjährige, kriegen alle keinen Kaffee. Man sollte doch wohl in der Lage sein, das schmutzige Geschirr in die Spülmaschine zu stellen. Die steht drei Schritte neben der Spüle. Drei Schritte.

Ich sitze also an meinem Schreibtisch, die Server laufen, die Tickets kommen rein und ich habe keinen Kaffee. Weil irgendein Kollege seinen Teller nicht wegräumen kann. Der Admin in mir sagt: Monitoring auf den Geschirrspüler, Alert wenn Kapazität unter 50%, automatisches Ticket an den Verursacher. Problem gelöst.

Stattdessen gibt es Kollektivstrafe. Ich bin hier echt im Kindergarten.

Falls jemand weiß wie man Kollegen zum Spülmaschine-Benutzen erzieht, kann man mich gerne fragen. Ich bin für jeden Tipp dankbar. Außer Kollektivstrafen.

« Ältere Beiträge Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑