Transmission di Linux: paksa lalu lintas keluar mengikut pemilik proses
Port rakan sebaya bukan keseluruhan cerita. Hadkan peraturan firewall kepada akaun klien, liputi kedua-dua keluarga alamat dan uji dengan terowong dimatikan.
Menyekat port masuk Transmission bukanlah dasar VPN. Klien torrent membuka sambungan keluar ke rakan sebaya dan penjejak, menyelesaikan nama dan mungkin mendedahkan pendengar kawalan jauh, dan setiap satunya boleh keluar melalui antara muka yang tidak anda maksudkan. Lalui kelima-lima semakan mengikut urutan dan anggap peraturan firewall, bukan tetapan klien, sebagai sempadan. Dua semakan terakhir ialah yang orang selalu langkau, dan kedua-duanya menentukan sama ada jaminan itu kekal apabila terowong terputus.
Namakan proses yang memiliki pemindahan
Aplikasi desktop dan daemon sistem berjalan di bawah akaun berbeza, dan peraturan berasaskan pemilik mengikut akaun dan bukan nama program. Ketahui yang mana satu sedang berjalan sebelum menulis apa-apa peraturan. Akaun perkhidmatan khusus memberi dasar itu subjek yang tepat, manakala pengguna desktop berkongsi identitinya dengan pelayar, penyunting dan segala-galanya dalam sesi. Sahkan UID dan jangan menganggap nama akaun daripada pakej itu yang digunakan.
systemctl status transmission-daemon
ps -o user=,pid=,cmd= -C transmission-daemon
Jika akaun itu belum wujud, ciptakannya untuk tujuan ini dan jangan beri ia apa-apa lagi untuk dijalankan. Tulis akaun dan UID dalam komen peraturan, kerana peraturan tanpa subjek ialah peraturan yang tiada siapa boleh sunting dengan selamat.
Pisahkan medan pendengar daripada laluan
Transmission 4.x mendokumenkan alamat pendengar rakan sebaya secara berasingan daripada rpc-bind-address, dan perbezaannya penting. Tetapan RPC hanya mengawal pendengar kawalan jauh, jadi mengubahnya tidak memilih laluan untuk trafik rakan sebaya. Membaca kedua-dua tetapan sebagai satu ialah sebab paling biasa konfigurasi yang kelihatan teliti masih bocor. Dokumentasi yang sama menerangkan sandaran apabila alamat pendengar rakan sebaya tidak sah, jadi alamat yang tidak tersedia ialah kes sandaran yang didokumenkan, bukan penolakan yang dijamin.
grep -E '"(peer-port|rpc-bind-address|bind-address-ipv4)"' /var/lib/transmission-daemon/.config/transmission-daemon/settings.json
Gunakan kawalan klien untuk apa yang ada padanya, dan letakkan jaminan dalam firewall. Tetapan pendengar mungkin masih berbaloi digunakan, tetapi ia tidak membuktikan bahawa hubungan dengan penjejak, penemuan setempat atau carian yang diwakilkan semuanya keluar melalui terowong. Apabila kedua-duanya tidak bersetuju, firewall yang menentukan.
Tulis padanan pemilik dalam rantai yang betul
Manual Netfilter tentang padanan pemilik menerangkan bagaimana paket yang dijana secara setempat dikaitkan dengan pengguna atau kumpulan pemilik fail soket. Kaitan itu tidak meliputi trafik yang dimajukan, dan padanan kumpulan tambahan memerlukan pilihan yang jelas. Baca manual bagi sambungan yang anda benar-benar gunakan dan bukan contoh pertama yang anda jumpa.
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
Urutan sama pentingnya dengan padanan. Penerimaan luas lebih awal dalam rantai membatalkan penolakan tepat kemudian, jadi semak seluruh rantai dan jangan hanya menambah peraturan sambil berharap. Sertakan kedua-dua keluarga alamat jika hos menjalankan IPv6, kerana dasar v4 sahaja meninggalkan laluan terbuka yang tiada siapa mengawasinya. Kekalkan peraturan dipasang sepanjang permulaan semula klien dan terowong.
Tentukan apa yang berlaku apabila tun0 hilang
Dasar kegagalan ialah inti latihan ini. Jika terowong hilang dan cangkuk yang sama membuang peraturan, klien bebas menggunakan antara muka fizikal sehingga ada sesuatu yang menghentikannya. Reka bentuk selamat mengekalkan peraturan dan membiarkannya menolak, dan itulah yang menjadikan sempadan itu bebas daripada kesihatan terowong. Cangkuk pembongkaran yang turut memadam peraturan ialah lawan kepada dasar kegagalan.
ip link show tun0
iptables -S OUTPUT
Ujinya dengan sengaja: hentikan terowong, mulakan pemindahan yang selamat ditinggalkan dan perhatikan sama ada apa-apa keluar. Kemudian kembalikan terowong dan sahkan laluan yang dimaksudkan berfungsi semula.
Liputi laluan yang tidak dilihat peraturan
Penyelesaian nama mungkin dikendalikan oleh proses penyelesai berasingan, dan ruang nama atau get laluan khusus boleh menyediakan sempadan lain jika laluan perkongsian dan bootstrapnya direka untuk itu. Tentukan komponen mana yang memiliki DNS dan sama ada ia mengikut peraturan keluar yang sama. Kemudian lihat RPC: jika rpc-whitelist digunakan, rangkaian pengurusan yang diluluskan ialah sebahagian daripada kontrak, dan julat RFC1918 yang luas bukan.
ss -tunp | grep -i transmission
Pembilang antara muka boleh menyokong pemerhatian, tetapi ia tidak boleh membuktikan proses mana yang menghasilkan bait itu. Lakukan pemindahan yang anda dibenarkan tinggalkan: pertama pada laluan yang berfungsi, kemudian tanpa terowong semasa permulaan, dan seterusnya melalui gangguan, sambungan semula dan antara muka yang baru dicipta. Uji percubaan baharu serta sambungan yang sudah terbuka, kerana peraturan itu mungkin belum dikenakan pada soket lama. Catat tarikh, akaun dan hasil bersama ujian itu.
Menampal contoh yang membersihkan seluruh rantai menukar satu lubang dengan beberapa, jadi tambah peraturan dan jangan memadamnya. Apabila kelima-lima semakan lulus, jaminan itu jelas: trafik klien keluar melalui terowong atau tidak keluar langsung, dan peraturan yang menguatkuasakannya bertahan apabila terowong itu sendiri gagal.