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

Именувајте го процесот што го поседува преносот

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

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

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

Одделете ги полињата за слушање од рутата

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

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

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

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

Поврзани статии