DANE: TLSA-Record validieren

zum Validieren von TLSA Records gibt es mehrere Tools.

Aus Holland: ldns-dane
Dies ist aus dem Paket ldns-utils zu haben. Voraussetzung eine Version >=1.6.16. Bei Debian aktuell nur über Backports erhältlich, oder natürlich selbst kompilieren.

apt-get install ldns-utils

Verwendung:

ldns-dane verify example.com 443

Korrekte Ausgabe:

192.168.0.12 dane-validated successfully

Tool 2: posttls-finger aus dem Postfix Paket

posttls-finger -c -L verbose,summary example.org

Bei Problemen kann noch der Timeout mit -t und -T erhöht werden.

Aus der Manpage:

-t timeout (default: 30)
              The TCP connection timeout to use.  This is also the timeout for reading the remote server's 220 banner.

-T timeout (default: 30)
              The SMTP/LMTP command timeout for EHLO/LHLO, STARTTLS and QUIT.

Ausgabe:

:~ > posttls-finger -c -L verbose,summary example.org
posttls-finger: initializing the client-side TLS engine
posttls-finger: using DANE RR: _25._tcp.mta4.example.org IN TLSA 2 0 2 20:2F:CF:F5:3E:65:DE:B4:C2:AB:C3:EC:6D:8F:DC:FA:5C:B7:84:A9:77:38:0E:81:D5:EF:9A:B6:F0:86:E4:93:CB:85:C6:81:22:6C:14:ED:40:A7:96:7F:EA:BC:B7:82:6F:CE:59:71:F2:9A:B1:88:FF:C6:2C:FD:F9:BF:C9:86
posttls-finger: Failed to establish session to example.org via mta4.example.org: connect to mta4.example.org[192.168.0.138]:25: Connection refused
posttls-finger: using DANE RR: _25._tcp.mta3.example.org IN TLSA 2 0 2 20:2F:CF:F5:3E:65:DE:B4:C2:AB:C3:EC:6D:8F:DC:FA:5C:B7:84:A9:77:38:0E:81:D5:EF:9A:B6:F0:86:E4:93:CB:85:C6:81:22:6C:14:ED:40:A7:96:7F:EA:BC:B7:82:6F:CE:59:71:F2:9A:B1:88:FF:C6:2C:FD:F9:BF:C9:86
posttls-finger: setting up TLS connection to mta3.example.org[192.168.0.137]:25
posttls-finger: mta3.example.org[192.168.0.137]:25: TLS cipher list "aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH:!aNULL"
posttls-finger: mta3.example.org[192.168.0.137]:25: depth=1 matched trust anchor certificate sha512 digest 20:2F:CF:F5:3E:65:DE:B4:C2:AB:C3:EC:6D:8F:DC:FA:5C:B7:84:A9:77:38:0E:81:D5:EF:9A:B6:F0:86:E4:93:CB:85:C6:81:22:6C:14:ED:40:A7:96:7F:EA:BC:B7:82:6F:CE:59:71:F2:9A:B1:88:FF:C6:2C:FD:F9:BF:C9:86
posttls-finger: mta3.example.org[192.168.0.137]:25: depth=0 trust-anchor certificate
posttls-finger: mta3.example.org[192.168.0.137]:25: depth=1 verify=1 subject=/C=DE/ST=noWhere/L=noWhere/O=Internet Widgits Pty Ltd/OU=example.org/CN=example.org/emailAddress=ssl@example.org
posttls-finger: mta3.example.org[192.168.0.137]:25: depth=0 verify=1 subject=/C=DE/ST=noWhere/L=noWhere/O=mta3.example.org/OU=mta3.example.org/CN=mta3.example.org/emailAddress=ssl@example.org
posttls-finger: mta3.example.org[192.168.0.137]:25 Matched CommonName mta3.example.org
posttls-finger: mta3.example.org[192.168.0.137]:25: subject_CN=mta3.example.org, issuer_CN=example.org, fingerprint=30:49:FB:D2:F3:D4:B3:D1:B5:32:C2:4B:1C:E7:D1:6A:AC:63:C7:D7, pkey_fingerprint=DF:48:73:8C:0B:E2:4B:30:50:EE:4D:AF:9F:A4:2F:1C:98:A4:BF:8F
posttls-finger: Verified TLS connection established to mta3.example.org[192.168.0.137]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)

