So überprüfen Sie, ob die Firewall für einen Port geöffnet ist, den Port jedoch nicht überwacht


29

Wir werden eine neue Anwendung auf einem Server bereitstellen und die Anwendung wird Port 8443 überwachen. Wir haben das Netzwerkteam gebeten, die Firewall für den Port 8443 auf diesem Server zu öffnen, bevor die Anwendung bereitgestellt wird. Es gibt derzeit keine Anwendung, die diesen bestimmten Port auf dem Server überwacht.

Gibt es sowieso kann ich sicherstellen, dass die Firewall für den Port 8443 geöffnet ist

Betriebssystem: Linux / Windows

Antworten:


16

Wenn Sie sehen möchten, ob Sie von einem Remotecomputer aus eine TCP-Verbindung herstellen können, installieren Sie OpenCSW auf diesem und dem Zielcomputer und installieren Sie netcat auf beiden Computern. Dies ist die Syntax für die Verwendung von netcat zum Testen von TCP-Verbindungen:

nc -vz targetServer portNum

So überprüfen Sie beispielsweise SSH auf "homeServer1":

nc -vz homeserver1 22

Auf diese Weise können Sie die Konnektivität auf TCP-Ebene vom Remotesystem aus testen. Netcat kann auch so konfiguriert werden, dass es einen Port überwacht und nicht als Client fungiert. So lauschen Sie auf TCP / 8443:

Auf dem Server, auf dem sich die Anwendung befindet: nc -l homeserver1 8443

Auf einem Computer außerhalb der Firewall: nc -vz homeserver.fqdn 8443

Dies ist ein Beispiel für eine erfolgreiche Ausführung:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!

Eine fehlgeschlagene Ausführung:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused

Damit ist die Frage, ob eine Firewall den Port blockiert, (nicht ganz) geklärt. Es scheint, dass die ncMeldung "Verbindung abgelehnt" angezeigt wird, wenn auf den Port zugegriffen werden kann, aber kein Listener vorhanden ist, und "Netzwerk ist nicht erreichbar", wenn die Anforderung von einer Firewall über icmp zurückgewiesen wurde (was bedeutet, dass möglicherweise ein Dienst auf dem Port vorhanden ist oder nicht ). Wenn die Firewall das Paket verwirft, anstatt es tatsächlich abzulehnen, ncbleibt sie nur eine Weile hängen.
Goldlöckchen

Nun, mein Ziel mit dem letzten netcat-Befehl war es nur, ein Beispiel für die erfolgreiche und die erfolglose Ausführung zu geben, damit sie die Ergebnisse interpretieren können, wenn es ihnen aus irgendeinem Grund unklar ist. Der Teil, der ihre Frage beantwortet, ist der erste Teil "Auf einer Maschine" / "Auf dem Server".
Bratchley

Ich weiß, dass die Frage zu Solaris 10 lautete, aber als letztes Jahr hat v11 Netcat im Repo.
Sleepyweasel

15

Firewalls sollten mit einer ICMP-Nachricht antworten , wenn sie eine Anfrage blockieren. Dies ist jedoch nicht unbedingt der Fall (Sie werden an diesem schönen Artikel interessiert sein ).

Sie können von außen testen, ob über eine Firewall auf einen Port zugegriffen werden kann, und wenn ja, ob etwas darauf wartet. Hier sind drei verschiedene Szenarien mit einer TCP-Anfrage, die Sie beobachten können wireshark, oder einem anderen Paket-Sniffer, und was Sie sehen werden:

1) Firewall lehnt Anfrage ab

Sie erhalten eine ICMP-Nachricht zurück, und das anfordernde Tool sollte Ihnen sofort einen entsprechenden Hinweis geben ("nicht erreichbar, Administrator verboten" usw.). Mit "Tool" meine ich den Client, den Sie zum Senden der Anfrage verwenden (ich habe verwendet telnet). Die Details der Nachricht 1 hängen davon ab, wie die Firewall konfiguriert ist, aber "Port nicht erreichbar" ist wahrscheinlich die häufigste.

"Keine Route zum Host" weist möglicherweise darauf hin, kann aber auch auf subtilere Routing-Probleme hinweisen.

2) Firewall lässt Paket fallen

Da keine Antwort eingeht, wartet das Tool, bis die Zeit abgelaufen ist oder Sie sich langweilen.

3) Firewall erlaubt Paket (oder es gibt keine Firewall), aber nichts lauscht auf dem Port.

