{{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./gnome-network-utils.png, 48, align=left)]] In dieser Anleitung werden verschiedene Methoden vorgestellt, offene Netzwerkports festzustellen und zu analysieren. In der Standardinstallation sind einige [:Offene_Ports:Ports geöffnet], die jedoch nicht auf externen Netzwerkinterfaces lauschen. Diese Ports werden angezeigt, wenn man offene Ports auf dem eigenen Rechner untersucht, sind jedoch aus dem Netzwerk nicht sichtbar. Aussagekräftige Portscans sind daher von einem zweiten Rechner aus einfacher. = Analyse offener Ports = [[Anker(netstat)]] == netstat == Einer der ersten Analyse-Schritte des Netzwerkstatus ist das Programm [:netstat:] im Terminal [1]: {{{#!vorlage Befehl netstat -tulpen }}} Mit der Option `a` statt `l` werden nicht nur offene Sockets, sondern auch alle bestehenden Verbindungen angezeigt, was ein wenig unübersichtlich werden kann. == lsof == Da unter Linux intern fast alle Dinge als Datei dargestellt werden, so etwa auch das Netzwerk, kann man auch bestehende Netzwerkverbindungen durch die Anzeige offener Dateien, die das Netzwerk benötigt, analysieren. {{{#!vorlage Befehl lsof > odat }}} [:lsof:] erzeugt eine (sehr lange) Liste der offenen Dateien, die hier in die Datei '''odat''' geschrieben wird. Diese kann man dann mit einem Texteditor [2] auf Netzwerkverbindungen untersuchen. Eine solche wäre z.B.: {{{ xchat 8134 dm 8u IPv4 13568 TCP 192.168.254.2:46771->zelazny.freenode.net:ircd (ESTABLISHED) }}} Alternativ kann man die offenen Internet-Verbindungen auch so anzeigen lassen: {{{#!vorlage Befehl lsof -i # bzw. für mehr Angaben aufgrund von Diensten, die mit Root-Rechten laufen: sudo lsof -i }}} Einen Dienst mit dem Status unbekannt sollte man sich immer genauer anschauen - z.B.: {{{ PORT STATE SERVICE 906/tcp open unknown }}} Dieser Dienst ist in diesem Fall auch nicht der Datei '''/etc/services''' eingetragen. Die Analyse erfolgt im Terminal: {{{#!vorlage Befehl sudo fuser 906/tcp }}} findet heraus, welche Prozess-ID (PID) der Prozess gerade hat (z.B. `906/tcp: 4122`). Diese PID kann man nun weiter untersuchen: {{{#!vorlage Befehl ps -fp 4122 }}} Ausgabe: {{{ UID PID PPID C STIME TTY TIME CMD user 4122 1 0 Oct29 ? 00:00:00 /usr/sbin/famd -T 0 }}} Weitere Informationen zu einem unbekannten Prozess findet man über den Befehl [:man:]: {{{#!vorlage Befehl man -k famd }}} Dieser sucht nach Anleitungsseiten zu dem gefundenen Programm. Diese kann man sich dann mit: {{{#!vorlage Befehl man PROGRAMMNAME }}} anzeigen lassen. In diesem Fall ist es der "file alteration monitor" (fam). Was macht dieser Dienst? Statt das Dateisystem auf Änderungen zu überprüfen, wird der FAM-Daemon vom Kernel über Änderungen informiert und kann dann wiederum die Anwendungen informieren. Dieser Dienst wurde früher automatisch installiert, inzwischen ist er durch ein anderes Verfahren ersetzt worden. == Angry IP Scanner == [:Angry_IP_Scanner:] ist ein klassischer Portscanner mit einer einfachen grafischen Oberfläche. Das englischsprachige Programm basiert auf [:Java:] und kann daher plattformübergreifend unter Linux, Windows und Mac OS X eingesetzt werden (teilweise existieren auch native Versionen). == nmap == Das "Schweizer Taschenmesser" unter den Portscannern ist das Programm [:nmap:], das auch eine grafische Oberfläche besitzt. Auf Grund des großen Funktionsumfangs ist diesem Werkzeug ein eigener Artikel gewidmet. = Analyse kompromittierter Systeme = All diese Analysemethoden können bei kompromittierten Systemen versagen. Oftmals werden dort Diagnosetools mit veränderten Versionen überschrieben. Kritische offene Ports können in diesem Fall von den manipulierten Werkzeugen verschwiegen werden. Hiergegen hilft der Portscan von einem externen System aus. Es kann allerdings sein, dass nur auf Anfragen von einer bestimmte IP-Adresse aus reagiert wird, dann versagt auch diese Methode. Gut getarnte Rootkits werden eigentlich nie gefunden, außer man hat Glück und der Kernel ist intakt (bzw. man hat einen neuen aufgespielt), dann kann man in '''/proc/net/''' etwas finden (z.B. mit "`cat /proc/net/tcp`"). Die Ausgaben sind hexadezimal und man muss einen Taschenrechner zu Hilfe nehmen. = Rechtliches = Da ein Portscan als erster Schritt eines Endringversuches bewertet werden kann, ist die Legalität eines solchen umstritten. Ein Scan auf eigene Systeme ist aber in jedem Fall legal. Weiterhin können vermehrte Anfragen auf (schwache) Systeme nach [https://www.gesetze-im-internet.de/stgb/__303b.html/ § 303b StGB] {de} als Computersabotage verstanden werden. Portscanner an sich werden derzeit jedoch nicht als `Computerprogramm zum Ausspähen von Daten` nach [https://www.gesetze-im-internet.de/stgb/__202c.html § 202c StGB] {de} verstanden, da sie keine Daten abfangen oder Sicherheitsmechanismen umgehen. Ein Portscan sollte man deswegen nur ausführen, wenn man die explizite Erlaubnis dafür hat. = Links = * Weitere Kommandozeilenscanner: * [https://www.lysator.liu.se/~pen/pnscan/ pnscan] {en} - als [packages:pnscan:] in den offiziellen Paketquellen enthalten * [sourceforge2:knocker:Knocker] {en} - als [packages:knocker:] in den offiziellen Paketquellen enthalten * [http://www.hping.org/ hping] {en} - TCP/IP-Paket Analyse, als [packages:hping3:] in den offiziellen Paketquellen enthalten # tag: Netzwerk, Sicherheit, Übersicht