Как я могу использовать iptables для ограничения доступа к адресам.onion в Tor?
Я хочу ограничить исходящий сетевой доступ (за исключением подключений к localhost) TCP и UDP через Tor и заблокировать все остальное (за исключением приложения Tor и подключений localhost). Цель состоит в том, чтобы ограничить пользователей localhost
а также *.onion
адреса, для которых Tor создает виртуальную адресную сеть 10.192.0.0/10 (используя VirtualAddrNetwork
опция в файле torrc).
Вот мой текущий iptables-save:
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -d 10.192.0.0/10 -p tcp -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p tcp -m tcp -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p udp -m udp --dport 53 -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 53
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -m owner --uid-owner debian-tor -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9040 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT ! -o lo -j DROP
-A OUTPUT -p icmp -j REJECT --reject-with icmp-port-unreachable
COMMIT
Я попытался добавить это в начале *filter
, до остальных правил, но все соединения не удалось:
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT ! -d 10.192.0.0/10 -m owner ! --uid-owner debian-tor -j REJECT
Почему вторая строка в коде выше блокирует весь трафик? Каковы надлежащие правила для следующего:
- разрешить все входящие
- разрешить все исходящие на localhost
- разрешить все исходящие сообщения, инициированные пользователем debian-tor
- перенаправить весь исходящий UDP 53, не инициированный debian-tor, на localhost 53
- перенаправить все исходящие TCP и UDP, не инициированные debian-tor, на localhost 9040
- заблокировать все остальное