Ubuntu DNS-Auflösung Sub-Subdomain

Kürzlich traf ich auf der Arbeit auf ein Problem mit Ubuntu Mate:

Wir arbeiten innerhalb des Unternehmens mit Sub-Subdomains, also z.B. servername.standort.firma.de/eu. Da ich nunmal faul bin, möchte ich gerne die Systeme über servername.standort ansprechen (und brauche auch somit auch meine Searchdomains).
Dies führte aber in der Namensauflösung zu einem Fehler. Also begab ich mich auf die Suche und fand den „Fehler“ in der /etc/nsswitch.conf. Dort sieht der Standard so aus:

hosts:          files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] dns

Dies bewirkt, dass zuerst versucht wird den Namen aufzulösen ohne die Searchdomains durchzugehen. Ist die Auflösung nicht erfolgreich, so wird ein Fehler zurückgegeben.
Um nun also das gewünschte Verhalten zu erreichen, ändere ich die Konfiguration wie folgt ab:

hosts:          files dns resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return]

Somit versucht der Client die Namen inkl. Searchdomain zuerst über unseren DNS-Server aufzulösen. Damit habe ich mein gewünschtes Verhalten erreicht.

DNS Certification Authority Authorization (DNS CAA)

Nachdem ich letzte Woche meine Website vom Apache2 auf den nginx-Webserver migriert habe, hatte ich wie immer einmal meine SSL-Parameter auf https://www.ssllabs.com/ssltest/index.html gecheckt:

 

Als ich meine Zertifikat prüfte fiel mir auf, dass ich keinen DNS CAA Record für meine Domain habe:

Über diesen Typ Record hatte ich vorher noch nie etwas gehört. Also machte ich mich auf die Suche und fand das passende RFC (RFC 6844) von Januar 2013.
Dort wird definiert, dass der Record dafür gedacht ist den Certificate Authorities (CAs) mitzuteilen, welche CA ein Zertifikat für meine Domain ausstellen darf. Damit soll also der Missbrauch mit unautorisierten Zertifikaten eingedämmt werden.

Der CAA-Record ist in den meisten DNS-Servern (z.B. BIND oder PowerDNS) implementiert und sieht wie folgt aus:

CAA <flags> <tag> <value>

flags: Ein vorzeichenloser Integer zwischen 0 – 255
tag: String, definiert welchen Typ von Zertifikat die CA ausstellen darf. Zulässige Typen sind „issue“ (normales Zertifikat) ,“issuewild“ (Wildcard Zertifikat) oder „iodef“ (URL für Missbrauchsmeldungen).
value: String, Name bzw. URL der CA

Hier sind einmal zwei Beispiele:

lnx21.de.    CAA 0 issue "letsencrypt.org"
lnx21.de.    CAA 0 issuewild "thawte.com"

Mit Hilfe dieser beiden Records ist es Let’s Encrypt erlaubt normale, einfache Zertifikate auszustellen. Thawte hingegen darf Wildcard-Zertifikate ausstellen.

Das ganze klingt also auf den ersten Blick sehr sinnvoll. Leider wird der Record aber noch nicht von allen CAs überprüft bzw. beachtet. Daher ist der Einsatzzweck momentan noch recht begrenzt. Sollten sich aber weitere CAs anschließen, so ist dies denke ich ein sehr wirkungsvolles und zugleich einfaches Mittel gegen den Missbrauch mit Zertifikaten.