Transmission v Linuxe: vynúťte odchádzajúcu prevádzku podľa vlastníka procesu
Port peera nie je celý príbeh. Obmedzte pravidlo firewallu na účet klienta, pokryte obe rodiny adries a otestujte so spadnutým tunelom.
Blokovanie vstupného portu Transmission nie je VPN politika. Torrent klient otvára odchádzajúce spojenia k peerom a trackerom, prekladá mená a môže držať poslucháč pre vzdialené ovládanie, a každý z týchto tokov môže odísť cez rozhranie, ktoré ste nezamýšľali. Prejdite päť kontrol v poradí a berte ako hranicu pravidlo firewallu, nie nastavenia klienta. Posledné dve kontroly sa zvyčajne preskakujú a práve ony rozhodujú, či záruka platí, keď tunel spadne.
Pomenujte proces, ktorý prevzatie vlastní
Desktopová aplikácia a systémový démon bežia pod rôznymi účtami a pravidlo podľa vlastníka sleduje účet, nie názov programu. Zistite, ktorý z nich beží, skôr než napíšete pravidlo. Vyhradený servisný účet dáva politike presný subjekt, kým desktopový používateľ zdieľa svoju identitu s prehliadačmi, editormi a všetkým ostatným v relácii. Potvrďte UID, namiesto toho, aby ste predpokladali, že názov účtu z balíka je ten používaný.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
Ak účet ešte neexistuje, vytvorte ho na tento účel a nedávajte mu nič iné na spustenie. Zapíšte účet a UID do komentára pravidla, pretože pravidlo bez subjektu je pravidlo, ktoré nikto nemôže bezpečne upraviť.
Oddeľte polia počúvania od trasy
Transmission 4.x dokumentuje adresy počúvania peerov oddelene od rpc-bind-address a ten rozdiel je dôležitý. Nastavenie RPC ovláda iba poslucháč vzdialeného ovládania, takže jeho zmena nevyberá trasu pre prevádzku peerov. Čítať obe nastavenia ako jedno je najčastejší dôvod, prečo zdanlivo starostlivá konfigurácia stále uniká. Tá istá dokumentácia opisuje záložný prípad, keď je adresa počúvania peerov neplatná, takže nedostupná adresa je dokumentovaný záložný prípad, nie garantované odmietnutie.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
Používajte ovládacie prvky klienta na to, na čo sú, a záruku umiestnite do firewallu. Nastavenie počúvania môže byť stále užitočné, ale nepreukazuje, že kontakt s trackermi, lokálne objavovanie alebo delegované vyhľadávanie vychádzajú cez tunel. Keď sa obe veci rozchádzajú, rozhoduje firewall.
Napíšte zhodu vlastníka do správnej reťaze
Príručka Netfilter o zhode vlastníka vysvetľuje, ako sa lokálne vytvorené pakety priraďujú používateľovi alebo skupine, ktorá vlastní súbor socketu. Toto priradenie sa nevzťahuje na preposielanú prevádzku a zhoda doplnkových skupín vyžaduje výslovnú voľbu. Čítajte príručku k rozšíreniu, ktoré skutočne používate, nie prvý nájdený príklad.
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
Poradie je rovnako dôležité ako zhoda. Široké povolenie vyššie v reťazi ruší presné odmietnutie nižšie, preto prejdite celú reťaz, namiesto pridania pravidla a nádeje. Zahrňte obe rodiny adries, ak host beží na IPv6, pretože politika len pre v4 necháva otvorenú cestu, ktorú nikto nesleduje. Udržujte pravidlá nainštalované aj po reštartoch klienta a tunela.
Rozhodnite, čo sa stane, keď tun0 zmizne
Politika pri zlyhaní je jadrom cvičenia. Ak tunel zmizne a ten istý hák odstráni pravidlá, klient môže voľne používať fyzické rozhranie, kým ho niečo iné nezastaví. Bezpečný návrh pravidlá zachová a nechá ich odmietať, a práve to robí hranicu nezávislou od zdravia tunela. Hák na demontáž, ktorý pravidlá aj vymaže, je presným opakom politiky pri zlyhaní.
ip link show tun0
iptables -S OUTPUT
Otestujte to zámerne: zastavte tunel, spustite prenos, ktorý je bezpečné opustiť, a sledujte, či niečo odchádza. Potom tunel vráťte a potvrďte, že zamýšľaná cesta opäť funguje.
Pokryte cesty, ktoré pravidlo nevidí
Preklad mien môže zabezpečovať samostatný proces resolvera a menný priestor alebo vyhradená brána môžu poskytnúť ďalšiu hranicu, ak sú ich cesty zdieľania a zavádzania tak navrhnuté. Rozhodnite, ktorý komponent vlastní DNS a či dodržiava rovnaké pravidlo odchodu. Potom sa pozrite na RPC: ak sa používa rpc-whitelist, schválená správna sieť je súčasťou zmluvy, a široký rozsah RFC1918 nie je.
ss -tunp | grep -i transmission
Počítadlá rozhrania môžu pozorovanie podporiť, ale nemôžu preukázať, ktorý proces bajty vytvoril. Vykonajte prenos, ktorý smiete opustiť: najprv na funkčnej ceste, potom bez tunela pri štarte, a napokon cez prerušenie, opätovné pripojenie a novo vytvorené rozhranie. Otestujte nový pokus aj už otvorené spojenie, pretože pravidlo sa na starší socket nemuselo použiť. Poznamenajte dátum, účet a výsledok spolu s testom.
Vložiť príklad, ktorý vyčistí celú reťaz, znamená vymeniť jednu dieru za niekoľko, takže pravidlá pridávajte, namiesto toho, aby ste ich mazali. Keď prejde všetkých päť kontrol, záruka je výslovná: prevádzka klienta odchádza tunelom alebo vôbec, a pravidlo, ktoré to vynucuje, prežije aj vlastné zlyhanie tunela.