IT-Blog von Sebastian van de Meer

Kategorie: IT-Security (Seite 14 von 14)

Notizen & Praxis zur IT-Sicherheit – von Responsible Disclosure bis Härtung.

DKIM einrichten: E-Mails signieren und verifizieren mit rspamd und Postfix

DKIM (DomainKeys Identified Mail, RFC 6376) signiert ausgehende E-Mails kryptografisch. Der empfangende Mailserver prüft die Signatur über einen DNS-Record. Stimmt sie nicht, ist die Mail manipuliert oder stammt nicht vom angegebenen Absender. DKIM ist neben SPF und DMARC einer der drei Bausteine moderner E-Mail-Authentifizierung.

Wie DKIM funktioniert

Der sendende Mailserver berechnet einen Hash über definierte Header-Felder und den Body der E-Mail, verschlüsselt diesen Hash mit seinem privaten Schlüssel und hängt das Ergebnis als DKIM-Signature-Header an die Mail. Der empfangende Server holt den öffentlichen Schlüssel per DNS-Abfrage (selektor._domainkey.domain.de), entschlüsselt die Signatur und vergleicht den Hash. Stimmt er überein, ist die Mail authentisch und unverändert.

DKIM-Schlüssel erstellen

RSA mit 2048 Bit ist der Standard. 1024 Bit gilt seit Jahren als zu schwach, nicht mehr verwenden. Ed25519-Schlüssel sind kompakter und schneller, werden aber noch nicht von allen Empfängern unterstützt. Wer auf Nummer sicher gehen will, signiert mit beiden (Dual Signing).

# RSA 2048 Bit (Standard, universell unterstützt)
openssl genrsa -out /var/db/rspamd/dkim/2026.key 2048
chmod 640 /var/db/rspamd/dkim/2026.key
chown _rspamd:_rspamd /var/db/rspamd/dkim/2026.key

# Öffentlichen Schlüssel extrahieren (für den DNS-Record)
openssl rsa -in /var/db/rspamd/dkim/2026.key -pubout -out /var/db/rspamd/dkim/2026.pub

Der Selektor (hier 2026) ist frei wählbar. Gängige Konvention: Jahr oder Monat als Selektor, das erleichtert die Key-Rotation.

DNS-Record veröffentlichen

Der öffentliche Schlüssel wird als TXT-Record im DNS veröffentlicht. Der Recordname folgt dem Schema selektor._domainkey.domain.de:

2026._domainkey.kernel-error.de. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq...langer-Base64-String...IDAQAB"

Den Base64-String aus der .pub-Datei nehmen, ohne Header/Footer-Zeilen und Zeilenumbrüche, alles in eine Zeile. Bei BIND-Zonefiles auf die 255-Zeichen-Grenze pro TXT-String achten. Längere Schlüssel müssen in mehrere Strings aufgeteilt werden (BIND macht das automatisch, wenn man den Record in Anführungszeichen setzt).

rspamd als DKIM-Signer konfigurieren

rspamd bringt DKIM-Signing und -Verification von Haus aus mit, kein zusätzliches Paket nötig. Die DKIM-Signing-Dokumentation beschreibt alle Optionen. Für eine einfache Konfiguration mit einem Schlüssel pro Domain:

# /usr/local/etc/rspamd/local.d/dkim_signing.conf

allow_username_mismatch = true;

domain {
    kernel-error.de {
        path = "/var/db/rspamd/dkim/2026.key";
        selector = "2026";
    }
}

# Nur lokal eingelieferte Mails signieren (SASL-authentifiziert)
sign_authenticated = true;
sign_local = true;

Nach einem service rspamd reload signiert rspamd alle ausgehenden Mails. Die Verification eingehender Mails ist standardmäßig aktiv. Das DKIM-Modul läuft automatisch und fließt in den rspamd-Score ein. Wer rspamd auch für automatisches Spam/Ham-Lernen nutzt, hat damit eine Lösung für beides.

Alternative: opendkim

Wer kein rspamd einsetzt, kann opendkim als Milter in Postfix einbinden. Die Konfiguration ist etwas aufwändiger (eigener Daemon, Socket, Milter-Einbindung in main.cf), funktioniert aber zuverlässig. Die Schlüsselerstellung und DNS-Konfiguration sind identisch.

DKIM testen

Ob der DNS-Record korrekt veröffentlicht ist:

# DNS-Record abfragen
dig TXT 2026._domainkey.kernel-error.de +short

# Mit rspamd testen (wenn lokal installiert)
rspamadm dkim_keygen -d kernel-error.de -s 2026 -k /var/db/rspamd/dkim/2026.key --check

Den einfachsten Funktionstest macht man, indem man eine Mail an eine Adresse bei Gmail oder Outlook schickt und dort die Header prüft. Im Header der empfangenen Mail steht dann:

Authentication-Results: mx.google.com;
    dkim=pass header.d=kernel-error.de header.s=2026

dkim=pass bedeutet: Signatur gültig, Schlüssel im DNS gefunden, Hash stimmt überein.

Key-Rotation

DKIM-Schlüssel sollten regelmäßig getauscht werden. Einmal pro Jahr ist ein guter Rhythmus. Der Ablauf:

  • Neuen Schlüssel mit neuem Selektor erstellen (z.B. 2027)
  • Neuen DNS-Record veröffentlichen
  • rspamd auf den neuen Selektor umstellen
  • Alten DNS-Record noch 30 Tage stehen lassen (für Mails die noch in Queues liegen)
  • Alten Record löschen

Durch die Selektoren können alter und neuer Schlüssel parallel im DNS existieren. Empfänger prüfen immer den Selektor aus dem DKIM-Signature-Header, es gibt keine Unterbrechung.

DKIM allein reicht nicht

DKIM beweist nur, dass eine Mail von einem bestimmten Schlüssel signiert wurde, nicht dass der Absender im From:-Header berechtigt ist, diese Domain zu nutzen. Dafür braucht es die anderen Bausteine:

  • SPF — definiert per DNS, welche IP-Adressen für eine Domain Mails versenden dürfen
  • DMARC — verknüpft SPF und DKIM mit einer Policy: Was soll der Empfänger tun, wenn beides fehlschlägt?
  • DANE/TLSA — sichert den Transportweg per DNSSEC ab