Mail: SMTP AUTH via Konsole testen, inkl. STARTTLS

Ohne TLS:
Aufbau der Verbindung:

telnet mx.example.com 25

oder

netcat mx.example.com 25

man wird nett begrüßt mit

220 mx.example.com ESMTP

Dann senden wir ein „EHLO unserhosname“ o.ä.

EHLO test.example.com

Wir bekommen eine Antwort mit den unterstützten Befehlen:


250-mx.example.com
250-PIPELINING
250-SIZE 102400000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Hier sieht man das der Server nur PLAIN und LOGIN unterstützt, nur Klartext verfahren. ALSO: Ohne TLS nur Test-Logins verwenden!

Hier gibt es nun zwei Möglichkeiten: PLAIN oder LOGIN

Bsp. PLAIN:

AUTH LOGIN

es kommt eine Antwort in Base64 Kodierung: 334 VXNlcm5hbWU6
Er möchte gerne den Benutzernamen wissen, den müssen wir ebenfalls Base64 kodiert übertragen.
Vorgehensweise:

perl -MMIME::Base64 -e 'print encode_base64("username");'

echo -n "username" | openssl enc -base64

python -c "import base64;print base64.encodestring('username')"

usw.

Hier als Beispiel der Nutzer test

dGVzdA==

als nächstes wird das Passwort verlangt: 334 UGFzc3dvcmQ6
für unseren Testaccount ebenfalls test:

dGVzdA==

dann folgt eine Bestätigung vom Mailserver:

235 Authentication succeeded

Bsp. LOGIN:

das gleiche wie bei PLAIN jedoch wird der Benutzername und das Kennwort in einem Schritt übertragen:

perl -MMIME::Base64 -e 'print encode_base64("\000username\000passwort");'

echo -en "\000username\000passwort" | openssl enc -base64

python -c "import base64;print base64.encodestring('\000username\000passwort')"

usw.

auch hier folgt dann eine Bestätigung vom Mailserver:

235 Authentication succeeded

Mit TLS

Das Gespräch mit dem Mailserver hat den gleichen Inhalt, jedoch wird die Verbindung anders hergestellt:

openssl s_client -host mx.example.com -port 25 -starttls smtp

andere ports ansonsten über

openssl s_client -host mx.example.com -port 465

openssl s_client -host mx.example.com -port 993

als Ausgabe sind nun noch ein paar TLS Infos zu sehen.

der rest wie oben 😉

Linux: KVM mit virsh verwalten

KVM ist ne feine Sache, hier die häufigsten Kommandos:

weiteres: virsh bei ubuntuusers: http://wiki.ubuntuusers.de/virsh

VMs auflisten:

virsh list --all

vm definieren

virsh define /pfad/zur/datei.xml.org (am besten /etc/libvirt/qemu/srvname.xml.org)

vm automatisch starten

virsh autostart vmname

vm killen

virsh destroy vmname

vm undefinieren

virsh undefine vmname

vm starten und Konsolen Ausgabe anzeigen

virsh start --console vmname

später auf die Konsole zugreifen

virsh console vmname

aus der Konsole ausbrechen

Strg + 5

last verbrauch:

virt-top

start stop etc.

virsh start vmnane
virsh reboot vmname
virsh shutdown vmname

wenn shutdown nicht will dann hart mit
virsh destroy vmname

LVs anlegen

lvcreate -n /dev/vg0/ROOT-LV -L 6GB vg0
lvcreate -n /dev/vg0/SWAP-LV -L 2GB vg0
mkfs.ext4 -L ROOT-LV /dev/vg0/ROOT-LV
mkswap -L SWAP-LV-swap /dev/vg0/SWAP-LV

Konfiguration editieren

virsh edit vmname

LINUX: banshee multimediatasten

unter den Tastatur Einstellungen -> Tastenkürzel vergeben und dann die folgenden Funktionen ausführen

banshee --next
banshee --previous
banshee --stop
banshee --toggle-playing