Wie finde ich den Schuldigen, der die TCP-Ports 80, 443 und 5223 unter macOS blockiert?

Diese Ports, die für iMessage und Facetime entscheidend sind, werden blockiert: TCP-Ports 80, 443 und 5223 auf macOS Sierra 10.12.2 (MacBookPro11,3). ( https://support.apple.com/en-us/HT202078 )

Im Netzwerkdienstprogramm führe ich einen Scan durch und der einzige offene Port ist 631.

Wenn ich laufe:

python -m SimpleHTTPServer 80

Ich bekomme ein paar Anrufe, dann heißt es:

socket.error: [Errno 13] Berechtigung verweigert

Einige andere Terminalbefehle geben ähnliche Antworten zurück.

Gibt es eine Methode, mit der ich den Übeltäter finden kann, der diese Ports (und wahrscheinlich andere) unter OSX blockiert? Diese Ports werden speziell für iMessage und Facetime benötigt.

Ich habe weder Sophos noch eine andere mir bekannte Firewall.

Wenn etwas 80 & 443 blockiert hätte, hätten Sie diese Frage nicht schreiben können :/
:80 und :443 sind für Webserver und Webserver über SSL. Sie sind für iMessage für Facetime nicht entscheidend. Und wie bereits beantwortet wurde, besteht das Problem mit Python darin, dass Sie root sein müssen, um sich an Ports mit niedriger Nummer zu binden.

Antworten (3)

Du verwechselst zwei Dinge:

  • FaceTime und iMessage erfordern die Kommunikation über die im Artikel angegebenen Ports für ausgehende Verbindungen.

  • Ihre Meldung "Zugriff verweigert" bezieht sich auf das Öffnen des Ports 80 für eingehende Verbindungen. Es liegt nicht daran, dass irgendein Prozess es blockiert, aber wenn Sie einen Prozess dazu bringen möchten, auf einem Port kleiner als 1024 zu lauschen, müssen Sie root verwenden, also:

    sudo python -m SimpleHTTPServer 80
    
Ja, ich muss sehen, was 80, 443 und 5223 wahrscheinlich mit einem pfctl-Befehl blockiert?
Warum behauptest du "etwas blockiert"?

Ihre Fragen sowie andere Fragen enthüllen ein Missverständnis darüber, was blockierte/nicht blockierte oder geschlossene/offene Ports sind.

Wenn Sie einen Dienst in einem Netzwerk bereitstellen möchten, benötigen Sie einen Prozess, der normalerweise mit einem Netzwerk-Socket verbunden ist, und zugehörige Adressen, die aus der lokalen Adresse (dh IP-Adresse) und (für TCP und UDP) einer Portnummer bestehen.

Das Bereitstellen einer Website erfordert also einen Prozess (z. B. httpd oder in Ihrem Beispiel Python), einen Socket und eine zugehörige Adresse und einen Port (und einige Inhalte). Der Standardport eines Webservers ist 80.

Sobald Sie einen einfachen Webserver mit starten sudo python -m SimpleHTTPServer 80(Portnummern kleiner als 1024 müssen als root ausgeführt werden) wird der Port geöffnet und Sie können auf diesen von einem anderen Host oder lokal zugreifen.

Um offene Ports eines Hosts zu erhalten, können Sie nmap installieren und starten . Der Befehl zum Abrufen aller offenen TCP-Ports einer IP lautet:

nmap IP

oder alle offenen TCP- und (meisten) UDP-Ports

sudo nmap -sT -sU IP

Auf einem Vanilla-MacOS-Clientsystem und nach dem Starten des einfachen HTTP-Servers von Python (der an alle internen Schnittstellen angeschlossen ist: localhost, en0 mit der IP 192.168.0.2 hier, ...) erhalten Sie die folgenden nmap-Ergebnisse, die auf dem lokalen Host gestartet wurden, und Nr lokale Firewall aktiviert:

nmap 127.0.0.1   
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:12 CET
Nmap scan report for 127.0.0.1
Host is up (0.0043s latency).
Not shown: 750 closed ports, 249 filtered ports
PORT   STATE SERVICE
80/tcp open  http

nmap 192.168.0.2    
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:12 CET
Nmap scan report for 192.168.0.2
Host is up (0.0043s latency).
Not shown: 750 closed ports, 249 filtered ports
PORT   STATE SERVICE
80/tcp open  http

Nach dem Stoppen des Python-Servers erhalten Sie keinen offenen TCP-Port, obwohl keine Firewall aktiviert ist! Ihr Mac bietet einfach keine Dienste an. Vanilla macOS-Client-Hosts haben normalerweise keine offenen TCP-Ports. Sie können jedoch einige aktivieren: zB ssh auf Port 22. Übrigens, wenn Sie einen offenen Port 631 entdecken, dann ist es die Druckerfreigabe (was wieder ein Dienst ist).

sudo nmap -sT -sU 127.0.0.1
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:18 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Not shown: 1891 closed ports, 78 open|filtered ports, 29 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
123/udp open  ntp

sudo nmap -sT -sU 192.168.0.2
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:19 CET
Nmap scan report for 192.168.0.2
Host is up (0.00019s latency).
Not shown: 1811 closed ports, 186 open|filtered ports
PORT     STATE SERVICE
80/tcp   open  http
123/udp  open  ntp
5353/udp open  zeroconf

Ein geschlossener Port bedeutet: Auf PortX läuft kein Dienst. Die anderen Bedeutungen der verschiedenen Portzustände werden hier erklärt: Port Scanning Basics .

Ein Port-Scan von 192.168.0.2 von einem anderen Host im selben Netzwerk führt zu denselben Ergebnissen.


In einem SOHO-Netzwerk finden Sie normalerweise die folgenden Geräte:

host1--------(switch-router(firewall))--------WAN/Internet
               |
host2-----------

Jeder der Hosts kann eine (aktivierte) Firewall oder einen Paketfilter haben, der Router hat normalerweise immer eine aktivierte Firewall.

Nachdem Sie Ihren Python-Webserver auf Host1 gestartet haben, können Sie das Scannen von offenem Port 80 von Host1 und Host2 erkennen. Sie können vom WAN aus keinen offenen Port auf den lokalen Hosts erkennen , da das LAN durch die Firewall des Routers geschützt ist (und aufgrund seiner privaten Natur nicht erreichbar ist).

Nachdem Sie eine Firewall1 auf Host1 aktiviert haben (mit der pf-Beispielregel block drop any to any port 80 ), können Sie den noch offenen Port 80, der mit host2 scannt, nicht erkennen oder darauf zugreifen, da die Firewall1 den Zugriff blockiert .

Starten Sie nun den Python-Server mit Port 8080 neu. Jetzt werden Sie keinen offenen Port 80, sondern einen offenen Port 8080 von beiden Hosts erkennen. Die Firewall1 blockiert nur Port 80 und der Zugriff ist von Host2 möglich. Wenn Sie zusätzlich eine Port-Forwarding-Regel hinzufügen (= ein Loch in die Firewall des Routers schlagen), um eingehende Pakete an Port 10080 an Host1-Port 8080 weiterzuleiten, erhalten Sie folgende Ergebnisse:

  • Beim Scannen aus dem WAN erhalten Sie einen offenen Port 10080 (obwohl auf den Hosts des LAN kein offener Port 10080 vorhanden ist).
  • Wenn Sie aus dem LAN scannen, werden Sie immer noch einen offenen Port 8080 auf Host1 erkennen

Rufen Sie den Status der Firewalls eines Hosts ab:

  • pf: eingeben sudo pfctl -s all | grep Status. Wenn Sie "aktiviert" werden, geben Sie zusätzlich ein sudo pfctl -vnf /etc/pf.conf, um alle Anker und Regeln zu erhalten. Wenn Sie keine Blockierregel sehen (der Standard-PF-Zustand von OS X), ist nichts blockiert.
  • Murus: Überprüfen Sie die Ampel in der oberen rechten Ecke
  • Anwendungs-Firewall: Ein/Aus in Systemeinstellungen > Sicherheit > Firewall
  • Kleiner Schnatz: Überprüfen Sie alle ausgehenden Sperrregeln
  • Andere Firewalls (wie NetBarrier) überprüfen normalerweise einige Ein/Aus-Schalter

iMessages erfordert keinen offenen Dienstport auf Ihrem Mac. Da iMessages versucht, eine Keep-Alive-Verbindung zu einigen Apple-Servern herzustellen, würde dies jedoch von der Firewall eines Hosts oder des Routers (oder einer dedizierten Firewall) blockiert, wenn einer von ihnen den ausgehenden Datenverkehr zu diesen Servern auf den Ports 80, 443 , und 5223 - und/oder der eingehende Apple Push Notification Service (IIRC dies nur möglich mit Deep Packet Inspection & mitm).

Im Vergleich dazu werden beim Starten des Nachrichtendienstes in macOS Server die Ports 80, 443 und 5222 auf dem Serverhost geöffnet.


Wenn ich all Ihre ähnlichen Fragen zu iMessages lese, glaube ich nicht, dass Ihr Problem mit dem macOS Ihres Hosts zusammenhängt, sondern entweder mit einer Art installiertem Endpoint Protection oder einer sehr restriktiven Firewall im Netzwerk. Oder Ihre IP/Gerät/Konto wird von Apple blockiert!

@typosruinjokes Nein und ja! Wenn Sie die Druckerfreigabe in Systemeinstellungen > Freigabe aktiviert haben, wird der Port 631 geöffnet, damit andere Hosts über Ihren Mac auf dem Drucker drucken können. <cmd> 127.0.0.2(mit <cmd>= ping oder nmap sollte überhaupt nicht funktionieren, wenn Sie es nicht in die /ect/hosts-Datei oder mit ìfconfig hinzugefügt haben.
Danke dafür. Entschuldigen Sie die verspätete Antwort – ich war krank. Bevor ich lese, möchte ich Sie daran erinnern, dass wir (Apple Engineer Assistant in Cupertino und ich) sicher sind, dass das Problem bei dieser OSX-Installation liegt, nicht beim Netzwerk oder der Hardware. Wir haben ein neues OS X auf einer Partition auf der internen Festplatte dieses Computers installiert. Es war in der Lage, sich über dasselbe Netzwerk/Router/IP-Adresse bei iMessages mit der Apple-ID anzumelden und funktionierte einwandfrei. Dasselbe gilt für andere Geräte im Netzwerk. Mein einziger Verdacht ist, dass der VPN PIA einen OSX-Client hat, der anderen ähnliche Probleme bereitet hat.
@typosruinjokes Hmm, was sind die Unterschiede zwischen den beiden OS X-Installationen? Verschiedene Versionen (z. B. Vanilla=Sierra=iMessages funktioniert, „corporate install“=El Capitan& Active Directory? oder OD-Integration? & VPN=iMessages funktioniert nicht)? Es wäre hilfreich, alle Unterschiede zu erwähnen und weitere Informationen in Ihren Fragen bereitzustellen. Wenn Sie beispielsweise Ihre Frage und Kommentare lesen, erwähnen Sie zum ersten Mal eine VPN-Client-Installation.
Es war eine einfache alte identische Installation auf der Maschine. Sierra 10.12.2. Ich habe es mit dem Apple Engineer Asst installiert, der sicherstellen wollte, dass es das Betriebssystem ist (nicht Netzwerk oder Hardware). Und es war. Betreff: VPN-Client. Vergiss es. Ich erwähne den VPN- Client nur , weil er MÖGLICHERWEISE eine Einstellung geändert hat. Ich habe es vor einiger Zeit deinstalliert. Erst neulich habe ich in einem Forum gesehen, dass es einigen Leuten Probleme bereitet hat ( nicht dieses Problem), also habe ich es erwähnt. Ich habe den Apple Engineer Asst geschickt. diese Convo zu überprüfen. Wir sprechen am Donnerstag wieder. Versuchen wir, das zu lösen, bevor er es kann!
Das ist neu:Starting Nmap 7.01 ( https://nmap.org ) at 2017-01-24 22:43 EST Nmap scan report for localhost (127.0.0.1) Host is up (0.00040s latency). Not shown: 1993 closed ports PORT STATE SERVICE 631/tcp open ipp 8080/tcp filtered http-proxy 8443/tcp filtered https-alt 123/udp open ntp 137/udp open|filtered netbios-ns 138/udp open|filtered netbios-dgm 5353/udp open|filtered zeroconf
@typosruinjokes Etwas hat wahrscheinlich einen lokalen Proxy (8080 tcp/8443 tcp) aktiviert oder Sie haben TomCat installiert, das an denselben Ports lauscht, oder es ist ein Virus/Trojaner
wie teste ich auf kater oder ein Virus?
@typosruinjokes Sie können die PID(s) des Prozesses/der Prozesse anzeigen, indem Sie sudo lsof -i :8080and eingebensudo lsof -i :8443
Wenn ich diesen Befehl ausführe, passiert nichts. Ich sollte dies auch erwähnen: Wenn ich die Textweiterleitung auf meinem iPhone einschalte, heißt es, den Code von meinem Macbook (dem betreffenden System) zu erhalten. Das Problem ist, mein MacBook zeigt keinen Code an! Dies ist zweifellos Teil desselben Problems.

Sie können überprüfen, ob die Ports bereits von einer anderen Anwendung verwendet werden, indem Sie den Befehl verwenden lsof -Pn -i4 | grep :YOURPORT. Wenn ich es zum Beispiel ausführe, bekomme ich:

$ lsof -Pn -i4 | grep: 9300

testApp 66479 Benutzername 8u IPv4 0x176881bf1af12e39 0t0 UDP *:9300

Dies zeigt mir, dass „testApp“ auf Port 9300 unter „Benutzername“ lauscht.