Erst alle drei zusammen (SPF, DKIM und DMARC) ergeben eine vollständige E-Mail-Authentifizierung. Fragen? Einfach melden.

Linux-Firewall mit iptables und Traffic Shaping: Aufbau und Konzepte

Hinweis: Dieses Script stammt aus 2009 und nutzt iptables auf einem Debian mit Kernel 2.4. Die Konzepte sind zeitlos, aber die Umsetzung ist veraltet. Heute nimmt man nftables statt iptables. Trotzdem: Wer versteht was hier passiert, versteht auch nftables.

Das Setup

Dedizierte Firewall-Maschine mit drei Netzwerkkarten. Ein Interface zum Internet (PPPoE), zwei für interne Netze mit unterschiedlichen Berechtigungen. Default-Policy auf allen Chains: DROP. Alles was nicht explizit erlaubt ist, wird verworfen.

Grundstruktur

#!/bin/bash

# Module laden
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# Tabellen leeren
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default: Alles verwerfen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Custom Chains für Logging

Eigene Chains für sauberes Logging. Jedes verworfene Paket wird mit Prefix geloggt bevor es gedroppt wird:

# MY_REJECT: Protokollieren und zurückweisen
iptables -N MY_REJECT
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable

# MY_DROP: Portscans stillschweigend verwerfen
iptables -N MY_DROP
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
iptables -A MY_DROP -j DROP

Stealth Scan Detection

Ungültige TCP-Flag-Kombinationen erkennen und verwerfen. Kein normaler Client setzt SYN+FIN gleichzeitig oder schickt ein Paket ohne Flags:

# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
# SYN und FIN gleichzeitig
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
# SYN und RST gleichzeitig
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

Connection Tracking und NAT

Stateful Firewall: Bestehende und zugehörige Verbindungen durchlassen, neue nur aus dem internen Netz erlauben. NAT per MASQUERADE für den Internetzugang:

# Loopback erlauben
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Ausgehend: Alles erlauben
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Forwarding: Neue Verbindungen nur von innen
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# NAT für interne Netze
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

Traffic Shaping mit tc

Mit tc (traffic control) und iptables -t mangle lässt sich die Bandbreite pro Client oder Netz begrenzen. iptables markiert die Pakete, tc ordnet sie in Queues ein:

# HTB Queueing Discipline auf dem internen Interface
tc qdisc add dev eth2 root handle 1:0 htb default 10
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 150kbit ceil 250kbit
tc filter add dev eth2 parent 1: prio 0 protocol ip handle 1 fw flowid 1:1

# Pakete per iptables markieren
iptables -t mangle -A FORWARD -s 192.168.100.0/24 -j MARK --set-mark 1

Kernel-Hardening

Am Ende des Scripts werden Kernel-Parameter gesetzt die über die Firewall hinausgehen:

# SYN-Cookies gegen SYN-Flood
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Source-Routing deaktivieren
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route; done

# Redirects ignorieren
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects; done

# Martian-Pakete loggen
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians; done

# ICMP-Ping ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

# TCP-FIN-Timeout gegen DoS
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

Die Konzepte aus diesem Script gelten unverändert: Default DROP, Stateful Tracking, Custom Chains für Logging, Stealth Scan Detection, Kernel-Hardening. Nur die Syntax hat sich geändert. Wer heute eine Linux-Firewall baut, nimmt nft statt iptables und erspart sich die Modprobe-Zeilen. Für IPv6 braucht man eine eigene Regelkette, damals mit ip6tables, heute in nftables integriert.

Fragen? Einfach melden.

Wlan-Sicherheit

Veraltet: Dieser Beitrag stammt von 2009 und beschreibt WEP-Cracking mit einem Sharp Zaurus. WEP wird seit über einem Jahrzehnt nicht mehr eingesetzt, WPA2/WPA3 sind Standard. Die Konzepte (Monitoring, Deauthentication, Handshake-Capture) gelten grundsätzlich noch, die gezeigten Tools und Hardware sind aber veraltet.

