Linux'da Transmission: chiqishni jarayon egasiga ko'ra majburlash
Tengdosh porti butun hikoya emas. Firewall qoidasini mijoz hisobiga bog'lang, ikkala manzil oilasini qamrab oling va tunnel o'chirilganda sinab ko'ring.
Transmission'ning kiruvchi portini bloklash VPN siyosati emas. Torrent mijozi tengdoshlar va trekerlarga chiquvchi ulanishlar ochadi, nomlarni hal qiladi va masofadan boshqarish uchun tinglovchini ushlab turishi mumkin, va bu oqimlarning har biri siz rejalashtirmagan interfeys orqali chiqishi mumkin. Beshta tekshiruvni tartib bilan o'ting va chegara sifatida mijoz sozlamalarini emas, firewall qoidasini oling. Oxirgi ikki tekshiruv odatda o'tkazib yuboriladi va tunnel qulaganida kafolat saqlanadimi-yo'qmi, aynan ular hal qiladi.
Uzatmaga ega jarayonni nomlang
Ish stoli ilovasi va tizim demoni turli hisoblarda ishlaydi, egasi bo'yicha qoida esa dastur nomiga emas, hisobga ergashadi. Qoida yozishdan oldin qaysi biri ishlayotganini aniqlang. Alohida xizmat hisobi siyosatga aniq subyekt beradi, ish stoli foydalanuvchisi esa o'z shaxsiyatini brauzerlar, muharrirlar va sessiyadagi barcha narsa bilan bo'lishadi. UID'ni tasdiqlang, paketdagi hisob nomi ishlatilayotgan nom deb o'ylamang.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
Agar hisob hali yo'q bo'lsa, uni shu maqsad uchun yarating va unga boshqa hech narsa ishlatmang. Hisob va UID'ni qoida izohiga yozing, chunki subyektsiz qoida hech kim xavfsiz tahrirlay olmaydigan qoidadir.
Tinglash maydonlarini marshrutdan ajrating
Transmission 4.x tengdoshlarning tinglash manzillarini rpc-bind-address sozlamasidan alohida hujjatlashtiradi va bu farq muhim. RPC sozlamasi faqat masofadan boshqarish tinglovchisini boshqaradi, shuning uchun uni o'zgartirish tengdoshlar trafigi uchun marshrut tanlamaydi. Ikki sozlamani bitta deb o'qish — tashqi ko'rinishi ehtiyotkor konfiguratsiya baribir oqib ketishining eng keng tarqalgan sababi. Xuddi shu hujjat tengdoshning tinglash manzili yaroqsiz bo'lgandagi zaxira yo'lni tavsiflaydi, ya'ni mavjud bo'lmagan manzil hujjatlashtirilgan zaxira holat, kafolatlangan rad emas.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
Mijoz boshqaruvlarini o'z maqsadida ishlating va kafolatni firewall'ga qo'ying. Tinglash sozlamasi hali ham foydali bo'lishi mumkin, lekin u trekerlar bilan aloqa, mahalliy aniqlash yoki vakolatli qidiruv barchasi tunneldan chiqishini isbotlamaydi. Ikkisi ziddiyatga tushsa, firewall hal qiladi.
Egasiga moslikni to'g'ri zanjirga yozing
Netfilter'ning egasiga moslik bo'yicha qo'llanmasi mahalliy yaratilgan paketlarning socket fayliga ega foydalanuvchi yoki guruhga qanday nisbatlanishini tushuntiradi. Bu nisbatlash uzatilgan trafikka tarqalmaydi va qo'shimcha guruhlarni moslashtirish aniq opsiyani talab qiladi. Haqiqatda ishlatayotgan kengaytmaning qo'llanmasini o'qing, topilgan birinchi misolni emas.
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
Tartib moslik kabi muhim. Zanjirning yuqorisidagi keng ruxsat pastdagi aniq radni bekor qiladi, shuning uchun qoida qo'shib umid qilish o'rniga butun zanjirni ko'rib chiqing. Xost IPv6 ishlatsa, ikkala manzil oilasini ham qo'shing, chunki faqat v4 siyosati hech kim kuzatmaydigan yo'lni ochiq qoldiradi. Qoidalarni mijoz va tunnelning qayta ishga tushishlari davomida o'rnatilgan holda saqlang.
tun0 yo'qolganda nima bo'lishini hal qiling
Nosozlik siyosati mashqning mohiyatidir. Tunnel yo'qolsa va xuddi shu ilgak qoidalarni olib tashlasa, mijoz uni boshqa narsa to'xtatmaguncha jismoniy interfeysdan foydalanishga erkin. Xavfsiz dizayn qoidalarni saqlaydi va ularning rad etishiga yo'l qo'yadi, chegarani tunnel sog'lig'idan mustaqil qiladigan ham shu. Qoidalarni ham o'chiradigan demontaj ilgagi nosozlik siyosatining to'liq teskarisi.
ip link show tun0
iptables -S OUTPUT
Buni ataylab sinab ko'ring: tunnelni to'xtating, tashlab ketish xavfsiz bo'lgan uzatmani boshlang va biror narsa chiqayotganini kuzating. Keyin tunnelni qaytaring va mo'ljallangan yo'l yana ishlashini tasdiqlang.
Qoida ko'rmaydigan yo'llarni qamrab oling
Nomlarni hal qilishni alohida hal qiluvchi jarayon bajarishi mumkin, nom fazosi yoki maxsus shlyuz esa ularning ulashish va yuklash yo'llari shunga mo'ljallangan bo'lsa, yana bir chegara bera oladi. DNS kimga tegishli va u xuddi shu chiqish qoidasiga bo'ysunadimi, hal qiling. Keyin RPC'ga qarang: agar rpc-whitelist ishlatilsa, tasdiqlangan boshqaruv tarmog'i shartnomaning qismi, keng RFC1918 diapazoni esa emas.
ss -tunp | grep -i transmission
Interfeys hisoblagichlari kuzatuvni tasdiqlashi mumkin, lekin baytlarni qaysi jarayon yaratganini isbotlay olmaydi. Tashlab ketishga ruxsat berilgan uzatma qiling: avval ishlaydigan yo'lda, keyin ishga tushishda tunnelsiz, so'ngra uzilish, qayta ulanish va yangi yaratilgan interfeys orqali. Ham yangi urinishni, ham allaqachon ochiq bo'lgan ulanishni sinang, chunki qoida eski socketga qo'llanmagan bo'lishi mumkin. Sanani, hisobni va natijani sinov bilan birga yozib qo'ying.
Butun zanjirni tozalaydigan misolni joylashtirish bitta teshikni bir nechta teshikka almashtiradi, shuning uchun qoidalarni o'chirish o'rniga qo'shing. Beshta tekshiruvning barchasi o'tsa, kafolat aniq: mijoz trafigi tunneldan chiqadi yoki umuman chiqmaydi, va buni majburlaydigan qoida tunnelning o'z nosozligini ham yengadi.