Früher war der Hersteller eines verbreiteten Fenstersystems berühmt-berüchtigt für seine freizügigen Voreinstellungen. Jeder Anwender sollte mit seinem Computer sofort losarbeiten können, egal wie. Weil er wie die meisten Hersteller nicht so genau weiß, was der Benutzer will, aktivierte er vorsichtshalber alle möglichen Netzwerkdienste. So traten in der Hinsicht kaum Probleme auf: Was der Nutzer versuchte, funktionierte auf Anhieb - abgesehen von fehlerhaften Diensten und Funktionen, doch das ist eine andere Geschichte.
Das Problem an dieser Haltung ist freilich, dass sie böswilligen Zeitgenossen relativ freien Zugriff auf den Computer gibt. Es ist zwar bequem, wenn jeder Dienst per Default über das Netzwerk zugänglich ist, allerdings profitieren davon auch die bösen Geister. Finden diese einen ausnutzbaren Fehler, dann hat der reguläre Nutzer ein Problem.
Viele Programme, die Netzwerkdienste bereitstellen, sind jedoch auf den meisten vernetzten Computern verzichtbar. Sicherheitshalber sollten sie also ausgeschaltet bleiben. Beim Fensterln erledigen das - hoffentlich - die Sicherheits-Updates. Unter Unix sind Sie als Administrator gefragt, denn leider schalten nicht alle Distributionen alle Dienste per Default aus.
Prozesse anzeigen
Zunächst sollten Sie ermitteln, welche Dienste auf Ihrem Computer laufen, am einfachsten per »ps« (Process Status). Die ausführliche Version »ps ax« (BSD-Stil) oder »ps -ef« (Posix-Stil) erzeugt eine handliche Liste aller auf dem Unix-Computer laufenden Prozesse (Abbildung 1).
Abbildung 1: »ps« zeigt alle laufenden Prozesse an. Das angehängte »head -11« beschränkt die Ausgabe auf die ersten 11 Zeilen.
Im Idealfall finden Sie hier keinen Prozess, den Sie nicht kennen und von dem Sie nicht sicher wissen, dass er auf diesem System wirklich erforderlich ist. Allerdings beherbergt selbst ein fast arbeitsloser Rechner mit nur einem Benutzer bereits knapp 100 Prozesse. Hier kann nur ein sehr erfahrener Admin wirklich alle Aktivitäten einordnen. Es gilt also zu differenzieren.
Offene Türen finden
Das größte Gefahrenpotenzial geht zweifellos von Diensten aus, die Netzwerkverbindungen anbieten oder aufbauen. Selbstverständlich bietet Unix einen Befehl, um diese anzuzeigen: »netstat -a« meldet alle aktiven oder wartenden Sockets, also alle Verbindungen, über die laufende Programme mit der Außenwelt kommunizieren.
Unter Linux grenzen Sie die gewünschten Sockets mit »netstat -tuan« ein (Abbildung 2). Die zusätzlichen Optionen reduzieren die Ausgabe auf TCP- und UDP-Sockets, unterbinden also die Unix-Domain-Sockets, die nur für den lokalen Datenaustausch zwischen Programmen auf demselben Computer dienen. Die Option »-n« verhindert die Namensauflösung und spart damit kostbare Zeit. Allerdings sehen Sie nur noch die IP-Adresse der Kommunikationspartner, nicht deren DNS-Namen.
Die Ausgabe enthält für jeden Socket das Protokoll (TCP oder UDP) sowie die beiden Endpunkte und den Zustand der Verbindung. Der Zustand fehlt nur bei den verbindungslosen UDP-Sockets. Ein aktiver TCP-Socket (Zustand »ESTABLISHED«) trägt eine Verbindung zwischen zwei definierten Ports zweier IP-Adressen. Zustände wie »TIME_WAIT« oder »CLOSING« kennzeichnen Sockets, die gerade abgebaut werden oder schon geschlossen sind. Ein UDP-Socket kennt keine Verbindungen und damit auch keinen Zustand. Er nimmt einfach Pakete entgegen, sobald welche ankommen.