Wie finde ich heraus ob mein Wlan sicher ist? (Bilder werden beim Anklicken gross.) Hier möchte ich die möglichen „Angriffsmethoden“ zu einem Wlan beschreiben. Am Ende wird jedem Sysadmin dann selbst auffallen, welche Bereiche man am besten wie schützen sollte. Es kommt immer wieder vor, dass Angestellte in der Firma einen AccessPoint aufstellen. Dieses ohne den Admin darüber zu informieren. Was natürlich ein grosses Sicherheitsproblem ist. Daher werde ich zum Anfang erst einmal beschreiben, wie es überhaupt möglich ist ein Wlan zu finden. Alle meine Beschreibungen werden sehr grob ausfallen. Wer sich wirklich mit diesem Thema beschäftigen möchte sollte sich besser selbst mit den Einzelheiten auseinandersetzen. Anhand folgender Ausrüstung, welche ich selbst besitze, werde ich die Beschreibung und meine Beispiele machen. Sharp Zaurus PDA for WLAN security testing Um mich nicht schon beim Suchen mit einem grossen und auffälligen Notebook herumschlagen zu müssen habe ich den Sharp Zaurus SL-5500G mit einer SanDisk CompactFlash 802.11b Low Power Wireless LAN Card. Die Wlan Karte braucht sehr wenig Strom und hat einen Prism II-Chip verbaut. Will man eine Wlan-Karte, welche ohne Probleme mit Linux zusammenarbeiten, sollte man auf diesen Chip achten. Mit Hilfe von meinem kleinen Zaurus kann ich nun sehr bequem und unauffällig durch die Gegend laufen und nach WLANs ausschau halten. Habe ich dort mit Hilfe vom Wellenreiter ein Funknetzwerk gefunden, bekomme ich gleich einige wichtige Informationen. Diese helfen mir dann dabei das Wlan einzuordnen. Hat man ein Netz gefunden, welches interessant ausschaut (meist schon an der SSID zu erkennen), ist es natürlich angenehmer mit einem Notebook zu arbeiten. Auch die Möglichkeiten sind hier grösser. Jetzt gibt es aber wieder Probleme. Mit einem Notebook in der Hand fällt man auf. Man muss sich also in eine Ecke verdrücken. Meist leidet der Empfang darunter. Sitzt man im Auto schirmt das Metall sofort alles ab. Darum gibt es so etwas: WLAN antenna for extended signal reception Links ist ein Standfuss mit Magnet. Dieser hält auch bei 50km/h noch auf dem Autodach. Auf diesen wird nun die Antenne (Mitte) geschraubt. Dieses kann man nun ohne Probleme in die Orinoco Gold PCMCIA-Karte (rechts) stecken, hier ist auch ein Prism II Chip verbaut. Fertig….. Der Empfang ist einfach nur geil. Egal wo man nun genau sitzt! Jetzt fehlt nur noch ein Notebook. Notebook running WLAN security tools Ich nutze ein Fujitsu Siemens LifeBook E 7110! Linux arbeiten mit allen Komponenten in diesem Notebook ohne Probleme und gebastel zusammen. Um Funknetzwerke zu finden, muss die Wlan-Karte in den Monitor Mode gesetzt werden. Im Monitor Mode nimmt die Karte alle Packet an. Egal aus welchem Netz sie kommen und egal für wen sie bestimmt sind. Der Standart Linux-Kernel kann die Karte nicht in den Monitor Mode setzen. Dieser muss also gepatch werden oder es muss ein passendes Kernelmodul erstellt werden. Am einfachsten geht es so: 0. Mit iwpriv schauen ob der eigene Kernel vielleicht schon gepatcht wurde! 1. Quellen des aktuellen Kernels installieren. 2. gcc installieren. 3. Die aktuelle Konfiguration des Kernels ins root der Kernelquellen legen. Unter Suse: zcat /proc/config.gz > .config Als Root unter /usr/src/linux 4. Saug dir hier die Datei orinoco-0.13e-SN-5.tar.bz2 5. Datei schön entpacken! 6. Als Root-User folgendes im root des Kernelmodules tippern: make modules; make install 7. alle Dateien mit der Endung ko in /lib/modules/dein-aktueller-kernel/drivers/net/wireless kopieren. Vorher Sicherung davon machen, da du einiges überschreiben musst! 8. Neustarten oder die Module entladen und laden. Jetzt sollte nach der Eingabe von „iwpriv“, beim Teil der Wlan-Karte der Monitor Mode auftauchen. Um mit dem Notebook nun nach Wlans zu suchen, nutzt man am besten das Programm Kismet. Kismet wireless network scanner interface Dieses sollte vorher noch konfigurieren werden;-). Es gibt unter /etc/kismet/ die Datei: kismet.conf. In dieser müssen wir zwei Änderungen vornehmen. Beim Punkt „suiduser=“ tragen wir hinter dem = unseren Usernamen ein mit dem wir auf der Linux Kiste arbeiten. Am Punkt „source=“ tragen wir hinter dem = folgendes ein: orinoco,eth1,orinocosource Wobei wir eth1 natürlich gegebenenfalls gegen unsere Wlan-Karte austauschen! Ein „sudo kismet“ in der Userkonsole sollte nun das Programm starten und sogleich nach Netzen suchen. Haben wir eines gefunden und wollen erst einmal nachschauen, was genau dort durch die Gegend fliegt. Brauchen wir dazu ein Programm mit dessen Hilfe wir den Datenstrom auslesen können. Dieses erledigt Ethereal super. Später ist es auch drin, mit diesem Programm sehr komplexe Filterungen auf den Datenstrom anzuwenden. Da wir aber nur die Daten annehmen können welche auf unserem Channel gesendet werden. Betreibt Kismet Channelhopping. D.h.: Kismet springt im ms. Takt vom Einen in den Anderen Channel. Wenn wir einen konstanten Datenstrom mitlesen wollen, ist das scheisse! Wir können dann ja nur die Daten mitlesen, wenn wir auch gerade im passenden Channel sind. Daher beenden wir Kismet und setzen die Karte von Hand in den Monitor Mode und den passenden Channel. Dieses geht als User-Root so: iwpriv eth1 monitor 1 1 eth1 ist in diesem Fall die Wlan-Karte, mit monitor 1 sagen wir das der Monitor Mode gestartet werden soll (mit iwpriv eth1 monitor 0 würden wir ihn also wieder beenden) und die letzte 1 gibt den Channel an, in welchem die Karte gesetzt werden soll. Ethereal network traffic monitor capturing packets Ethereal kann nun mit den im Bild angezeitgen Optionen gestartet werden. Nun würde Ethereal JEDES Datenpaket welches im Channel 1 durch die Gegend fliegt auffangen und speichern. Sollte auf dem AccessPoint eine Mac-Adressenfilterung eingerichtet sein, so müssen wir uns um diese nicht weiter kümmern. Wir versuchen uns ja nicht am AP anzumelden, sondern hören ja einfach nur zu. Interessant wird es erst, wenn das Netzwerk die Daten verschlüsselt überträgt. Wir bekommen zwar immer noch alles, können damit aber nichts mehr anfangen. Es ist aber Möglich WEP-Verschlüsselungen aufzubrechen, den Schlüssel zu errechnen. AirSnort WEP key recovery tool AirSnort ist ein Programm welches genau das macht. Es kann die Karte in den Monitor-Mode packen. Wenn vom User gewünscht auch gleich noch in den passenden Channel. Ab diesem Zeitpunkt sammelt Airsnort die verschlüsselten Packete. Bei einer 128 Bit WEP Verschlüsselung muss es ca. 6 Millionen Pakete sammeln. Das liegt daran, dass für die WEP Verschlüsselung nur ein begrenzter Zufallszahlenraum zur Verfühgung steht. Nach ca. 6 Millionen Paketen wiederholen sich in jedem Fall Teile. Mit diesen kann AirSnort nun rechnen. Hat AirSnort den Schlüssel erfolgreich errechnet, tragen wir ihn einfach mit iwpriv bei unserer Wlan-Karte ein und schon kann es weiter gehen! WEP Verschlüsselungen mit einer Stärke von 256 Bit sind im Vergleich noch sehr sicher. Es würde eine sehr lange Zeit dauern die notwendigen Pakete zu sammeln. Leider arbeiten kaum Karten mit 256 Bit WEP Schlüsseln. Es gibt auch eine neue Methode: WPA… WPA gilt bisher als sicher. Ich stufe mein Wlan immer noch als ein feindliches Netz ein. So behandelt es auch meine Firewall und so sollte es jeder Admin behandeln. Es ist und bleibt wohl noch über lange Zeit ein grosses Sicherheitsproblem. Genauere Fragen zu diesem Thema beantworte ich gerne per E-Mail! Solltest du Fragen stellen achte bitte darauf deine Frage so genau wie irgend möglich zu stellen. Beschreibe kurz dein Problem, haue mich nicht mit log und configs zu und habe etwas Geduld. Ich bekomme nicht nur eine E-Mail am Tag. Darum werde ich ganz sicher nicht auf unfreundliche und ungenaue Fragen antworten. KEINER hat ein Recht drauf von mir Support zu bekommen!!

