Blokování vstupního portu Transmission není VPN politika. Torrent klient otevírá odchozí spojení k peerům a trackerům, rozlišuje jména a může držet posluchač pro vzdálené ovládání, a každý z těchto toků může odejít přes rozhraní, které jste nezamýšleli. Projděte pět kontrol v pořadí a berte jako hranici pravidlo firewallu, ne nastavení klienta. Poslední dvě kontroly se obvykle přeskakují a právě ony rozhodují, zda záruka platí, když tunel spadne.

Pojmenujte proces, který přenos vlastní

Desktopová aplikace a systémový démon běží pod různými účty a pravidlo podle vlastníka sleduje účet, ne název programu. Zjistěte, který z nich běží, než napíšete pravidlo. Vyhrazený servisní účet dává politice přesný subjekt, kdežto desktopový uživatel sdílí svou identitu s prohlížeči, editory a vším ostatním v relaci. Potvrďte UID, místo abyste předpokládali, že název účtu z balíčku je ten používaný.

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

Pokud účet ještě neexistuje, vytvořte jej pro tento účel a nedávejte mu nic jiného ke spuštění. Zapište účet a UID do komentáře pravidla, protože pravidlo bez subjektu je pravidlo, které nikdo nemůže bezpečně upravit.

Oddělte pole poslechu od trasy

Transmission 4.x dokumentuje adresy poslechu peerů odděleně od rpc-bind-address a ten rozdíl je důležitý. Nastavení RPC ovládá pouze posluchač vzdáleného ovládání, takže jeho změna nevybírá trasu pro provoz peerů. Číst obě nastavení jako jedno je nejčastější důvod, proč zdánlivě pečlivá konfigurace stále uniká. Stejná dokumentace popisuje záložní případ, kdy je adresa poslechu peerů neplatná, takže nedostupná adresa je dokumentovaný záložní případ, nikoli garantované odmítnutí.

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

Používejte ovládací prvky klienta na to, k čemu jsou, a záruku umístěte do firewallu. Nastavení poslechu může být stále užitečné, ale neprokazuje, že kontakt s trackery, lokální objevování nebo delegované vyhledávání vycházejí přes tunel. Když se obě věci rozcházejí, rozhoduje firewall.

Napište shodu vlastníka do správného řetězce

Příručka Netfilter o shodě vlastníka vysvětluje, jak se lokálně vytvořené pakety přiřazují uživateli nebo skupině, která vlastní soubor socketu. Toto přiřazení se nevztahuje na předávaný provoz a shoda doplňkových skupin vyžaduje výslovnou volbu. Čtěte příručku k rozšíření, které skutečně používáte, ne první nalezený pří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

Pořadí je stejně důležité jako shoda. Široké povolení výše v řetězci ruší přesné odmítnutí níže, proto projděte celý řetězec, místo abyste přidali pravidlo a doufali. Zahrňte obě rodiny adres, pokud host běží na IPv6, protože politika jen pro v4 nechává otevřenou cestu, kterou nikdo nesleduje. Udržujte pravidla nainstalovaná i přes restarty klienta a tunelu.

Rozhodněte, co se stane, když tun0 zmizí

Politika při selhání je jádrem cvičení. Pokud tunel zmizí a stejný hák odstraní pravidla, klient může volně používat fyzické rozhraní, dokud jej něco jiného nezastaví. Bezpečný návrh pravidla zachová a nechá je odmítat, a právě to činí hranici nezávislou na zdraví tunelu. Hák pro demontáž, který pravidla také smaže, je přesným opakem politiky při selhání.

ip link show tun0
iptables -S OUTPUT

Otestujte to záměrně: zastavte tunel, spusťte přenos, který je bezpečné opustit, a sledujte, zda něco odchází. Potom tunel vraťte a potvrďte, že zamýšlená cesta opět funguje.

Pokryjte cesty, které pravidlo nevidí

Překlad jmen může zajišťovat samostatný proces resolveru a jmenný prostor nebo vyhrazená brána mohou poskytnout další hranici, pokud jsou jejich cesty sdílení a zavádění tak navrženy. Rozhodněte, která komponenta vlastní DNS a zda dodržuje stejné pravidlo odchodu. Potom se podívejte na RPC: pokud se používá rpc-whitelist, schválená správní síť je součástí smlouvy, a široký rozsah RFC1918 není.

ss -tunp | grep -i transmission

Počítadla rozhraní mohou pozorování podpořit, ale nemohou prokázat, který proces bajty vytvořil. Proveďte přenos, který smíte opustit: nejprve na funkční cestě, potom bez tunelu při startu, a pak přes přerušení, opětovné připojení a nově vytvořené rozhraní. Otestujte nový pokus i již otevřené spojení, protože pravidlo se na starší socket nemuselo použít. Poznamenejte datum, účet a výsledek spolu s testem.

Vložit příklad, který vyčistí celý řetězec, znamená vyměnit jednu díru za několik, takže pravidla přidávejte, místo abyste je mazali. Když projde všech pět kontrol, záruka je výslovná: provoz klienta odchází tunelem nebo vůbec, a pravidlo, které to vynucuje, přežije i vlastní selhání tunelu.

Související články