Ich habe eine Frage zum Schließen des Hafens. Ich glaube, ich habe einige seltsame Dinge.
Wenn ich Execute benutze
nmap --top-ports 10 192.168.1.1
Es zeigt, dass der 23 / TCP-Port offen ist.
Aber wenn ich ausführe
nmap --top-ports 10 localhost
es zeigt, dass der 23 / tcp-Port geschlossen ist.
Welcher von ihnen ist wahr? Ich möchte diesen Port auf meinem gesamten System schließen. Wie kann ich das tun?
localhost
auf dielo
(Loopback-) Schnittstelle zugegriffen. die IP - Adresse accesing Ihre reale Schnittstelle, wahrscheinlicheth0
oderwlan0
, etc. zu jagen.Antworten:
Nmap ist ein großartiger Portscanner, aber manchmal möchten Sie etwas Authentischeres. Sie können den Kernel fragen, welche Prozesse welche Ports geöffnet haben, indem Sie das
netstat
Dienstprogramm verwenden:Die Optionen, die ich gegeben habe, sind:
-t
Nur TCP-l
Nur Listening-Ports-n
Suchen Sie nicht nach Dienst- und Hostnamen, sondern zeigen Sie nur die Nummern an-p
Prozessinformationen anzeigen (Root-Berechtigung erforderlich)In diesem Fall können wir sehen, dass
sshd
auf jedem Interface (0.0.0.0
) -Port 22 undcupsd
auf Loopback (127.0.0.1
) -Port 631 empfangsbereit ist. Ihre Ausgabe zeigt möglicherweise, dasstelnetd
eine lokale Adresse von vorhanden ist192.168.1.1:23
, was bedeutet, dass sie nicht auf Verbindungen auf dem Loopback-Adapter antwortet (zB kannst du nichttelnet 127.0.0.1
).Es gibt andere Tools, die ähnliche Informationen anzeigen (z. B.
lsof
oder/proc
), aber netstat ist am weitesten verbreitet. Es funktioniert sogar unter Windows (netstat -anb
). BSD netstat ist etwas anders: Sie müssen stattdessen sockstat (1) verwenden , um die Prozessinformationen abzurufen .Sobald Sie die Prozess-ID und den Programmnamen haben, können Sie den Prozess suchen und beenden, wenn Sie den Port schließen möchten. Für eine genauere Kontrolle können Sie eine Firewall (iptables unter Linux) verwenden, um den Zugriff nur auf bestimmte Adressen zu beschränken. Möglicherweise müssen Sie einen Dienststart deaktivieren. Wenn die PID unter Linux "-" ist, handelt es sich wahrscheinlich um einen Kernel-Prozess (dies ist beispielsweise bei NFS üblich).
Hinweis: Ich sagte "autorisierend", weil Sie nicht durch Netzwerkbedingungen und Firewalls behindert werden. Wenn Sie Ihrem Computer vertrauen, ist das großartig. Wenn Sie jedoch den Verdacht haben, dass Sie gehackt wurden, können Sie den Tools auf Ihrem Computer möglicherweise nicht vertrauen. Das Ersetzen von Standarddienstprogrammen (und manchmal sogar von Systemaufrufen) durch Dienstprogramme, die bestimmte Prozesse oder Ports (auch als Rootkits bezeichnet) verbergen, ist unter Angreifern Standard. Am besten ist es an dieser Stelle, eine forensische Kopie Ihrer Festplatte anzufertigen und diese von einem Backup wiederherzustellen. Verwenden Sie dann die Kopie, um festzustellen, wie sie eingegangen sind, und schließen Sie sie ab.
quelle
Ein Linux-System verfügt über eine sogenannte Loopback-Schnittstelle für die interne Kommunikation. Sein Hostname ist
localhost
und seine IP-Adresse ist127.0.0.1
.Wenn Sie laufen
nmap
auflocalhost
, führen Sie tatsächlich die Portscan auf der virtuellen Loopback - Schnittstelle.192.168.1.1
ist die IP-Adresse Ihrer physischen (wahrscheinlichsteneth0
) Schnittstelle.Sie haben also
nmap
zwei verschiedene Netzwerkschnittstellen verwendet. Aus diesem Grund unterscheiden sich die offenen Ports. Sie sind beide wahr.Wenn Sie den TCP-Port 23 geöffnet haben, ist es wahrscheinlich, dass
telnet
auf Ihrem Computer ein Server ausgeführt wird (was aufgrund der fehlenden Verschlüsselung keine gute Sache ist) oder Sie haben eine Art Trojaner.quelle
iptables
Regel hinzufügen, wie eine Antwort in der Nähe nahelegt. Dadurch bleibt der Dienst jedoch ungenutzt, wodurch Ressourcen verbraucht werden. Also, wenn Sietelnetd
gelaufen sind, fahren Sie es einfach herunter.Zum "Schließen" des Ports, den Sie verwenden können
iptables
quelle
DROP
Sie auch, dass es das Paket sieht und es dann ignoriert. Normalerweise (ohne aktivierte iptables) würde der Kernel ein nicht erreichbares ICMP-Port-Paket zurücksenden (das mit demREJECT
Ziel simuliert werden kannDROP
).REJECT
Ziels durch Schreiben generiert werden kann-j REJECT --reject-with tcp-reset
.Wenn Sie dies tun
nmap localhost
, werden Sie auf eine andere Situation hingewiesen: Einige Linux-Programme arbeiten als Server, obwohl sie nur lokal verwendet werden. Dies liegt daran, dass andere Programme sie wie einen Server verwenden, zu dem sie eine Verbindung herstellen. Beide Antworten sind also richtig, da Sie etwas anderes fragen.Port 23 wird für Telnet verwendet. Wird normalerweise nicht mehr verwendet. Versuchen Sie
nmap -sV 192.168.1.1
herauszufinden, welches Programm den Port öffnet.(192 ... ist eine lokale Netzwerk-IP, daher ergibt das Ergebnis von
nmap <your outside world IP>
aufgrund möglicher Firewall-Einstellungen usw. auch ein anderes Ergebnis.)quelle
Wenn ein Dienst auf Port 23 ausgeführt und abgehört wird, ist es (wahrscheinlich ) besser, den Prozess zu beenden, der auf Port 23 lauscht,
telnet
als ihn weiter auszuführen und Port 23 zu schließen oder zu blockiereniptables
.Wenn an einem Port kein Prozess Zuhörens ist, auch in Abwesenheit eines Firewall - Block, jeder Versuch , eine Verbindung zu ihm in einer sofortigen führen sollte „Verbindung abgelehnt“ (
ECONNREFUSED
zuconnect(2)
)Ein Weg, um den Prozess (und seine PID) zu finden, der auf Port 23 lauscht, wenn es einen solchen Prozess gibt, ist:
In den obigen
-i
Listen sind offene Internet-Ports (sowohl UDP als auch TCP) aufgeführt, und -P sperrt die Übersetzung von Ports in Dienstnamen (über/etc/services
).Nachdem Sie festgestellt haben, dass der laufende Prozess an Port 23 empfangsbereit ist, können Sie anhand des Prozessbaums (mit say,
pstree
) herausfinden, wie er gestartet wurde . Wenn das übergeordnete Elementinit
(sehr wahrscheinlich) ist, können Sie unter rekursiv nach dem Namen des Prozesses suchen/etc
. z.B:Dies sollte Sie zu der besten Möglichkeit führen, die Ausführung zu deaktivieren.
quelle
sudo lsof -Pi :23
.23
) übereinstimmt. Wenn Sie nach dem ein Leerzeichen:23
:234
:2345
lsof -Pi :23
) nach einer exakten Übereinstimmung zu suchen .