CAcert in Firefox

Veraltet: CAcert-Zertifikate wurden nie in die Standard-Truststores der Browser aufgenommen. Kostenlose TLS-Zertifikate gibt es bei Let’s Encrypt.

CAcert ist eine feine Sache. Leider sind deren Root-Zertifikate noch nicht in allen Browsern und Programmen integrieret.

Ich habe mir nun Gedanken dazu gemacht:

Wie schaffe ich es die CAcert-Root-Zertifikate in Anwendungen von Microsoft (Word, Outlook, Internetexplorer..) und Mozilla (Thunderbird, Firefox…) so zu integrieren das sie immer als vertrauenswürdig erkannt werden? Auch bei allen anderen Usern auf dem System und denen die später noch ein neues Konto bekommen…

Natürlich könnte ich bei jedem User die Zertifikate einzeln mit der Hand importieren und als vertrauenswürdig einstufen.  Es ist aber sehr aufwändig und bestimmte User haben damit ein, nennen wir es Problem! Es muss also automatisch gehen.

Für die Microsoftprodukte habe ich eine einfache Lösung gefunden. Mit >>dieser<< Regestrierungsdatei werden die CAcert-Root-Zertifikate automatisch ins System übernommen. Ab diesem Moment sind in allen Microsoftanwendungen, bei allen Usern (vorhandenen und neuen) eines Systems die Zertifikate gültig.

Bei Mozilla ist es nicht ganz so einfach. Hier geht es am einfachsten so:

!!Firefox sollte noch nicht auf dem System installiert sein!!

Zuerst besorgt man sich die Installationsdatei für den Firefox. Am einfachsten wohl hier:  http://www.mozilla-europe.org/de/firefox/

CAcert certificate import in Firefox, step 1

Dann installiert man den Firefox wie gewohnt, startet ihn und importiert die CAcert-Root-Zertifikate als vertrauenswürdig. Jetzt Firefox zu machen und lassen! Bisher alles klar und einfach. Aber nun…

CAcert certificate import in Firefox, step 2

Jetzt sucht man unter: Dokumente und Einstellungen\seinUsername\Anwendungsdaten\Mozilla\Firefox\Profiles\irgendwas.default\ die Datei cert8.db. Gefunden? Gut… Merken wo!

CAcert certificate import in Firefox, step 3

Jetzt das Firefoxinstallerpacket entpacken. Am einfachsten vielleicht mit WinRAR.

CAcert certificate import in Firefox, step 4

Nun kopiert man die cert8.db in den, gerade entpackten Ordner, Firefox Setup 3.0.1\localized\defaults\profile\

CAcert certificate import in Firefox, step 5

Startet man nun die Firefoxinstallation über die setup.exe sind die CAcert-Root-Zertifikate immer automatisch im Firefox integriert. Da immer wenn ein User das erste mal den Firefox startet, sein default Profile zusammengestellt wird. Es wird also immer die cert8.db mit in sein Profil kopiert. In dieser liegen die Zertifikate. Also auch unserer importierten CAcert-Root-Zertifikate. Dieses Packet könnte man nun immer für seine Installationen nutzen und vielleicht auch weitergeben. Will man allen existierenden Usern die Zertifikate unterschieben, muss man einfach nur die cert8.db in dessen Ordner packen (Dokumente und Einstellungen\seinUsername\Anwendungsdaten\Mozilla\Firefox\Profiles\irgendwas.default\).

So funktioniert es auch unter Thunderbird. Bei Linux funktioniert es auch über diese Datei.

Ich diese Infos helfen dem Einen oder Anderen. Wenn noch jemand Infos dazu hat, freue ich mich natürlich über zuschriften!

Fragen? Einfach melden.

CAcert Nokia

Veraltet: Nokia S40 und S60 gibt es nicht mehr, und CAcert hat es nie in die Browser-Truststores geschafft. Dieser Beitrag ist nur noch als Zeitdokument interessant.