Sie erhalten eine TCP RST / ACK-Nachricht zurück. Ich nehme an, dass das TCP-Protokoll dies erfordert. Mit anderen Worten, wenn der Port nicht abgehört wird, sendet das Betriebssystem selbst diese Antwort. Es kann schwierig sein , dies von 1 # unterscheiden nur auf das, was ein Tool meldet, weil es kann dasselbe in beiden Fällen sagen (aber höchstwahrscheinlich diese unterscheiden als „Verbindung abgelehnt“ vs. # 1, „Netzwerk nicht erreichbar“ ). In einem Paketsniffer auf dem Clientcomputer werden Szenario 1 (ICMP-Ablehnungsnachricht) und 3 (TCP-RST / ACK-Nachricht) deutlich voneinander unterschieden.

Die einzige andere Möglichkeit ist, dass das Paket von der Firewall durchgelassen wird und etwas lauscht, sodass Sie eine erfolgreiche Verbindung erhalten.

Mit anderen Worten: Wenn Sie davon ausgehen, dass Ihr Netzwerk im Allgemeinen ordnungsgemäß funktioniert, bedeutet dies, dass eine Firewall den Zugriff auf den Port aktiv verhindert, wenn Sie die Nummer 1 oder 2 erhalten. # 3 wird passieren, wenn Ihr Server nicht läuft, aber auf den Port zugegriffen werden kann, und natürlich (implizit) # 4 ist eine erfolgreiche Verbindung.


  1. ZB "Port nicht erreichbar", "Host verboten", verschiedene andere Kombinationen von Host / Port / Administrator und nicht erreichbar / verboten ; Suchen Sie diese in der Nachricht, da sie explizit auf eine aktive IP-Firewall hinweisen.

4

Mit dem Befehl können Sie feststellen netstat, ob ein Port geöffnet ist und empfangsbereit ist.

Beispiel

$ netstat -anp | less
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:41716               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:17500               0.0.0.0:*                   LISTEN      3034/dropbox        
tcp        0      0 0.0.0.0:17501               0.0.0.0:*                   LISTEN      3033/dropbox        
tcp        0      0 127.0.0.1:2143              0.0.0.0:*                   LISTEN      3191/ssh                       
tcp        0      0 127.0.0.1:2025              0.0.0.0:*                   LISTEN      3191/ssh 

Die Ausgabe zeigt Prozesse (Spalte ganz rechts) , die TCP-Ports überwachen. Die Portnummern sind die Nummern, die den Doppelpunkten nach den IP-Adressen folgen (0.0.0.0:111 wäre beispielsweise Port 111).

Die IP-Adressen zeigen lokale und fremde Adressen an . Lokal ist Ihr System, während Fremd Adressen sind, die entweder eine Verbindung zu Ihrem TCP-Port herstellen oder Sie eine Verbindung zu einem ihrer TCP-Ports herstellen.

Im Fall von Port 22 ist dies der ssh-Daemon, der auf meinem System ausgeführt wird. Dies ist LISTENING for connections. Sobald jemand versucht, eine Verbindung zum sshDämon herzustellen, wird eine Kopie von sich selbst abgefragt und diese Verbindung auf einen anderen Port verschoben, wobei TCP-Port 22 für zusätzliche Verbindungen offen bleibt, sobald sie eingehen.


Nur ein FYI, dass die Netstat-Syntax sehr GNU-spezifisch ist, dies ist die nächste Entsprechung, die nativ unter Solaris funktioniert: netstat -a -P tcp -f inet | awk '/LISTEN$/ {print $0}'
Bratchley

Das Motto von Solaris sollte lauten: "Nichts ist jemals einfach."
Bratchley

1

Die Konfiguration und der Status der Firewall-Konfiguration sind firewall- / betriebssystemspezifisch.

Was Sie tun können, ist es von Server2 zu versuchen:

nmap server1

Danke für Ihre Hilfe. Leider ist dieser Befehl in Solaris nicht vorhanden (oder nicht installiert). Ich
erhalte

@ user1734143 Es befindet sich wahrscheinlich in den "Repositories" oder in der entsprechenden Version von Solaris, aber Sie können es trotzdem herunterladen und sogar von hier
RSFalcon7

@ user1734143 ist über OpenCSW verfügbar, was Sie wahrscheinlich sowieso installieren sollten, was Ihre administrative Erfahrung VIEL einfacher macht.
Bratchley

1

Vor kurzem habe ich die gleiche Anfrage bekommen und bin auf den Thread gekommen. Ich konnte offene Ports auf der FW mit dem Befehl nc wie folgt scannen, während ich die Ausgabe abfrage:

nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open

Grundsätzlich bedeutet eine Zeitüberschreitung, dass der Port an der FW nicht geöffnet ist.


0

Sie können ein Online-Tool wie www.firewallruletest.com verwenden, um festzustellen, ob externe Hosts TCP-Verbindungen herstellen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.