Cukup mudah dengan iptables. Itu dapat memiliki aturan yang cocok dengan pengguna tertentu, dan Anda harus sudah menyiapkan tor
untuk 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-restore
perintah. 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 torrc
adalah:
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.