CAcert.org Root Zertifikate unter Nokia S40 und S60 installieren. Ich habe ein Nokia 6300i. Dieses Gerät tut alles genau so wie ich es benötige. Nur eine Kleinigkeit hat mich gestört. Immer wenn ich versuche E-Mails von meinem IMAP-Server zu saugen oder E-Mails über meinen SMTP-Server zu verschicken, wird das jeweilige Zertifikat (SSL / TLS) als ungültig gemeldet. Was daran liegt, das ich diese beiden Zertifikate von CAcert habe unterschreiben lassen. Es müssen also die Root-Zertifikate (http://www.cacert.org/index.php?id=3) ins Mobiltelefon! Natürlich habe ich sofort versucht die Zertifikate ins Gerät zu bekommen. Leider scheiterte es immer an der Meldung: „Dateiformat nicht unterstützt“. Daraufhin habe ich viele und lange sinnlose E-Mails mit dem Nokia-Support getauscht. Leider ohne erfolg. Ich habe das weiter unten mal zusammengeschrieben, hier nun erstmal der genaue Weg die Zertifikate ins Handy zu bekommen: Zuerst auf dem Rechner eine HTML-Datei mit folgendem Namen erstellen: cert.html Der Inhalt sollte ca. so ausschauen: —– HTML-schnipp —– <?xml version=“1.0″?><!DOCTYPE html PUBLIC „-//WAPFORUM//DTD XHTML Mobile 1.0//EN“ „http://www.wapforum.org/DTD/xhtml-mobile10.dtd“><html xmlns=“http://www.w3.org/1999/xhtml“><head><title>Installing CAcerg.org<br>Root Certificate</title></head><body><p><a href=“root.cer“>Installing Class1 PKI Key</a><br><br><a href=“class3.cer“>Installing Class3 PKI Key</a><br><br><a href=“https://www.kernel-error.de“>Und nun testen..</a></p></body></html> —– HTML-schnapp —– Dann die beiden Zertifikate von CAcert.org herunterladen. Einmal das class1 und einmal das class3, jeweils im PEM format. Diese müssen nun konvertiert werden, ich nutze dafür openssl: openssl x509 –in root.crt –inform PEM –out root.cer –outform DER openssl x509 –in class3.crt –inform PEM –out class3.cer –outform DER Jetzt müssen die Dateien (cert.html, root.cer und class3.cer) ins gleiche Verzeichnis ins Mobiltelefon kopiert werden. Dort nun übers das Telefonmenu hinklicken und die cert.html öffnen. Galerie auf dem Nokia 6300i Der Ordner Empfangene Dateien auf dem Nokia 6300i Ordnerinhalt Empfangene Dateien Nokia 6300i Wenn sich diese geöffnet hat einfach die Links von oben nach unten durchklicken und die jeweiligen Zertifikate speichern. cert.html Installationsdatei der CAcert Zertifikate Das ist dann schon alles…. Fertig! CAcert im Nokia Hier nun der zusammengeschriebene Teil vom Nokiasupport. —– NokiaCare schnipp —– Wir möchten Ihnen mitteilen, dass das X.509 Zertifikat umgewandelt werden muss, bevor Sie es auf Ihr Nokia 6300i übertragen können. Ihr Nokia 6300i unterstützt .p12 Zertifikate. —– NokiaCare schnapp —– P12 klang für mich nicht sinnig, probiert habe ich es denn noch… Ohne erfolg! Daher wieder eine E-Mail an den Support, vielleicht muss es ja irgendwo gesondert hin oder sonst was… —– NokiaCare schnipp —– Bitte kopieren Sie das *.12 Zertifikat mit der PC Suite auf Ihr Mobiltelefon. Die Datei muß nicht in ein spezielles Verzeichnis kopiert werden. Die Datei wird automatisch von MfE verarbeitet. —– NokiaCare schnapp —– Alles klar… geht nicht immer noch die Meldung: „Dateiformat nicht unterstützt“ Lieber noch einmal nachfragen und mein Problem deutlicher erklären! —– NokiaCare schnipp —– Übertragen Sie die Datei auf das Mobiltelefon, gehen Sie in den Dateimanager und rufen Sie die Datei auf, dies installiert sich dann automatisch. —– NokiaCare schnapp —– Das funktioniert so nicht… Zu dem brauche ich kein Benutzerzertifikat sonder das einer CA…. Noch eine E-Mail an Nokia! —– NokiaCare schnipp —– Um private Schlüssel importieren zu können, erstellen Sie bitte eine *.p12-Datei. Diese enthält Ihren privaten Schlüssel und das Benutzerzertifikat. Diese Datei importieren Sie bitte in Ihr NOKIA Mobiltelefon. Dort wird das Zertifikat automatisch erkannt. Zur Speicherung folgen Sie bitte den Hinweisen des Telefons. Nun werden Sie zur Eingabe eines Sicherheitscodes aufgefordert. Beachten Sie bitte dabei, dass die geforderte Sicherheitseingabe ausschließlich aus Ziffern bestehen darf. Das geforderte Passwort wird durch die Zertifizierungsstelle erstellt. —– NokiaCare schnapp —– Ich scheine nicht im Stande zu sein mein Problem verständlich in eine E-Mail zu packen! Ich beschließe eine weitere E-Mail zusammen mit meiner Frau zu schreiben (diese entspricht dem durchschnittlichen PC-User)! Und hier ist Nokias Antwort: —– NokiaCare schnipp —– Scheinbar haben wir uns bei Ihrem angegebenen Telefonmodell verlesen.Ihr NOKIA 6300i ist ein Gerät der Serie 40. Die Angaben die wir Ihnen gemacht haben, beziehen sich auf S60 Geräte.Dafür möchten wir uns entschuldigen. Sie sollten das entsprechende Zertifikat im Format DER konvertieren und erneut wie angegeben auf Ihr NOKIA Mobiltelefon übertragen.Es sollte sich nun installieren lassen. Wir wünschen Ihnen viel Freude mit den Produkten aus unserem Haus. —– NokiaCare schnapp —– Verlesen? Was habe ich denn noch gleich geschrieben *nachschau* —– Meine Mail schnipp —– [Country: Germany] [Language: German] [Permission to Email: ] [Permission to SMS: ] [Permission to Letter: ] [Permission to Phone: ] [First name: van de Meer ] [Last name: Sebastian] [Street address: Alte Bergstr. 12] [ZIP: 45549] [City: Sprockhövel] [Email address: kernel-error@kernel-error.de] [Landline: +49 02324 6858622Click2Dial icon] [Mobile: +49 0177 5995900Click2Dial icon] ] [Phone model: Nokia 6300] [IMEI: ] [Shop number: ] [CID: ] [Contact topic: Nokia Mobiltelefone und Zubehör] [Message: Sehr geehrte Damen und Herren,  wie lassen sich weitere X.509 Root Zertifikate einer CA in meinem 6300i importieren? Mit besten Grüßen  S. van de Meer] [Operator: E-plus] [Operating system: Linux] —– Meine Mail schnapp —– Öhm… egal! Ich probiere es mal (auch wenn ich das natürlich schon probiert habe)! Komisch immer noch die gleiche Meldung: „Dateiformat nicht unterstützt“ —– NokiaCare schnipp —– Bezüglich Ihrer Anfrage möchten wir Ihnen mitteilen, dass Sie das DER-typ X509v3 Zertifikat für Ihr S40 Handy benötigen. Sie müssen das CER (Base64) Zertifikat ins DER (binary Format) konvertieren. —– NokiaCare schnapp —– Da ich genau das schon probierte habe ich an diesem Punkt die Zusammenarbeit mit dem Nokia Support aufgegeben! Ich habe nun begonnen herumzubasteln und zu testen! Der installierte Opera wird auf dem Gerät zum Browsen benutzt, scheint aber nicht wirklich etwas mit der Systemeigenen CA-Liste zutun zu haben (wie sein großes Vorbild halt). Daher bringt es mir auch nichts mit dem Teil auf irgendwelchen Webseiten herumzufummeln. Irgendwann habe ich mal probiert welche Formate unterstützt werden. Interessanterweise ging bei HTML nicht der Opera auf, sondern der „systemeigene“ Browser. An dieser Stelle ist mir dann die oben stehende Idee gekommen!

SSH/OpenSSH

SSH (SecureShell) ist inzwischen sehr verbreitet. Es hat bzw. sollte Telnet überall ersetzt haben. SSH nutz eine Verschlüsselung um zwischen zwei Rechnern Daten auszutauschen. SSH kann aber noch vieles mehr. Z.B. kannst du mit scp einfach, schnell und sicher Dateien von einem Rechner auf einen anderen Kopieren.
scp dateien user@rechner:/pfad
Du kannst aber auch X-Weiterleitungen sehr einfach realisieren. Hierzu musst du einfach in deine sshd_config folgende Option auf yes setzten.
X11Forwarding yes
Mal angenommen du besitzt ein altes (SEHR) altes Notebook. Dieses Notebook hat gerade noch genug Leistung zum Hochfahren und starten des X-Servers. Dieses Notebook könntest du jetzt als eine Art X-Terminal benutzen. D.h.: du tipperst ein:
ssh -X rechner
in deine X-Konsole und meldest dich nun mit deinen Usernamen an einem Zweitrechner in deinem Netzwerk an, welcher etwas mehr Leistung hat und auch gleich noch die Programme installiert sind, mit denen du jetzt gerne auf dem Notebook arbeiten willst. Du tipperst nach der Anmeldung also ooffice oder was du halt gerade brauchst ein. Darauf bekommst du dann nur die GUI auf dein Notebook. Die gesamte Datenverarbeitung und Rechenleistung für das genutzte Programm kommt nun vom anderen Rechner. Bist du mal über eine sehr schwache Leitung an dein System angeschlossen kann dir die Option -C sehr helfen. Diese sorgt dafür das der gesamte Datenstrom komprimiert wird. So ist die zu übertragende Datenmenge kleiner und alles sollte flotter gehen.
ssh -C rechner

Wie sicher ist dieses SSH denn nun?

Man kann sagen, recht sicher. Es gibt natürlich keine absolute Sicherheit und es hängt auch immer ein großer Teil vom User und der Konfiguration ab. Du solltes also einige Punkte in der Konfiguration seines SSH-Servers ändern. Diese liegt fast immer unter: /etc/ssh/ und schimpft sich sshd_config! – Nur SSH2 Das SSH1 Protokoll gilt als unsicher. Programme wie z.b.: ettercap sind in der Lage hier Kennwörter und Usernamen herauszulesen. Zu dem bietet SSH2 eine ganze Stange mehr an Möglichkeiten. Daher sollte nur das Protocol 2 genutzt werden.
Protocol 2
– Root-Login is nicht Der User Root braucht keinen direkten Login. Wer wirklich von extern auf seinem Rechner administrieren will der kann als User auch su oder sudo benutzen. Da SSH2 wohl kaum zu entschlüsseln ist, wird ein Angreifer es meist mit Brute Force versuchen. Er braucht zu dem Kennwort welches er damit bekommen möchte erst mal einen Usernamen. Da er Root haben will und dieser wohl auch immer auf einer Linux-Kiste zu finden ist, wird er es auch auf diesen Account probieren. Verbieten wir jetzt aber den Login für den User Root kann der Angreifer es sehr lange Probieren.
PermitRootLogin no
– Kein User/Passwort verfahren Die Geschichte mit dem Brute Force hatten wir ja jetzt. Was aber wenn der Angreifer einen Usernamen von unserem System kennt. Dann ist es erstmal nur noch eine Frage der Zeit. Tja und da die meisten User keine „guten“ Passwörter haben….. Viel besser ist es wenn der User ein Zertifikat hat, mit welchem er sich anmelden darf. Weiter unten zeige ich wie es gemacht wird. Hier aber erstmal das User/Passwort verfahren verbieten!
PasswordAuthentication no
Das Public-Key-Verfahren (jetzt kommt die Beschreibung) ist da viel besser. Zuerst bauen wir einen schön langen Schlüssel auf dem Client:
ssh-keygen -b 4068 -t dsa
Nun tauchen im Homeverzeichniss des Users, mit dem wir den Schlüssel erstellt haben, unter: ~/.ssh/ zwei Dateien auf: id_dsa und id_dsa.pub. Den Publickey id_dsa.pub packen wir nun auf den Server. Direkt in die Datei authorized_keys (vielleicht müssen wir diese noch mit der Hilfe von touch anlegen). Die Datei sollte im Homeverzeichniss des zu autorisierenden Users im Ordner .ssh angelegt werden. Haben wir das alles so eingetragen brauchen wir kein Kennwort mehr.
Wie wäre es mit einem Tunnel durch die Firewall?
OK… klingt ja ganz nett. Aber warum sollte ich einen Tunnel in meine Firewall machen? Das kann ich dir erklären. Stell dir mal vor du sitzt mit deinem Notebook in einem Netzwerk wo du dir nicht sicher bist das keiner deine Verbindungen abhört oder gar die Verbindungen über bestimmte Ports blockiert sind. Du willst nun aber eine E-Mail schreiben! Oder bestimmte Ports sonst wie durch diese oder eine andere Firewall verschlüsselt tunneln. Um einen einfachen Tunnel zu basteln musst du jetzt nur noch folgendes machen: Computer2:
ssh -N -R 5555:localhost:22 user@erreichbarer_rechner
Jetzt passiert etwas feines 🙂 Denn nun geht am „erreichbarer_rechner“ der Port 5555 auf und der beamt dann alles durch den Tunnel an Computer2 an den Port 22 weiter. Du kannst nun also sitzen wo du willst. Sobald du versuchst dich auf Port 5555 mit dem Computer „erreichbarer_rechner“ zu verbinden, wird deine Anmeldeanfrage direkt an Computer2 weitergeleitet. So bekommst du also sofort das Login von Computer 2.
ssh erreichbarer_rechner -p 5555
Geil, was?

Siehe auch: SSH-Server mit MFA absichern

Fragen? Einfach melden.

GPG: E-Mails signieren und verschlüsseln mit GnuPG

GnuPG (GNU Privacy Guard) ist die freie Implementierung des OpenPGP-Standards. Damit lassen sich E-Mails und Dateien signieren und verschlüsseln. Die Signatur beweist, dass die Nachricht vom angegebenen Absender stammt und nicht verändert wurde. Die Verschlüsselung stellt sicher, dass nur der Empfänger den Inhalt lesen kann.

Schlüsselpaar erstellen

Ein neues Schlüsselpaar wird interaktiv erstellt:

gpg --full-generate-key

Als Algorithmus Ed25519 wählen. Das ist eine elliptische Kurve von Daniel J. Bernstein, deutlich schneller als RSA und mit kürzeren Schlüsseln bei gleichem Sicherheitsniveau. Für Verschlüsselung wird automatisch ein cv25519-Unterschlüssel erzeugt. Die Passphrase sollte lang und komplex sein.

Direkt nach der Erstellung ein Widerrufszertifikat anlegen und sicher aufbewahren. Damit lässt sich der Schlüssel für ungültig erklären, falls er kompromittiert wird oder die Passphrase verloren geht:

gpg --output revoke.asc --gen-revoke deine@email.de

gpg.conf härten

Die Standardkonfiguration von GnuPG erlaubt aus Kompatibilitätsgründen veraltete Algorithmen wie 3DES, IDEA oder SHA-1. Das lässt sich in der ~/.gnupg/gpg.conf abstellen. Eine gehärtete Konfiguration, die nur noch starke Algorithmen zulässt:

# Ausgabe
keyid-format 0xlong
with-fingerprint
utf8-strings

# Key Discovery: WKD bevorzugen, keys.openpgp.org als Fallback
auto-key-retrieve
auto-key-locate wkd,dane,local,keyserver
keyserver hkps://keys.openpgp.org

# Starke Defaults
cipher-algo AES256
digest-algo SHA512
cert-digest-algo SHA512

# KDF-Härtung für Passphrase-basierte Verschlüsselung
s2k-mode 3
s2k-digest-algo SHA512
s2k-cipher-algo AES256
s2k-count 65011712

# Legacy-Algorithmen deaktivieren
disable-cipher-algo 3DES
disable-cipher-algo IDEA
disable-cipher-algo CAST5
disable-cipher-algo BLOWFISH
disable-cipher-algo TWOFISH

# Privatsphäre
no-comments
no-emit-version
export-options export-minimal

# Trust Model: TOFU + Web of Trust
trust-model tofu+pgp

# Eigener Schlüssel
default-key 0x5F279C362EEAB216

# Bevorzugte Algorithmen
personal-cipher-preferences AES256 AES192 AES
personal-digest-preferences SHA512 SHA384 SHA256
weak-digest SHA1
force-ocb

Die wichtigsten Punkte: auto-key-locate wkd,dane,local,keyserver sucht öffentliche Schlüssel zuerst per Web Key Directory und DANE im DNS, bevor ein Keyserver gefragt wird. Das ist schneller und vertrauenswürdiger. trust-model tofu+pgp kombiniert das klassische Web of Trust mit Trust on First Use, was in der Praxis besser funktioniert als reines WoT. Die s2k-count auf Maximum (65 Millionen Iterationen) macht Brute-Force-Angriffe auf die Passphrase deutlich teurer.

Schlüssel verteilen

Den öffentlichen Schlüssel exportieren und auf einen Keyserver hochladen:

# In eine Datei exportieren
gpg --armor --export deine@email.de > pubkey.asc

# Auf keys.openpgp.org hochladen
gpg --keyserver keys.openpgp.org --send-key deine@email.de

keys.openpgp.org ist der empfohlene Keyserver. Die alten SKS-Keyserver (pgp.net, pgp.mit.edu) sind unbrauchbar geworden, weil sie keine Verifizierung der E-Mail-Adressen durchführen und mit Spam-Keys geflutet wurden. Nach dem Upload schickt keys.openpgp.org eine Bestätigungsmail. Erst nach der Bestätigung wird die E-Mail-Adresse am Schlüssel sichtbar.

Fremde Schlüssel importieren

# Vom Keyserver holen (Key-ID oder E-Mail)
gpg --keyserver keys.openpgp.org --recv-keys 0xKEYID

# Aus einer Datei importieren
gpg --import pubkey.asc

# Alle Schlüssel am Bund anzeigen
gpg --list-keys

Mit der gehärteten Config und auto-key-retrieve holt GnuPG fehlende Schlüssel beim Verifizieren einer Signatur automatisch. Zuerst per WKD (Web Key Directory) direkt vom Mailserver des Absenders, dann per DANE aus dem DNS, und als letzten Fallback vom Keyserver.

E-Mail-Integration

Die meisten Mailclients unterstützen OpenPGP direkt oder über Plugins. Thunderbird hat GPG seit Version 78 eingebaut und braucht kein separates Plugin mehr. Apple Mail nutzt GPG Suite, unter Windows gibt es Gpg4win mit Outlook-Plugin. K-9 Mail auf Android unterstützt OpenPGP über die OpenKeychain-App.

Wer seinen öffentlichen Schlüssel zusätzlich per DNS veröffentlichen will, kann das mit einem SMIMEA-Record tun. Dann können Mailserver das Zertifikat automatisch aus dem DNS holen, ohne einen Keyserver abfragen zu müssen.

Mein Schlüssel

Ich signiere jede ausgehende E-Mail. Eine unsignierte Mail von mir sollte mit Vorsicht behandelt werden. Mein aktueller Schlüssel ist Ed25519 (seit 2023, der alte RSA-4096-Schlüssel von 2011 ist abgelaufen):

Algorithmus: Ed25519 (Sign) + cv25519 (Encrypt)
Key-ID:      0x5F279C362EEAB216
Fingerprint: CCB4 FCD9 B858 AF4C C003 5B13 5F27 9C36 2EEA B216
gpg --keyserver keys.openpgp.org --recv-keys 0x5F279C362EEAB216

Siehe auch: S/MIME per DNS mit SMIMEA

Fragen? Einfach melden.

CAcert

Veraltet: CAcert hat es nie in die Browser-Truststores geschafft. Die CA existiert zwar noch, spielt aber keine praktische Rolle mehr. Dieser Beitrag ist nur noch als Zeitdokument interessant.

CAcert certificate verification page

Jeder der etwas mit EDV vertraut ist, wird mir sicher zustimmen. Daten im Rechner oder aus dem Internet sind schön und gut. Nur sind sie auch wirklich vom Autor, welcher im Dokument steht? Sind die Daten vielleicht verändert worden? Unterhalte ich mich auch gerade wirklich mit dem Server oder hat mit ein Hacker über einen fake-dns auf seinen Server geleitet?

 

Genau um solche Dinge sicher zu stellen, gibt es Zertifikate. Eine gute Möglichkeit für Privatleute oder kleine Firmen ist da CAcert.

CAcert:

CAcert ist eine gemeinschaftsbetriebene nicht kommerzielle Zertifizierungsstelle (Root CA), die kostenfrei X.509-Zertifikate für verschiedene Einsatzgebiete ausstellt. Damit soll eine Alternative zu den kommerziellen Roots CAs geboten werden, die zum Teil recht hohe Gebühren für ihre Zertifikate erheben. Die Dienstleistungen der CAcert sind allgemein. Jeder kann sich Zertifikate auf seinem Namen bzw. auf seinen Server ausstellen lassen, nachdem er seine Identität ausreichend belegt hat.

Zertifikate
Folgende Zertifikate und Signaturen werden angeboten:

Client-Zertifikate
Diese Zertifikate sind personalisiert, sie dienen zum Beispiel zum Verschlüsseln und Signieren von E-Mails und anderen Daten, aber auch Authentifikation an Servern oder zum Signieren von Softwarecode.

Server-Zertifikate
Server-Zertifikate stellen die Identität eines Servers sicher und dienen als Basis für verschlüsselte SSL/TLS-Verbindungen. Es gibt eine Bandbreite von Diensten, bei denen Server-Zertifikate zum Einsatz kommen. Dazu gehören u. a. HTTPS, FTP(S), SMTP(S), POP(S) und IMAP(S).

Signatur des PGP-Schlüssels
Man kann den eigenen PGP-Schlüssel zur Signatur einreichen. Die CAcert bestätigt dann die Identität des Schlüsselbesitzers.

Assurance / Identitätsprüfung
Um ein Zertifikat zu erhalten, muss man sich zunächst auf der Seite https://www.cacert.org/index.php?id=1 als Benutzer anmelden. Jedem Benutzerkonto sind Punkte (Assurance Points) zugeordnet, die auf verschiedenen Wegen von anfänglich 0 bis auf 150 Punkte erhöht werden können. Die Punkte geben an, wie genau die Identität eines Benutzers überprüft wurde (bis 100 Punkte) bzw. wieviele Punkte er beim Überprüfen der Identität eines anderen Benutzers vergeben darf (ab 100 Punkten).

Die Authentifikation der eigenen Identität gegenüber CAcert kann auf zwei Arten erfolgen:
Zum einen besteht ein Netzwerk aus Freiwilligen (Web of Trust), gegenüber denen sich der neue Benutzer ausweisen kann, um Punkte zu erhalten. Eine Liste der freiwilligen Assurer ist auf der Internetseite zu finden. Sie können maximal 35 Punkte vergeben. Bei besonderen Veranstaltungen wie z.B. Messen können Super-Assurer sofort die maximalen 150 Punkte vergeben.
Zum anderen sind ‚Vertrauenswürdige Dritte‘ (Trusted Third Parties) wie Notare zugelassen, die aufgrund ihrer Position (Beruf) die Identität des Benutzers bestätigen können. Hier können auch bis zu 150 Punkte erlangt werden.

Quelle:
http://de.wikipedia.org/wiki/CAcert
http://www.cacert.org/

Ich selbst bin auch ein solcher Assurer und kann die begehrten Punkte vergeben.
Interessierte schicken mir bitte eine kurze E-Mail. Dann können wir ein Treffen absprechen!


Wer sich für CAcert interessiert, sollte sich auch unbedingt den Beitrag: „StartSSL“ anschauen.
Neuere Beiträge »

© 2026 -=Kernel-Error=-RSS

Theme von Anders NorénHoch ↑