Redirect traffic menggunakan PF bersama dengan Internet Sharing

8

Versi singkat:

Bagaimana cara mengalihkan semua lalu lintas dari en2 port 80/443 ke 127.0.0.1:8080 ketika saya telah mengaktifkan Berbagi Internet di OS X Mountain Lion (10.8)?

Beberapa latar belakang:

Saya sedang melakukan tesis master di mana saya akan mengevaluasi keamanan komunikasi untuk berbagai aplikasi smartphone. Saya telah memilih untuk menggunakan MacBook Air baru saya sebagai router.

Saya telah menghubungkan Udara saya ke Internet dengan USB Ethernet dan mengatur Berbagi Internet ke Wifi saya. Ini berfungsi dengan baik. Saya dapat menghubungkan perangkat lain ke Air saya melalui wifi dan mengakses Internet. Bagus!

Sekarang saya ingin mencegat traffic ini dan memodifikasinya on-the-fly. Saya pikir saya perlu proxy untuk melakukan ini tetapi saya perlu yang transparan, di mana saya tidak perlu melakukan konfigurasi pada perangkat. Saya menemukan bahwa mitmproxy menawarkan persis fitur-fitur ini. Jadi saya menjalankannya pada 127.0.0.1:8080, siap untuk mencegat lalu lintas.

Sayangnya saya terjebak mencoba untuk mengarahkan lalu lintas saya datang dari wifi (en2) pada port 80 dan 443 ke 127.0.0.1:8080. Dokumentasi mitmproxy menyarankan konfigurasi untuk pfctl tetapi tidak berfungsi. Saya perhatikan bahwa Apple telah menyediakan beberapa konfigurasi untuk Berbagi Internet, memungkinkan NAT. Jadi jika saya tidak menggunakan konfigurasi mereka maka Berbagi Internet berhenti berfungsi. Dan ketika saya mencoba untuk menambahkan baris rdr ke konfigurasi mereka tidak berpengaruh (mencoba beberapa tempat di file /etc/pf.conf). Lalu lintas saya hanya meneruskan ke Internet, melewati mitmproxy.

Christoffer Reijer
sumber

Jawaban:

6

Saya menemukan jawabannya.

Saya memuat aturan saya sebagai bagian dari jangkar com.apple/100.InternetSharing/natpmpyang digunakan untuk Berbagi Internet.

File tersebut mitm.pf.confberisi aturan:

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`

Muat menggunakan jangkar Berbagi Internet:

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

Dalam situasi yang sama saya telah menggunakan firewall untuk mengarahkan lalu lintas dari satu NIC ke proksi. Anda bisa menggunakan sesuatu seperti itu:

$ 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

Jika berhasil ok untuk saya.

Anda juga dapat menggunakan program WaterRoof gratis sebagai GUI untuk mengkonfigurasi firewall. Itu tidak menambahkan apa pun ke perintah ipsw, itu hanya memberi Anda akses lebih mudah ke semua opsi.

Halaman ini banyak membantu saya dalam mengatur konfigurasi saya:

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

Andrea
sumber
Saya memang mencobanya tetapi untuk beberapa alasan itu tidak berhasil. Itu benar-benar merusak Internet Sharing. Juga, ini adalah pemahaman saya bahwa Apple pindah dari ipfw dari FreeBSD untuk pf dari OpenBSD.
Christoffer Reijer
Jawaban ini hanya berfungsi untuk Mac lama. Apple telah menjatuhkan IPFW.
Brady