Wie überprüfe ich, ob unter Red Hat Linux / CentOS ein Port geöffnet ist?

8

Ich habe ein Programm geschrieben, das SLP implementieren soll (rfc2608), und ich habe Probleme, es zu testen. Ich bin nicht sicher, ob der Port geschlossen ist oder ob da draußen etwas meine Multicast-Datagramme fallen lässt. Gibt es einen Befehl, den ich von einem Redhat-Terminal aus ausführen kann, um zu erfahren, ob an dieser Box ein Port geöffnet ist?

Ich habe einige Beiträge zum einfachen Telneting an den Port usw. gesehen, aber das funktioniert nur für TCP-Ports, oder? Ich habe auch gelesen, dass es Websites gibt, die solche Dinge von außen testen können. Aber ich möchte das wirklich nicht tun, da ich nicht an einem vollständigen Port-Scan interessiert bin, die Box sich in einem privaten Netzwerk befindet, und selbst wenn dies nicht der Fall wäre, möchte ich nicht, dass es wie ein Sicherheitsvorfall aussieht es geht voran. Ich möchte einfach abfragen und sehen, ob Port 427 offen ist.

Jason Thompson
quelle

Antworten:

7

Hmm. Multicast, damit Telnet nicht funktioniert.

Sie können tcpdump ausführen, um festzustellen, ob Datenverkehr auf Ihren Server gelangt. Führen Sie so etwas auf Ihrem Server aus:

tcpdump -i eth0 port 427 und sehen, ob etwas auftaucht.

Wenn nichts passiert, gibt es anderswo eine Art Block.

Überprüfen Sie Ihre lokale Firewall mit etwas wie iptables -L -n, um sicherzustellen, dass die INPUT-Kette Ihren Datenverkehr zulässt.

Zur weiteren Diagnose müssen Sie möglicherweise Traceroutes von Ihrem Laptop aus ausführen und dabei das Protokoll und den Port angeben (andernfalls wird standardmäßig ICMP verwendet).

cjc
quelle
Ich mag die Idee, Trace Route zu verwenden. Leider ist die Trace-Route für Windows nicht so funktionsfähig, wie ich es brauche. Der Befehl iptables hat einiges geholfen. Wenn ich es richtig lese, sieht es so aus, als würde auf dieser Box keine Firewall ausgeführt, sodass auf einem der Router etwas passiert oder die TTL zu kurz ist.
Jason Thompson
4

Hmm, netstat -anp | grep 427würde den Trick machen. Vielleicht lsof -i | grep 427auch.

Sie können von einem externen Linux-Host aus überprüfen nmap. Vielleicht nmap -sT -p 427oder nmap -sU -p 427(für UDP).

ewwhite
quelle
1
Vielen Dank. Ich kann sehen, dass meine App lauscht. Ich kann nur nicht überprüfen, ob der Port von der Firewall blockiert wird.
Jason Thompson
Haben Sie iptables aktiviert?
ewwhite
1

netstat lokal und nmap auf einem Remote-Host.

Ich benutze oft

netstat -plunt

und

netstat -ant

um ein Bild davon zu bekommen, was los ist.

ptman
quelle
1
netstat scheint mir zu zeigen, welche Ports lauschen und welche Verbindungen hergestellt werden, aber woher weiß ich, ob ein Port tatsächlich geöffnet ist? Wenn ich meine Anwendung starte, sehe ich, dass sie lauscht. Ich kann einfach nicht von meinem Laptop zum Server kommunizieren (ca. 4 Hops). Ich bin daran interessiert, was die Ursache für diesen Mangel an Kommunikation ist. Ist der Port blockiert oder werden meine Datagramme gelöscht?
Jason Thompson
1

Ich vermute, dass mit offenem Port gemeint ist, dass er nicht von der Firewall blockiert wird. In diesem Fall können Sie den folgenden Befehl auf dem Host-Computer ausführen (bei Redhat / Centos 7):

firewall-cmd --list-ports | grep -w <Port No.>

Im Falle von redhat6 / centos6 können Sie ausführen

iptables --list-rule | grep -w <Port No.>

Ich hoffe das hilft..

Vatsal Prakash
quelle
0

Der beste Weg aus meiner Erfahrung ist mit nmap

nmap 10.0.0.1 -Pn -p 427 

Ersetzen Sie 10.0.0.1 offensichtlich durch öffentliche IP, wenn Sie von einem anderen Computer aus testen, oder durch 127.0.0.1, wenn Sie auf dieser bestimmten Box testen.

gibt so etwas aus:

PORT    STATE    SERVICE
427/tcp filtered https

Nmap done: 1 IP address (1 host up) scanned in 2.14 seconds

Optionen oben bedeuten:

-Pn: Treat all hosts as online -- skip host discover

und

-p <port ranges>: Only scan specified ports
               Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

Wenn Sie noch nicht haben nmap:

yum install nmap

Und da in diesem Fall gefiltert wird, können Sie feststellen, ob es in der Box gefiltert ist, in der sich der Dienst befinden soll, indem Sie versuchen, von zwei verschiedenen Computern aus zu überprüfen.

oder nmap auf dieser Box ausführen

nmap 127.0.0.1 -Pn -p 427 

Sie können hinzufügen --reason, um zu sehen, warum gefiltert wird

nmap 10.0.0.1 -Pn -p 427 --reason
Eduard Florinescu
quelle
-3

Wenn sich ein Port im Überwachungszustand befindet, bedeutet dies, dass er bereit ist und darauf wartet, dass eine Verbindung hergestellt wird.

Ihre Anwendung muss den Port zu diesem bestimmten Zeitpunkt verwenden, bevor sich der Port im Status "ESTABLISHED" der Verbindung befinden kann

Zusammenfassend ist der Port im Empfangszustand ein gutes \ positives Ergebnis.

Ich hoffe das hilft dir besser zu verstehen ..

Slickfiz
quelle
Dies zeigt an, ob eine Anwendung den Port überwacht, aber nicht, ob sie auf der Host-Firewall geöffnet ist
Thomas Berger