Transmission įėjimo prievado blokavimas nėra VPN politika. Torrent klientas atidaro išeinančius ryšius į porininkus ir sekiklius, išsprendžia vardus ir gali laikyti nuotolinio valdymo klausytuvą, o kiekvienas iš šių srautų gali išeiti per sąsają, kurios nenumatėte. Atlikite penkis patikrinimus iš eilės ir laikykite riba ugniasienės taisyklę, o ne kliento nustatymus. Paskutiniai du patikrinimai dažniausiai praleidžiami, ir būtent jie nusprendžia, ar garantija galioja tuneliui nukritus.

Įvardykite procesą, kuriam priklauso perdavimas

Darbalaukio programa ir sistemos tarnybų procesas veikia skirtingose paskyrose, o savininku pagrįsta taisyklė seka paskyrą, o ne programos pavadinimą. Prieš rašydami bet kokią taisyklę išsiaiškinkite, kuri iš jų veikia. Atskira tarnybos paskyra suteikia politikai tikslų subjektą, o darbalaukio naudotojas dalijasi savo tapatybe su naršyklėmis, redaktoriais ir visa kita sesijoje. Patvirtinkite UID, o ne manykite, kad paketo paskyros vardas yra naudojamas.

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

Jei paskyros dar nėra, sukurkite ją šiam tikslui ir neduokite jai nieko kito vykdyti. Įrašykite paskyrą ir UID į taisyklės komentarą, nes taisyklė be subjekto yra taisyklė, kurios niekas negali saugiai redaguoti.

Atskirkite klausymosi laukus nuo maršruto

Transmission 4.x dokumentuoja porininkų klausymosi adresus atskirai nuo rpc-bind-address, ir šis skirtumas svarbus. RPC nuostata valdo tik nuotolinio valdymo klausytuvą, todėl ją pakeitus porininkų srautui maršrutas neparenkamas. Abiejų nuostatų skaitymas kaip vienos yra dažniausia priežastis, kodėl kruopščiai atrodanti konfigūracija vis tiek nuteka. Ta pati dokumentacija aprašo atsarginį atvejį, kai porininko klausymosi adresas netinkamas, taigi nepasiekiamas adresas yra dokumentuotas atsarginis atvejis, o ne garantuotas atmetimas.

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

Naudokite kliento valdiklius pagal paskirtį, o garantiją dėkite į ugniasienę. Klausymosi nuostata vis dar gali būti naudinga, bet neįrodo, kad ryšys su sekikliais, vietinis aptikimas ar deleguota užklausa visi išeina per tunelį. Kai šie du nesutaria, nusprendžia ugniasienė.

Įrašykite savininko atitikimą į tinkamą grandinę

Netfilter vadovas apie savininko atitikimą paaiškina, kaip vietoje sukuriami paketai priskiriami lizdo failo savininkui naudotojui ar grupei. Šis priskyrimas netaikomas persiunčiamam srautui, o papildomų grupių atitikimui reikia aiškios parinkties. Skaitykite to plėtinio vadovą, kurį tikrai naudojate, o ne pirmą rastą pavyzdį.

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

Tvarka tokia pat svarbi kaip atitikimas. Platus leidimas aukščiau grandinėje panaikina tikslų atmetimą žemiau, todėl peržiūrėkite visą grandinę, o ne pridėkite taisyklę ir tikėkitės. Įtraukite abi adresų šeimas, jei mazgas veikia su IPv6, nes politika tik v4 palieka atvirą kelią, kurio niekas neprižiūri. Laikykite taisykles įdiegtas ir kliento, ir tunelio perkrovimų metu.

Nuspręskite, kas nutiks, kai tun0 išnyks

Gedimo politika yra pratimo esmė. Jei tunelis išnyks ir ta pati kablio funkcija pašalins taisykles, klientas galės naudoti fizinę sąsają, kol kas nors kitas jo nesustabdys. Saugus projektas išsaugo taisykles ir leidžia joms atmesti, ir būtent tai daro ribą nepriklausomą nuo tunelio būklės. Išmontavimo kablys, kuris taip pat ištrina taisykles, yra visiška gedimo politikos priešingybė.

ip link show tun0
iptables -S OUTPUT

Išbandykite tyčia: sustabdykite tunelį, pradėkite perdavimą, kurį saugu palikti, ir stebėkite, ar kas nors išeina. Tada grąžinkite tunelį ir patvirtinkite, kad numatytas kelias vėl veikia.

Apimkite kelius, kurių taisyklė nemato

Vardų sprendimą gali atlikti atskiras sprendėjo procesas, o vardų erdvė ar paskirtasis tinklo šliuzas gali suteikti dar vieną ribą, jei jų bendrinimo ir paleidimo keliai taip suprojektuoti. Nuspręskite, kuris komponentas valdo DNS ir ar jis laikosi tos pačios išėjimo taisyklės. Tada pažiūrėkite į RPC: jei naudojamas rpc-whitelist, patvirtintas valdymo tinklas yra sutarties dalis, o platus RFC1918 diapazonas ne.

ss -tunp | grep -i transmission

Sąsajos skaitikliai gali paremti stebėjimą, bet negali įrodyti, kuris procesas sukūrė baitus. Atlikite perdavimą, kurį leidžiama palikti: pirmiausia veikiančiame kelyje, paskui be tunelio paleidžiant, o toliau per pertraukimą, prisijungimą iš naujo ir ką tik sukurtą sąsają. Išbandykite ir naują bandymą, ir jau atvirą ryšį, nes taisyklė galėjo būti nepritaikyta senesniam lizdui. Užsirašykite datą, paskyrą ir rezultatą kartu su bandymu.

Įklijuoti pavyzdį, kuris išvalo visą grandinę, reiškia vieną skylę iškeisti į kelias, todėl taisykles pridėkite, o ne trinkite. Kai praeina visi penki patikrinimai, garantija yra aiški: kliento srautas išeina per tunelį arba visai neišeina, o taisyklė, kuri tai verčia, išgyvena ir patį tunelio gedimą.

Susiję straipsniai