Це можливо за допомогою iptables та модуля користувача.
Оскільки демон tor зазвичай працює як користувач "tor", ми можемо використовувати власника модуля iptables для фільтрування вихідного трафіку на основі uid користувача.
У цьому прикладі ми скинемо весь трафік, який не ініціює користувач, який працює за допомогою демона tor.
По-перше, давайте припустимо, що ви починаєте з порожньої політики брандмауера. Ви хочете, щоб ця політика була за замовчуванням, щоб знизити весь трафік.
iptables -P INPUT drop
iptables -P OUTPUT drop
iptables -P FORWARD drop
Тепер ви хочете прийняти вхідний трафік, який пов'язаний із встановленим з'єднанням. Зауважте, що ви можете виконувати фільтрацію лише на основі імен користувачів у вихідному трафіку. Ви не маєте контролю над пакетами, що надсилаються з Інтернету.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Дозволити трафік на інтерфейсі зворотного зв'язку. Це дозволить вам підключитися до демона tor шкарпетки, що працює на порт 9050.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
І нарешті, вам доведеться дозволити трафік від користувача "tor".
iptables -A OUTPUT -o inet-iface -m owner --uid-owner tor-uid -j ACCEPT
Замініть inet-iface та tor-uid на інтерфейс, з яким ви підключаєтесь до Інтернету, та на uid вашого користувача tor.
Voila, увесь трафік, який не пов'язаний з Tor, тепер повинен бути заблокований.