DoS-Attacken durch mDNS / Avahi

Es ist sehr angenehm, wenn die Netzwerkkonfiguration sich automatisch regelt. Netzwerkdrucker melden ihre Anwesenheit automatisch im LAN an, damit PCs einfach so sehen können, was vorhanden ist. Stichwörter zu dieser Technologie sind: Zeroconf, mDNS, Avahi, Bonjour, Rendezvous.

Leider können diese Dienste im Rahmen einer DoS-Attacke ("denial of service") mißbraucht werden. Dabei ist der PC, auf dem der Dienst läuft, nicht Ziel der Attacke, sondern wird zum Teil des Angriffs auf den Zielserver umfunktioniert, indem dieser PC dazu gebracht wird, den Server mit unnötigen Netzwerkverkehr zu überfluten.

Es wird daher dringend empfohlen, mDNS bzw. den Avahidienst zu deaktivieren.

Testen

Mit folgendem Befehl kann man testen, ob der Rechner „ThisHost“ das Problem aufweist:

dig @ThisHost +time=1 -p 5353 -t ptr _services._dns-sd._udp.local | grep _workstation

Wenn eine Zeile erscheint, hat man ein Problem. Wenn nicht, dann nicht.

Lösungen

Nachfolgend werden verschiedene Möglichkeiten dazu beschrieben.

Multicast deaktivieren

Die einfachste Möglichkeit besteht darin, auf der Ethernetschnittstelle des Linux-PCs Multicast auszuschalten:

ifconfig <Schnittstelle> -multicast

Schnittstelle bitte entsprechend durch z.B. eth0 sein. Am Besten fügt man diese Zeile in der Datei /etc/rc.local ein, damit sie beim Systemstart ausgeführt wird.

Im folgenden Beispiel sieht man, dass „MULTICAST“ bei der Ausgabe von verschindet:

# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 2c:27:d7:49:3b:92
...
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
# ifconfig eth0 -multicast
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 2c:27:d7:49:3b:92
...
UP BROADCAST RUNNING MTU:1500 Metric:1
...

ACHTUNG: Wer mit Time Machine Mac-Backups auf einem Linux-PC machen möchte, man leider Multicast nicht ausschalten.

Avahi ausschalten

Beim Start des Avahi-Daemons meldet sich der Daemon bei mDNS (Multicast) an. Wenn auf der Schnittstelle Multicast ausgeschaltet ist, ist es kein Problem. Falls aber Multicast eingeschaltet bleiben muss, sollte man Avahi irgendwie deaktivieren.

Durch Deinstallation

Unter Ubuntu und Debian kann man so den Avahi-Daemon vom System entfernen:

apt-get purge avahi-daemon

Bei anderen Linux-Arten ist der Befehl anders.

Durch Umbennung

Es kann sein, dass sich der avahi-daemon nicht deinstallieren läßt, weil ein anderer Dienst davon abhängt. In diesem Fall könnte man sich wie folgt behelfen:

mv /usr/sbin/avahi-daemon /usr/sbin/avahi-daemon.orig

ACHTUNG: Beim System-Update kann es vorkommen, dass das Binary wiederherstellt wird.