Einführung
In der Serversicherheit bezeichnet die „Angriffsfläche“ die Gesamtheit aller Punkte, an denen ein nicht autorisierter Benutzer versuchen kann, in ein System einzudringen oder Daten abzurufen. Ein wichtiger Schritt zur Verringerung dieser Angriffsfläche ist die Verwaltung von Netzwerk-Ports.
Jeder offene Port kann als möglicher Einstiegspunkt für einen Angreifer dienen. Wenn ein Dienst an einem Port lauscht, ist er bereit, Daten zu empfangen. Ist dieser Dienst anfällig oder sollte er nicht öffentlich erreichbar sein, ist Ihr System gefährdet.
Ein lauschender Port bedeutet nicht automatisch eine Gefahr, aber er bedeutet eine erhöhte Angriffsfläche. Ein Sicherheits-Audit beginnt damit, zu wissen, welche Dienste erreichbar sind und ob diese Erreichbarkeit beabsichtigt ist.
Darum gehört die Überprüfung von Ports zur grundlegenden Absicherung eines Systems. Gute Sicherheit besteht nicht nur darin, Software zu patchen, sondern auch darin, unnötige Angriffsflächen zu reduzieren.
In diesem Lab führen Sie ein grundlegendes Sicherheits-Audit durch. Sie werden:
- Alle lauschenden TCP-Ports mit dem Befehl
ssauflisten. - Verdächtige oder nicht standardmäßige Ports ermitteln.
- Den Prozess und den Benutzer untersuchen, die einen Port geöffnet haben.
Lauschende TCP-Ports auflisten
Ihre erste Aufgabe besteht darin, einen vollständigen Überblick über den Netzwerkstatus zu erhalten. Dazu verwenden wir den Befehl ss (Socket Statistics), einen modernen und schnelleren Ersatz für das ältere Tool netstat.
Für das Audit konzentrieren wir uns auf lauschende TCP-Ports und die Prozesse, die diese Ports geöffnet haben.
Diese Prozessinformationen machen aus einer reinen Socket-Liste eine verwertbare Grundlage. Eine Portnummer allein sagt nur wenig aus. Ist der Port jedoch einem bestimmten Prozess und Benutzer zugeordnet, können Sie den Dienst bewerten und verwalten.
Führen Sie den folgenden Befehl aus:
sudo ss -lntp
Bedeutung der Optionen:
-l(listening): Zeigt nur Sockets an, die auf Verbindungen warten.-n(numeric): Zeigt IP-Adressen und Portnummern anstelle von Hostnamen an. Das ist schneller und übersichtlicher.-t(tcp): Zeigt nur TCP-Sockets an.-p(processes): Zeigt den Namen und die PID (Process ID) des Prozesses an, der den Socket verwendet.- Hinweis: Für Dienste, die anderen Benutzern gehören, benötigen Sie
sudo, um die Prozessinformationen sehen zu können.
- Hinweis: Für Dienste, die anderen Benutzern gehören, benötigen Sie
Die Ausgabe sollte ungefähr so aussehen:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.1:8080 0.0.0.0:* users:(("node",pid=123,fd=18))
LISTEN 0 5 0.0.0.0:9999 0.0.0.0:* users:(("python3",pid=456,fd=3))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))
Die Spalte Local Address:Port zeigt, an welcher Adresse und welchem Port der Dienst lauscht. Die Spalte Process zeigt, welches Programm dafür verantwortlich ist.
Ein weiterer wichtiger Hinweis ist, ob die Adresse 127.0.0.1 oder 0.0.0.0 lautet. Dienste, die nur auf dem Localhost lauschen, sind ausschließlich auf dem Computer selbst erreichbar. 0.0.0.0 bedeutet normalerweise, dass der Dienst an allen Netzwerkschnittstellen lauscht.
Verdächtige Ports ermitteln
Analysieren Sie nun die Ausgabe und suchen Sie nach Auffälligkeiten.
Standarddienste verwenden normalerweise sogenannte „Well-Known Ports“ (0–1023). Beispiele:
- Port 22: SSH (Secure Shell)
- Port 80: HTTP (Webserver)
- Port 443: HTTPS (sicherer Webserver)
Achten Sie beim Sicherheits-Audit auf nicht standardmäßige Ports oder Dienste, die Sie nicht erkennen.
Das Ziel besteht nicht darin, bei jedem unbekannten Port in Panik zu geraten, sondern seinen Zweck zu überprüfen. Ein Dienst kann legitim, vorübergehend oder versehentlich gestartet worden sein. Beim Audit wird aus einer unbekannten Erreichbarkeit eine bekannte und bewertete Erreichbarkeit.
Überprüfen Sie die Ausgabe aus Schritt 1. Dort sollte ein Dienst zu sehen sein, der an Port 9999 lauscht. Dies ist kein standardmäßiger System-Port und erfordert daher eine weitere Untersuchung.
Filtern Sie diesen Eintrag mit grep heraus:
sudo ss -lntp | grep 9999
Beispielausgabe:
LISTEN 0 5 0.0.0.0:9999 0.0.0.0:* users:(("python3",pid=289,fd=3))
Damit ist bestätigt, dass an Port 9999 ein Prozess aktiv ist. Als Nächstes ermitteln Sie genau, um welchen Prozess es sich handelt.
Prozesszugehörigkeit untersuchen
Zu wissen, dass ein Port geöffnet ist, reicht nicht aus. Sie müssen wissen, wer den Dienst ausführt. Ein verdächtiger Prozess, der als root läuft, stellt einen kritischen Notfall dar. Ein Prozess unter einem eingeschränkten Benutzer ist möglicherweise weniger schwerwiegend, aber dennoch gefährlich.
PID ermitteln: Sehen Sie sich die Ausgabe des vorherigen Befehls an. Suchen Sie im Abschnitt users: nach dem Wert pid=....
- Beispiel:
users:(("python3",pid=289,fd=3))-> Die PID lautet 289. - Hinweis: Ihre PID wird anders lauten.
Prozess untersuchen: Verwenden Sie den Befehl ps, um Details zu dieser PID anzuzeigen. Ersetzen Sie <PID> durch die tatsächlich ermittelte Nummer.
ps -f -p <PID>
Beispiel für die PID 289:
ps -f -p 289
Ausgabe analysieren:
UID PID PPID C STIME TTY TIME CMD
labex 289 189 0 10:00 pts/0 00:00:00 python3 -m http.server 9999
- UID: Der Benutzer, unter dem der Prozess ausgeführt wird, zum Beispiel
labex. - CMD: Der genaue Befehl, mit dem der Prozess gestartet wurde, zum Beispiel
python3 -m http.server 9999.
Diese Ausgabe zeigt, dass der Benutzer labex einen Python-HTTP-Server gestartet hat, der ausdrücklich an Port 9999 lauschen soll. In einem realen Szenario würden Sie den Prozess sofort beenden, wenn Sie ihn nicht autorisiert haben.
Dieser letzte Schritt ordnet die Ursache zu: Es geht nicht nur darum, „welcher Port geöffnet ist“, sondern auch darum, „welcher Befehl von welchem Benutzer gestartet wurde und diese Netzwerk-Erreichbarkeit erzeugt hat“. Dadurch wird das Audit für die Reaktion auf Sicherheitsvorfälle und die Absicherung des Systems nützlich.
Zusammenfassung
In diesem Lab haben Sie erfolgreich ein Sicherheits-Audit der lauschenden Ports des Systems durchgeführt.
Wichtige Erkenntnisse:
- Transparenz: Verwenden Sie
sudo ss -lntp, um genau zu sehen, welche Dienste auf Verbindungen lauschen. - Identifikation: Erkennen Sie Standard-Ports und markieren Sie nicht standardmäßige Ports wie 9999 zur weiteren Untersuchung.
- Zuordnung: Verwenden Sie
ps -f -p <PID>, um den Benutzer und den Befehl zu ermitteln, die für einen verdächtigen Socket verantwortlich sind.
Regelmäßige Audits helfen Ihnen, nicht autorisierte Dienste wie Hintertüren oder verschiedene Webserver zu erkennen und zu entfernen, bevor sie ausgenutzt werden können.



