Transmission na Linuxu: ograničite izlazni promet prema vlasniku procesa
Peer port nije cijela priča. Vežite pravilo vatrozida uz korisnički račun klijenta, pokrijte obje obitelji adresa i testirajte sa srušenim tunelom.
Blokiranje ulaznog porta Transmissiona nije VPN politika. Torrent klijent otvara izlazne veze prema peerovima i trackerima, razrješava imena i može držati slušač za daljinsko upravljanje, a svaki od tih tokova može izaći kroz sučelje koje niste predvidjeli. Prođite pet provjera redom i uzmite pravilo vatrozida, a ne postavke klijenta, kao granicu. Posljednje dvije provjere obično se preskaču i upravo one odlučuju ostaje li jamstvo kad tunel padne.
Imenujte proces koji posjeduje prijenos
Desktop aplikacija i sistemski daemon rade pod različitim računima, a pravilo prema vlasniku slijedi račun, a ne naziv programa. Otkrijte koji od njih radi prije nego napišete pravilo. Namjenski servisni račun daje politici točan subjekt, dok desktop korisnik dijeli svoj identitet s preglednicima, uređivačima i svim ostalim u sesiji. Potvrdite UID umjesto da pretpostavite da je naziv računa iz paketa onaj koji se koristi.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
Ako račun još ne postoji, stvorite ga u tu svrhu i ne dajte mu ništa drugo za pokretanje. Zapišite račun i UID u komentar pravila, jer pravilo bez subjekta je pravilo koje nitko ne može sigurno urediti.
Odvojite polja slušanja od rute
Transmission 4.x dokumentira adrese slušanja peera odvojeno od rpc-bind-address, i ta je razlika važna. Postavka RPC upravlja samo slušačem daljinskog upravljanja, pa njegova promjena ne bira rutu za peerski promet. Čitanje dviju postavki kao jedne najčešći je razlog zašto naizgled pažljiva konfiguracija ipak curi. Ista dokumentacija opisuje rezervni slučaj kada je adresa slušanja peera nevaljala, pa je nedostupna adresa dokumentirani rezervni slučaj, a ne zajamčeno odbijanje.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
Koristite kontrole klijenta za ono što jesu i stavite jamstvo u vatrozid. Postavka slušanja još može vrijediti, ali ne dokazuje da kontakt s trackerima, lokalno otkrivanje ili delegirano pretraživanje svi izlaze kroz tunel. Kad se njih dvoje ne slažu, odlučuje vatrozid.
Zapišite podudaranje vlasnika u ispravan lanac
Netfilterov priručnik o podudaranju vlasnika objašnjava kako se lokalno stvoreni paketi pripisuju korisniku ili grupi koji posjeduju datoteku socketa. To pripisivanje ne proteže se na proslijeđeni promet, a podudaranje dodatnih grupa traži izričitu opciju. Čitajte priručnik za proširenje koje stvarno koristite, a ne prvi primjer na koji naiđete.
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
Redoslijed je jednako važan kao podudaranje. Široko prihvaćanje više u lancu poništava točno odbijanje niže, pa pregledajte cijeli lanac umjesto da dodate pravilo i nadate se. Uključite obje obitelji adresa ako host vrti IPv6, jer politika samo za v4 ostavlja otvoren put koji nitko ne nadzire. Držite pravila instalirana kroz restarte i klijenta i tunela.
Odlučite što se događa kad tun0 nestane
Politika kvara je srž vježbe. Ako tunel nestane i ista kuka ukloni pravila, klijent je slobodan koristiti fizičko sučelje dok ga nešto drugo ne zaustavi. Siguran dizajn zadržava pravila i pušta ih da odbijaju, i to čini granicu neovisnom o zdravlju tunela. Kuka za demontažu koja ujedno briše pravila prava je suprotnost politici kvara.
ip link show tun0
iptables -S OUTPUT
Testirajte to namjerno: zaustavite tunel, pokrenite prijenos koji je sigurno napustiti i gledajte izlazi li išta. Zatim vratite tunel i potvrdite da predviđeni put ponovno radi.
Pokrijte putove koje pravilo ne vidi
Razrješavanje imena može obrađivati zasebni proces razrješivača, a imenski prostor ili namjenski pristupnik mogu pružiti drugu granicu ako su njihovi putovi dijeljenja i podizanja tako osmišljeni. Odlučite koja komponenta posjeduje DNS i slijedi li isto pravilo izlaza. Zatim pogledajte RPC: ako se koristi rpc-whitelist, odobrena upravljačka mreža dio je ugovora, a širok raspon RFC1918 nije.
ss -tunp | grep -i transmission
Brojači sučelja mogu potkrijepiti zapažanje, ali ne mogu dokazati koji je proces proizveo bajtove. Napravite prijenos koji smijete napustiti: prvo na radnom putu, zatim bez tunela pri pokretanju, pa kroz prekid, ponovno povezivanje i novo stvoreno sučelje. Testirajte i novi pokušaj i već otvorenu vezu, jer pravilo možda nije primijenjeno na stariji socket. Zapišite datum, račun i rezultat uz test.
Lijepljenje primjera koji briše cijeli lanac mijenja jednu rupu za nekoliko, pa dodajte pravila umjesto da ih brišete. Kad svih pet provjera prođe, jamstvo je izričito: promet klijenta izlazi kroz tunel ili nikako, a pravilo koje ga provodi nadživljava vlastiti kvar tunela.