Nutzung von DNSSec unter Mac OS

Auf dieser Seite finden Sie Anleitung zur Nutzung von DNSSec unter MAC OS.

unbound DNS-Resolver

Zunächst ein DNSSec-fähiger DNS-Resolver zu installieren. Dies geschieht am einfachsten über brew

brew install unbound ldns

Aus Sicherheitsgründen ist es ratsam, den DNS-Resolver mit unpriveligierten Rechten zu betreiben. Daher sollte ein entsprechender Nutzer und eine Gruppe eingerichtet werden. Hierfür prüft man zunächst, ob eine Nutzer- und Gruppen-ID zwischen 1-500 frei ist, z.B. mittels

dscl . -list /Groups PrimaryGroupID | grep 451
dscl . -list /Users PrimaryGroupID | grep 451

Wenn die IDs (in diesem Fall 451) frei sind, werden der Nutzer und die Gruppe angelegt

sudo dscl . -create /Groups/_unbound
sudo dscl . -create /Groups/_unbound PrimaryGroupID 451
sudo dscl . -create /Users/_unbound
sudo dscl . -create /Users/_unbound RecordName _unbound unbound
sudo dscl . -create /Users/_unbound RealName "Unbound DNS server"
sudo dscl . -create /Users/_unbound UniqueID 451
sudo dscl . -create /Users/_unbound PrimaryGroupID 451
sudo dscl . -create /Users/_unbound UserShell /usr/bin/false
sudo dscl . -create /Users/_unbound Password '*'
sudo dscl . -create /Groups/_unbound GroupMembership _unbound

Anschließend kann unbound konfiguriert werden

/usr/local/etc/unbound/unbound.conf
server:
  verbosity: 1
  interface: 127.0.0.1
  access-control: 127.0.0.1/8 allow
  chroot: ""
  username: "_unbound"
  auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
  unblock-lan-zones: yes

forward-zone:
  name: "."
  forward-addr: 141.53.10.4
  forward-addr: 141.53.10.5

wobei der Fingerprint des öffentlichen Schlüssels der DNS-Root-Zone zu hinterlegen ist

/usr/local/etc/unbound/root.key
. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
. IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D

An dieser Stelle werden aus Sicherheitsgründen auch die Dateiberechtigungen für den unbound DNS-Resolver eingeschränkt

sudo chown -R _unbound:staff /usr/local/etc/unbound
sudo chmod 640 /usr/local/etc/unbound/*

Zum Abschluss der Installation muss noch der Autostart des unbound DNS-Resolvers konfiguriert werden. Dazu wird die Datei /Library/LaunchDaemons/net.unbound.plist mit folgendem Inhalt angelegt

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>net.unbound</string>
    <key>ProgramArguments</key>
    <array>
  <string>/usr/local/sbin/unbound</string>
  <string>-d</string>
  <string>-c</string>
  <string>/usr/local/etc/unbound/unbound.conf</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

Abschließend muss in den Systemeinstellungen der neue DNS-Resolver zur Verwendung aktiviert werden. Hierzu geht man über Systemeinstellungen -> Netzwerk -> Ethernet bzw. WLAN, also die jeweilige Verbindung -> Weitere Optionen -> DNS in die DNS-Einstellungen und ändert den vorhandenen DNS-Server in 127.0.0.1.

OpenSSH-Client mit SSHFP-Unterstützung

Mac OS liefert einen OpenSSH-Client mit, der aufgrund der verwendeten Bibliotheken nicht mit SSHFP-DNS-Einträgen arbeiten kann. Dies ist aber zwingend erforderlich, wenn die Option VerifyHostKeyDNS=yes genutzt werden soll.

Daher kann man einfach via brew eine alternative OpenSSH-Version installieren

brew install openssh
/usr/local/bin/ssh -V