Блокирање улазног порта Transmission-а није VPN политика. Торент клијент отвара излазне везе ка peer-овима и трекерима, разрешава имена и може држати слушач за даљинско управљање, а сваки од тих токова може изаћи кроз интерфејс који нисте предвидели. Прођите пет провера редом и узмите правило заштитног зида, а не подешавања клијента, као границу. Последње две провере обично се прескачу и управо оне одлучују да ли гаранција остаје кад тунел падне.

Именујте процес који поседује пренос

Десктоп апликација и системски демон раде под различитим налозима, а правило према власнику следи налог, а не назив програма. Откријте који од њих ради пре него што напишете правило. Наменски сервисни налог даје политици тачан субјекат, док десктоп корисник дели свој идентитет с прегледачима, уређивачима и свим осталим у сесији. Потврдите UID уместо да претпоставите да је назив налога из пакета онај који се користи.

systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon

Ако налог још не постоји, направите га у ту сврху и не дајте му ништа друго за покретање. Запишите налог и UID у коментар правила, јер правило без субјекта је правило које нико не може безбедно уредити.

Одвојите поља слушања од руте

Transmission 4.x документује адресе слушања peer-ова одвојено од rpc-bind-address, и та разлика је важна. Подешавање RPC управља само слушачем даљинског управљања, па његова промена не бира руту за peer саобраћај. Читање две поставке као једне најчешћи је разлог зашто наизглед пажљива конфигурација ипак цури. Иста документација описује резервни случај када је адреса слушања peer-а неважећа, па је недоступна адреса документован резервни случај, а не загарантовано одбијање.

grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json

Користите контроле клијента за оно што јесу и ставите гаранцију у заштитни зид. Подешавање слушања још може вредети, али не доказује да контакт с трекерима, локално откривање или делегирано претраживање сви излазе кроз тунел. Кад се њих двоје не слажу, одлучује заштитни зид.

Запишите подударање власника у исправан ланац

Netfilter приручник о подударању власника објашњава како се локално створени пакети приписују кориснику или групи који поседују датотеку сокета. То приписивање не протеже се на прослеђени саобраћај, а подударање додатних група тражи изричиту опцију. Читајте приручник за проширење које стварно користите, а не први пример на који наиђете.

iptables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner transmission -j REJECT
ip6tables -A OUTPUT -m owner --uid-owner transmission -o tun0 -j ACCEPT
ip6tables -A OUTPUT -m owner --uid-owner transmission -j REJECT

Редослед је једнако важан као подударање. Широко прихватање више у ланцу поништава тачно одбијање ниже, па прегледајте цео ланац уместо да додате правило и надате се. Укључите обе фамилије адреса ако домаћин врти IPv6, јер политика само за v4 оставља отворен пут који нико не надгледа. Држите правила инсталирана кроз рестарте и клијента и тунела.

Одлучите шта се дешава кад tun0 нестане

Политика квара је срж вежбе. Ако тунел нестане и иста кука уклони правила, клијент је слободан да користи физичко сучеље док га нешто друго не заустави. Сигуран дизајн задржава правила и пушта их да одбијају, и то чини границу независном од здравља тунела. Кука за демонтажу која уједно брише правила права је супротност политици квара.

ip link show tun0
iptables -S OUTPUT

Тестирајте то намерно: зауставите тунел, покрените пренос који је безбедно напустити и гледајте излази ли шта. Затим вратите тунел и потврдите да предвиђени пут поново ради.

Покријте путеве које правило не види

Разрешавање имена може обрађивати засебан процес разрешивача, а именски простор или наменски пролаз могу пружити другу границу ако су њихови путеви дељења и подизања тако осмишљени. Одлучите која компонента поседује DNS и следи ли исто правило излаза. Затим погледајте RPC: ако се користи rpc-whitelist, одобрена управљачка мрежа део је уговора, а широк распон RFC1918 није.

ss -tunp | grep -i transmission

Бројачи сучеља могу поткрепити запажање, али не могу доказати који је процес произвео бајтове. Направите пренос који смете напустити: прво на радном путу, затим без тунела при покретању, па кроз прекид, поновно повезивање и ново створено сучеље. Тестирајте и нови покушај и већ отворену везу, јер правило можда није примењено на старији сокет. Запишите датум, налог и резултат уз тест.

Лепљење примера који брише цео ланац мења једну рупу за неколико, па додајте правила уместо да их бришете. Кад свих пет провера прође, гаранција је изричита: саобраћај клијента излази кроз тунел или никако, а правило које га спроводи надживљава властити квар тунела.

Повезани чланци