Блакаванне ўваходнага порта 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

Лічыльнікі інтэрфейсу могуць пацвердзіць назіранне, але не могуць даказаць, які працэс спарадзіў байты. Правядзіце перадачу, якую дазволена перарваць: спачатку працоўным шляхам, потым без тунэля пры запуску, далей праз перарыванне, паўторнае падключэнне і толькі што створаны інтэрфейс. Праверце і новую спробу, і ўжо адкрытае злучэнне, бо правіла магло не прыкласціся да старога сокета. Запішыце дату, уліковы запіс і вынік разам з праверкай.

Устаўляць прыклад, які ачышчае ўвесь ланцуг, — гэта мяняць адну дзірку на некалькі, таму дадавайце правілы, а не выдаляйце іх. Калі ўсе пяць праверак пройдзены, гарантыя яўная: трафік кліента выходзіць праз тунэль або нікуды, і правіла, якое гэта забяспечвае, перажывае ўласны збой тунэля.

Падобныя артыкулы