Aktualisierungen als RSS-Feed oder im Changelog.

Privacy-Handbuch

Ubuntu LTS und davon abgeleitete Derivate nutzen standardmäßig den DNS Cache Daemon dnsmasq. Der Daemon wird vom NetworkManager beim Herstellen einer Internet­verbindung automatisch gestartet. Allerdings nutzen Ubuntu & Co. nicht alle Sicherheits­features, die der Daemon bietet.

Folgende Sicherheitsfeatures können zusätzlich aktiviert werden:
  1. apparmor aktivieren: apparmor ist ein Sicherheitsframework für Linux. Als Mandatory Access Control System kontrolliert es einzelne Anwendungen und kann mit Profilen die Rechte von Anwendungen fein granular einschränken. Sollte eine Anwendung (z.B. dnsmasq) kompromittiert werden, kann der Angreifer nur wenig Schaden im System anrichten, wenn der Daemon unter Kontrolle von apparmor läuft.

    Ubuntu liefert ein apparmor Profil für dnsmasq mit, es ist aber standardmäßig nicht aktiviert. Um den Daemon zukünftig unter Kontrolle von apparmor laufen zu lassen, sind folgende Befehle in einem Terminal auszuführen: > sudo apt install apparmor-profiles apparmor-utils
    > sudo aa-enforce usr.sbin.dnsmasq
    Ob der Daemon unter Kontrolle von apparmor im enforced mode läuft, kann man mit dem folgendem Kommando prüfen: > sudo aa-status
  2. DNSSEC Validierung aktivieren: DNSSEC Signaturen bestätigen die Echtheit der DNS Informationen und ermöglichen es, Manipulationen zu erkennen. Die lokale Validierung von DNSSEC Signaturen schützt dabei auch gegen Manipulationen auf der "letzten Meile" zwischen den vertrauens­würdigen DNS-Servern und dem eigenen PC.

    Um die DNSSEC Validierung für dnsmasq unter Ubuntu zu aktivieren, ist die Datei dnssec.conf herunter zu laden und in "/etc/NetworkManager/dnsmasq.d/" zu speichern. Die Datei hat folgenden Inhalt: dnssec
    dnssec-check-unsigned
    cache-size=1000

    # It was downloaded from https://data.iana.org/root-anchors/root-anchors.xml
    trust-anchor=.,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D
    Die Optionen haben folgende Bedeutung:
    • Die Option dnssec aktiviert die DNSSEC Validierung.
    • Die Option dnssec-check-unsigned aktiviert die Prüfung, ob eine Zone wirklich nicht signiert ist, wenn keine DNSSEC Signaturen gefunden wurden. Möglicherweise wurden die DNSSEC Signaturen von einem man-in-the-middle entfernt, um den User mittels manipulierter DNS Informationen auf einen kompromittierten Server umzuleiten?
    • Die Cache Größe muss angepasst werden, da Ubuntu die Cache Größe auf NULL setzt und eine DNSSEC Validierung damit nicht möglich wäre.
    • Der letzte Parameter ist der public Key der DNS Root Zone. Der Schlüssel wurde von der Webseite der IANA herunter geladen und überprüft. 
  3. Trackingserver blockieren: dnsmasq kann auch DNS-Einträge manipulieren. Dieses Feature kann man verwenden, um Trackingserver systemweit zu blockieren. Dafür erstellt man eine neue Konfigurationsdatei im Verzeichnis "/etc/NetworkManager/dnsmasq.d/" mit einer Liste von Einträgen nach dem folgenden Schema: address=/google-analytics.com/127.0.53.53
    address=/googletagmanager.com/127.0.53.53
    address=/fonts.googleapis.com/127.0.53.53
    ....
    Wenn eine Anwendung (z.B. Webbrowser oder E-Mail Client) den Server kontaktieren möchte, wird sie zu der nicht existieren IP-Adresse 127.0.53.53 geschickt.

    Man muss die Liste nicht per Hand pflegen. Im Internet gibt es mehrere Listen mit Tracking-, Malware und Werbeserver, die man nutzen kann. Die Listen müssen nur passend für dnsmasq umgeschrieben werden.

    Als Beispiel kann man das Script disconnect-filter-for-dnsmasq.sh nehmen, welches die Listen von Disconnect.me herunter lädt, passend umschreibt und die Config neu lädt: #!/bin/bash

    for LISTE in "tracking.txt" "malware.txt" "malvertising.txt" "ad.txt"
    do

    FILE=`mktemp`

    # Das alles in eine lange Zeile!
    curl --tlsv1.2 -s -o $FILE https://s3.amazonaws.com/lists.disconnect.me/simple_$LISTE && grep -v "#" $FILE | sed '/^[\s]*$/d' | sed 's/^/address=\//' |
    sed 's/$/\/127.0.53.53/' > /etc/NetworkManager/dnsmasq.d/simple_$LISTE.conf

    # Aufräumen
    if [ -e $FILE ]; then
      rm $FILE
    fi

    done

    # Neue Konfiguration laden
    service NetworkManager reload
    exit 0
    Das Script muss als Administrator "root" oder mit "sudo" ausgeführt werden. Man kann es auch in das Verzeichnis "/etc/cron.weekly" kopieren und als ausführbar markieren, damit es regelmäßig automatisch ausgeführt wird: > sudo cp disconnect-filter-for-dnsmasq.sh /etc/cron.weekly/filter-4-dnsmasq
    > sudo chmod +x /etc/cron.weekly/filter-4-dnsmasq
    Das Blockieren auf DNS-Ebene ist grobkörnig. Es ersetzt keinen AdBlocker im Browser wie uBlock Origin, der sehr viel gezielter blockiert. Es ist aber ein Grundschutz für alle Programme.
  4. Den Rechner rebooten, damit die Änderungen aktiviert werden.

    Nachdem eine Internetverbindung hergestellt wurde, kann man im Syslog die neuesten Meldungen von Deamon dnsmasq heraus filtern und schauen, ob DNSSEC aktiviert wurde und welche Upstream Nameserver genutzt werden: > sudo tail -n 100 /var/log/syslog | grep dnsmasq
    ...
    Aug 28 10:36:21 host dnsmasq[1559]: gestartet, Version 2.76, Cachegröße 1000
    Aug 28 10:36:21 host dnsmasq[1559]: DBus-Unterstützung eingeschaltet: verbunden
    Aug 28 10:36:21 host dnsmasq[1559]: DNSSEC validation enabled
    Aug 28 10:36:21 host dnsmasq[1559]: Warnung: keine (Upstream) Server konfiguriert
    Aug 28 10:36:21 host dnsmasq[1559]: Cache geleert
    ...
    Aug 28 10:36:21 host dnsmasq[1559]: vorgelagerte Server von DBus gesetzt
    Aug 28 10:36:21 host dnsmasq[1559]: Benutze Namensserver 84.200.69.80#53
    Aug 28 10:36:21 host dnsmasq[1559]: Benutze Namensserver 77.109.148.137#53
    Aug 28 10:36:21 host dnsmasq[1559]: Cache geleert
