iptables로 충분히 쉽습니다. 특정 사용자와 일치하는 규칙을 가질 수 있으며 이미 tor
고유 한 사용자 ID로 실행되도록 설정되어 있어야합니다. 주요 Linux 배포판과 Tor 프로젝트에서 제공하는 deb 및 rpm 패키지는 이미 Tor 사용자를 설정했습니다.
완전한 샘플, 사용 가능한 iptable 및 Tor 구성이 이어집니다. 이 방화벽은 iptables-restore
명령 으로로드 할 수 있습니다 . 이 구성의 최종 결과는 프록시를 구성 할 필요없이 호스트에서 발생하거나 호스트를 통해 전달되는 모든 트래픽 을 투명하게 라우팅합니다 . 이 구성은 누출 방지 기능이 있어야합니다. 물론 철저히 테스트해야합니다.
tor 사용자 (여기서는 998
) 의 uid 는 iptables에 의해 숫자 형식으로 저장됩니다. 여기에 나타나는 각 위치에서 tor 사용자의 올바른 uid를 대체하십시오.
또한 호스트로 직접 주소가 지정된 들어오는 트래픽 및 LAN 트래픽을 지원하려면 첫 번째 규칙에서 호스트의 IP 주소를 제공해야합니다 (여기서는로 표시됨 198.51.100.212
). IP 주소가 여러 개인 경우 각 주소에 대해 규칙을 반복하십시오.
*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 규칙은 로컬 호스트 (예 : Tor 숨김 서비스)를 통해 연결하는 경우에만 연결을 허용합니다. clearnet을 통해 들어오는 ssh 연결을 허용하려면을 제거하십시오 -d 127.0.0.1
.
해당 torrc
파일은 다음과 같습니다.
User toranon
SOCKSPort 9050
DNSPort 53
TransPort 49151
AutomapHostsOnResolve 1
이 구성에는 호스트에 고정 IP 주소가 있어야합니다. 예상되는 사용 사례의 경우 이미 고정 IP 주소를 갖도록 계획했을 수 있습니다.
그리고 마지막으로 출력!
[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.