Bagaimana saya bisa memblokir semua lalu lintas * kecuali * Tor?


26

Pada sistem Linux, apakah ada cara untuk memblokir semua lalu lintas masuk dan keluar kecuali melewati jaringan Tor. Ini termasuk segala bentuk komunikasi IP, bukan hanya koneksi TCP. Misalnya saya ingin UDP diblokir sepenuhnya karena tidak dapat melewati Tor. Saya ingin sistem ini penggunaan Internet sepenuhnya anonim, dan saya tidak ingin ada aplikasi bocor.

Saya menyadari ini mungkin rumit karena Tor sendiri perlu berkomunikasi dengan relay node.


Saya baru saja akan mengajukan pertanyaan serupa :)
amyassin

5
Bagi Anda yang memberikan suara dekat, saya ingin mengingatkan Anda bahwa ada kasus penggunaan bisnis yang sah untuk Tor .
Michael Hampton

Jawaban:


26

Cukup mudah dengan iptables. Itu dapat memiliki aturan yang cocok dengan pengguna tertentu, dan Anda harus sudah menyiapkan toruntuk berjalan di bawah ID pengguna sendiri; paket deb dan rpm yang disediakan oleh distribusi Linux utama dan Proyek Tor telah menyiapkan pengguna untuk Tor.

Sampel lengkap, iptables yang dapat digunakan dan konfigurasi Tor mengikuti. Firewall ini dapat dimuat dengan iptables-restoreperintah. Hasil akhir dari konfigurasi ini akan merutekan semua lalu lintas yang berasal dari, atau diteruskan melalui, host ke Tor, secara transparan , tanpa perlu mengkonfigurasi proxy. Konfigurasi ini harus anti bocor; meskipun tentu saja Anda harus mengujinya secara menyeluruh.

Perhatikan bahwa uid untuk pengguna (di sini, 998) disimpan dalam bentuk angka oleh iptables. Ganti uid yang benar untuk pengguna Anda di setiap tempat yang muncul di sini.

Perhatikan juga bahwa alamat IP host harus diberikan dalam aturan pertama untuk mendukung clearnet masuk dan lalu lintas LAN yang ditujukan langsung ke host (di sini ditampilkan sebagai 198.51.100.212). Jika Anda memiliki beberapa alamat IP, ulangi aturan untuk setiap alamat.

*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 198.51.100.212/32 -j RETURN
-A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
-A OUTPUT -o lo -j RETURN
-A OUTPUT -m owner --uid-owner 998 -j RETURN
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 49151
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -d 127.0.0.1 --dport 22 -j ACCEPT
-A INPUT -j LOG --log-prefix "IPv4 REJECT INPUT: "
-A FORWARD -j LOG --log-prefix "IPv4 REJECT FORWARD: "
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 49151 -j ACCEPT
-A OUTPUT -m owner --uid-owner 998 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -j LOG --log-prefix "IPv4 REJECT OUTPUT: "
COMMIT

Aturan ssh INPUT hanya mengizinkan koneksi jika mereka datang melalui host lokal, yaitu layanan tersembunyi Tor. Jika Anda juga ingin mengizinkan koneksi ssh masuk melalui clearnet, hapus -d 127.0.0.1.

File yang sesuai torrcadalah:

User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1

Konfigurasi ini mengharuskan host memiliki alamat IP statis. Untuk kasus penggunaan yang diharapkan, kemungkinan Anda telah merencanakan untuk memiliki alamat IP statis.

Dan akhirnya, hasilnya!

[root@unknown ~]# curl ifconfig.me
31.31.73.71
[root@unknown ~]# host 31.31.73.71
71.73.31.31.in-addr.arpa domain name pointer cronix.sk.
[root@unknown ~]# curl ifconfig.me
178.20.55.16
[root@unknown ~]# host 178.20.55.16
16.55.20.178.in-addr.arpa domain name pointer marcuse-1.nos-oignons.net.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.