In Ubuntu 17.04 zesty wurde die Standardkonfiguration für die DNS Namens­auflösung geändert. Es wird systemd-resolve mit den built-in Nameservern 8.8.8.8 und 8.8.4.4 (Google Nameserver) genutzt. Das vereinfacht zwar die automatische Konfiguration bei der Installation, ist aber doof, weil Google die eigenen public Name­server auch zum Datensammeln nutzt.
 
Um den alten Zustand mit dnsmasq als DNS Cache Deamon wieder herzustellen, sind folgende Anpassungen nötig:
  1. Bei Neuinstallation von Ubuntu 17.04 zesty ist das Paket dnsmasq zu installieren (bei Upgrades ist es noch vorhanden): > sudo apt install dnsmasq
  2. systemd-resolved ist zu stoppen und für zukünftige Starts zu deaktivieren: > sudo systemctl disable systemd-resolved.service
    > sudo service systemd-resolved stop
  3. Der NetworkManager soll beim Verbinden mit dem Internet den Deamon dnsmasq wieder starten. Dafür fügt man in der Datei "/etc/NetworkManager/NetworkManager.conf" in der Sektion [main] folgende Zeile ein: [main]
    ...
    dns=dnsmasq
  4. Außerdem ist der Symlink "/etc/resolv.conf" zu löschen. Der Symlink wird später vom NetworkManager neu angelegt. > sudo rm /etc/resolv.conf
  5. Danach startet man den NetworkManager oder den Rechner neu, und alles ist wieder wie beim Alten.
Lizenz: Public Domain