* Tor hariç tüm trafiği nasıl engelleyebilirim?


26

Bir Linux sisteminde, Tor ağından geçmediği sürece tüm ve giden trafiği engellemenin bir yolu var mı? Bu, yalnızca TCP bağlantılarını değil, her türlü IP iletişimini içerir. Örneğin, UDP'nin Tor'dan geçemediği için tamamen engellenmesini istiyorum. Bu sistemlerin İnternet kullanımının tamamen isimsiz olmasını istiyorum ve herhangi bir uygulamanın sızmasını istemiyorum.

Bunun karmaşık olabileceğinin farkındayım, çünkü Tor'un bir şekilde röle düğümleriyle iletişim kurması gerekiyor.


Ben de benzer bir soru sormak
üzereydim

Yanıtlar:


26

İptables ile yeterince kolay. Belirli kullanıcılarla eşleşen kurallara sahip olabilir torve kendi kullanıcı kimliği altında çalışmak için önceden ayarlanmış olmanız gerekir ; Başlıca Linux dağıtımları tarafından sağlanan deb ve rpm paketleri ve Tor Projesi zaten Tor için bir kullanıcı oluşturdu.

Komple örnek, kullanılabilir iptables ve Tor yapılandırmaları takip eder. Bu güvenlik duvarı iptables-restorekomutla yüklenebilir . Bu konfigürasyonun sonucu, proxy'leri yapılandırmaya gerek duymadan, ana bilgisayardan kaynaklanan veya iletilen tüm trafiği Tor'a şeffaf bir şekilde yönlendirir. Bu konfigürasyon sızdırmaz olmalıdır; Tabii ki iyice test etmelisin.

Tor kullanıcısı için (burada 998) kullanıcı kimliğinin iptables tarafından sayısal biçimde depolandığını unutmayın. Tor kullanıcınız için burada göründüğü her yerde doğru kullanıcı adını değiştirin.

Ayrıca, ana makinenin IP adresinin doğrudan ana makineye gönderilen gelen clearnet ve LAN trafiğini desteklemek için birinci kuralda verilmesi gerektiğini unutmayın (burada gösterilmiştir 198.51.100.212). Birden fazla IP adresiniz varsa, her adres için kuralı tekrarlayın.

*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

Ssh INPUT kuralı yalnızca yerel ana bilgisayardan, örneğin Tor gizli bir hizmetten gelen bağlantılara izin verir. Ayrıca clearnet ile gelen ssh bağlantılarına izin vermek istiyorsanız, kaldırın -d 127.0.0.1.

İlgili torrcdosya:

User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1

Bu yapılandırma, ana bilgisayarın statik bir IP adresine sahip olmasını gerektirir. Beklenen kullanım durumları için, zaten statik bir IP adresine sahip olmayı planlamış olmanız muhtemeldir.

Ve nihayet, çıktı!

[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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.