Transmission Linux sistēmā: piespiest izejošo datu plūsmu pēc procesa īpašnieka
Vienranga ports nav viss stāsts. Ierobežojiet ugunsmūra noteikumu ar klienta kontu, aptveriet abas adrešu saimes un pārbaudiet, kad tunelis ir nolaists.
Transmission ienākošā porta bloķēšana nav VPN politika. Torrent klients atver izejošus savienojumus uz vienrangiem un izsekotājiem, izšķir vārdus un var turēt attālinātās vadības klausītāju, un katrs no šiem plūdiem var iziet pa saskarni, kuru neesi paredzējis. Veic piecas pārbaudes pēc kārtas un uzskati par robežu ugunsmūra noteikumu, nevis klienta iestatījumus. Pēdējās divas pārbaudes parasti tiek izlaistas, un tieši tās izšķir, vai garantija saglabājas, kad tunelis krīt.
Nosauc procesu, kuram pieder pārsūtīšana
Darbvirsmas lietotne un sistēmas dēmons darbojas dažādos kontos, un noteikums pēc īpašnieka seko kontam, nevis programmas nosaukumam. Pirms rakstīt kādu noteikumu, noskaidro, kurš no tiem darbojas. Atsevišķs servisa konts piešķir politikai precīzu subjektu, kamēr darbvirsmas lietotājs dala savu identitāti ar pārlūkiem, redaktoriem un visu pārējo sesijā. Apstiprini UID, tā vietā lai pieņemtu, ka pakotnes konta nosaukums ir izmantotais.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
Ja konts vēl neeksistē, izveido to šim mērķim un nedod tam neko citu palaist. Ieraksti kontu un UID noteikuma komentārā, jo noteikums bez subjekta ir noteikums, kuru neviens nevar droši rediģēt.
Atdalīt klausīšanās laukus no maršruta
Transmission 4.x dokumentē vienrangu klausīšanās adreses atsevišķi no rpc-bind-address, un šī atšķirība ir svarīga. RPC iestatījums kontrolē tikai attālinātās vadības klausītāju, tāpēc tā maiņa neizvēlas maršrutu vienrangu plūsmai. Abu iestatījumu lasīšana kā viena ir visbiežākais iemesls, kāpēc rūpīgi izskatīga konfigurācija tomēr noplūst. Tā pati dokumentācija apraksta rezerves gadījumu, kad vienranga klausīšanās adrese ir nederīga, tātad nepieejama adrese ir dokumentēts rezerves gadījums, nevis garantēts atteikums.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
Izmanto klienta vadīklas tam, kam tās paredzētas, un liec garantiju ugunsmūrī. Klausīšanās iestatījums joprojām var būt noderīgs, bet tas nepierāda, ka saziņa ar izsekotājiem, vietējā atklāšana vai deleģēta meklēšana visi iziet caur tuneli. Kad šie divi nesaskan, izšķir ugunsmūris.
Ieraksti īpašnieka atbilstību pareizajā ķēdē
Netfilter rokasgrāmata par īpašnieka atbilstību skaidro, kā vietēji ģenerēti paketes tiek attiecinātas uz ligzdas faila īpašnieku lietotāju vai grupu. Šī attiecināšana neattiecas uz pārsūtīto plūsmu, un papildu grupu atbilstībai nepieciešama skaidra opcija. Lasi tā paplašinājuma rokasgrāmatu, kuru tiešām izmanto, nevis pirmo atrasto piemēru.
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
Secība ir tikpat svarīga kā atbilstība. Plašs atļauts augstāk ķēdē atceļ precīzu atteikumu zemāk, tāpēc pārskati visu ķēdi, nevis pievieno noteikumu un ceri. Iekļauj abas adrešu saimes, ja saimnieks darbojas ar IPv6, jo politika tikai v4 atstāj vaļā ceļu, kuru neviens neuzrauga. Turi noteikumus instalētus arī klienta un tuneļa restartu laikā.
Izlem, kas notiek, kad tun0 pazūd
Kļūmes politika ir šī vingrinājuma būtība. Ja tunelis pazūd un tas pats āķis noņem noteikumus, klients var brīvi izmantot fizisko saskarni, līdz kaut kas cits to aptur. Drošā dizainā noteikumi paliek un tiem ļauj atteikt, un tas padara robežu neatkarīgu no tuneļa veselības. Demontāžas āķis, kas izdzēš arī noteikumus, ir tiešs kļūmes politikas pretstats.
ip link show tun0
iptables -S OUTPUT
Pārbaudi to apzināti: apturi tuneli, sāc pārsūtīšanu, kuru ir droši pamest, un vēro, vai kaut kas iziet. Pēc tam atgriez tuneli un apstiprini, ka paredzētais ceļš atkal darbojas.
Aptver ceļus, kurus noteikums neredz
Vārdu izšķiršanu var veikt atsevišķs atrisinātāja process, un nosaukumvieta vai īpaša vārteja var dot vēl vienu robežu, ja to koplietošanas un palaišanas ceļi ir tā projektēti. Izlem, kurš komponents pārvalda DNS un vai tas ievēro to pašu izejas noteikumu. Pēc tam paskaties uz RPC: ja tiek izmantots rpc-whitelist, apstiprinātais pārvaldības tīkls ir līguma daļa, bet plašs RFC1918 diapazons nav.
ss -tunp | grep -i transmission
Saskarnes skaitītāji var apstiprināt novērojumu, bet nevar pierādīt, kurš process radīja baitus. Veic pārsūtīšanu, kuru drīksti pamest: vispirms darba ceļā, pēc tam bez tuneļa startā, un tad caur pārtraukumu, atkārtotu savienojumu un tikko izveidotu saskarni. Pārbaudi gan jaunu mēģinājumu, gan jau atvērtu savienojumu, jo noteikums varēja netikt piemērots vecākai ligzdai. Pieraksti datumu, kontu un rezultātu kopā ar testu.
Ielīmēt piemēru, kas iztīra visu ķēdi, nozīmē vienu caurumu samainīt pret vairākiem, tāpēc pievieno noteikumus, nevis dzēs tos. Kad iztur visas piecas pārbaudes, garantija ir skaidra: klienta plūsma iziet caur tuneli vai neiziet vispār, un noteikums, kas to piespiež, pārdzīvo arī paša tuneļa kļūmi.