Leiten Sie den Datenverkehr mithilfe von PF zusammen mit der Internetfreigabe um

8

Die Kurzversion:

Wie leite ich den gesamten Datenverkehr vom en2-Port 80/443 auf 127.0.0.1:8080 um, wenn ich die Internetfreigabe in OS X Mountain Lion (10.8) aktiviert habe?

Einige Hintergrundinformationen:

Ich mache eine Masterarbeit, in der ich die Kommunikationssicherheit für verschiedene Smartphone-Apps bewerten werde. Ich habe mich entschieden, mein neues MacBook Air als Router zu verwenden.

Ich habe mein Air über USB-Ethernet mit dem Internet verbunden und die Internetfreigabe für mein WLAN eingerichtet. Das funktioniert gut. Ich kann andere Geräte über WLAN mit meinem Air verbinden und auf das Internet zugreifen. Großartig!

Jetzt möchte ich diesen Verkehr abfangen und im laufenden Betrieb ändern. Ich dachte, ich brauche dafür einen Proxy, aber ich brauche einen transparenten, bei dem ich keine Konfiguration auf dem Gerät vornehmen muss. Ich fand, dass Mitmproxy genau diese Funktionen bietet. Ich habe es also auf 127.0.0.1:8080 ausgeführt und bin bereit, den Verkehr abzufangen.

Leider stecke ich fest und versuche, meinen Datenverkehr vom WLAN (en2) auf Port 80 und 443 auf 127.0.0.1:8080 umzuleiten. Die mitmproxy-Dokumente schlagen eine Konfiguration für pfctl vor, die jedoch nicht funktioniert. Ich habe festgestellt, dass Apple eine Konfiguration für die Internetfreigabe bereitgestellt hat, mit der NAT aktiviert wird. Wenn ich ihre Konfiguration nicht verwende, funktioniert die Internetfreigabe nicht mehr. Und wenn ich versuche, die rdr-Zeilen zu ihrer Konfiguration hinzuzufügen, wird dies nicht wirksam (mehrere Stellen in der Datei /etc/pf.conf ausprobiert). Mein Datenverkehr wird einfach an das Internet weitergeleitet und umgeht den Mitmproxy.

Christoffer Reijer
quelle

Antworten:

6

Ich habe die Antwort gefunden.

Ich habe meine Regeln als Teil des Ankers geladen, com.apple/100.InternetSharing/natpmpder für die Internetfreigabe verwendet wird.

Die Datei mitm.pf.confenthält die Regeln:

rdr on bridge0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr on bridge0 proto tcp from any to any port 443 -> 127.0.0.1 port 8080`

Laden Sie es mit dem Internet-Sharing-Anker:

sudo pfctl -a com.apple/100.InternetSharing/natpmp -f mitm.pf.conf
Christoffer Reijer
quelle
0

In einer ähnlichen Situation habe ich die Firewall verwendet, um den Datenverkehr von einer Netzwerkkarte zum Proxy umzuleiten. Sie könnten so etwas gebrauchen:

$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 80 in via en1
$ sudo ipfw add fwd 127.0.0.1,8080 tcp from not me to any 443 in via en1

Wenn für mich ok funktioniert.

Sie können das kostenlose WaterRoof- Programm auch als GUI zum Konfigurieren der Firewall verwenden. Es fügt dem Befehl ipsw nichts hinzu, sondern erleichtert Ihnen lediglich den Zugriff auf alle Optionen.

Diese Seite hat mir beim Einrichten meiner Konfiguration sehr geholfen:

http://lucumr.pocoo.org/2013/1/6/osx-wifi-proxy/

Andrea
quelle
Ich habe das versucht, aber aus irgendeinem Grund hat es nicht funktioniert. Das Internet-Sharing wurde dadurch völlig zerstört. Ich verstehe auch, dass Apple von ipfw von FreeBSD zugunsten von pf von OpenBSD abweicht.
Christoffer Reijer
Diese Antwort funktioniert nur für alte Macs. Apple hat IPFW eingestellt.
Brady