Memblokir port masuk Transmission bukanlah kebijakan VPN. Klien torrent membuka koneksi keluar ke peer dan tracker, menyelesaikan nama, dan mungkin mengekspos pendengar kendali jarak jauh, dan setiap hal itu bisa keluar melalui antarmuka yang tidak Anda maksudkan. Jalani kelima pemeriksaan secara berurutan dan perlakukan aturan firewall, bukan pengaturan klien, sebagai batasnya. Dua pemeriksaan terakhir adalah yang sering dilewati orang, dan keduanya menentukan apakah jaminan tetap berlaku saat terowongan putus.

Namai proses yang memiliki transfer

Aplikasi desktop dan daemon sistem berjalan di bawah akun berbeda, dan aturan berbasis pemilik mengikuti akun, bukan nama program. Cari tahu mana yang sedang berjalan sebelum menulis aturan apa pun. Akun layanan khusus memberi kebijakan subjek yang tepat, sedangkan pengguna desktop berbagi identitasnya dengan peramban, editor, dan semua hal lain dalam sesi. Konfirmasikan UID alih-alih menganggap bahwa nama akun dari paket adalah yang dipakai.

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

Jika akunnya belum ada, buatlah untuk keperluan ini dan jangan beri ia hal lain untuk dijalankan. Tulis akun dan UID di komentar aturan, karena aturan tanpa subjek adalah aturan yang tidak dapat disunting siapa pun dengan aman.

Pisahkan bidang pendengar dari rute

Transmission 4.x mendokumentasikan alamat pendengar peer secara terpisah dari rpc-bind-address, dan perbedaannya penting. Pengaturan RPC hanya mengendalikan pendengar kendali jarak jauh, jadi mengubahnya tidak memilih rute untuk lalu lintas peer. Membaca kedua pengaturan sebagai satu adalah alasan paling umum konfigurasi yang tampak cermat masih bocor. Dokumentasi yang sama menjelaskan cadangan saat alamat pendengar peer tidak valid, jadi alamat yang tidak tersedia adalah kasus cadangan yang terdokumentasi, bukan penolakan yang dijamin.

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

Gunakan kontrol klien sesuai fungsinya, dan taruh jaminannya di firewall. Pengaturan pendengar masih bisa berguna, tetapi itu tidak menetapkan bahwa kontak tracker, penemuan lokal, atau pencarian yang didelegasikan semuanya keluar melalui terowongan. Ketika keduanya tidak sependapat, firewall yang menentukan.

Tulis pencocokan pemilik di rantai yang tepat

Manual Netfilter tentang pencocokan pemilik menjelaskan bagaimana paket yang dihasilkan secara lokal diatribusikan ke pengguna atau grup pemilik berkas soket. Atribusi itu tidak berlaku untuk lalu lintas yang diteruskan, dan pencocokan grup tambahan memerlukan opsi eksplisit. Baca manual untuk ekstensi yang benar-benar Anda gunakan, bukan contoh pertama yang Anda temukan.

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 pencocokan. Penerimaan luas di bagian atas rantai membatalkan penolakan tepat di bagian bawah, jadi tinjau seluruh rantai alih-alih menambahkan aturan dan berharap. Sertakan kedua keluarga alamat jika host menjalankan IPv6, karena kebijakan hanya v4 meninggalkan jalur terbuka yang tidak diawasi siapa pun. Pertahankan aturan tetap terpasang di seluruh restart klien maupun terowongan.

Putuskan apa yang terjadi saat tun0 hilang

Kebijakan kegagalan adalah inti latihan ini. Jika terowongan hilang dan hook yang sama menghapus aturan, klien bebas memakai antarmuka fisik sampai ada hal lain yang menghentikannya. Desain aman mempertahankan aturan dan membiarkannya menolak, dan itulah yang membuat batasnya tidak bergantung pada kesehatan terowongan. Hook pembongkaran yang juga menghapus aturan adalah kebalikan dari kebijakan kegagalan.

ip link show tun0
iptables -S OUTPUT

Ujilah dengan sengaja: hentikan terowongan, mulai transfer yang aman untuk ditinggalkan, dan amati apakah ada yang keluar. Lalu kembalikan terowongan dan pastikan jalur yang dimaksud berfungsi lagi.

Cakup jalur yang tidak dilihat aturan

Resolusi nama dapat ditangani oleh proses resolver terpisah, dan namespace atau gateway khusus dapat menyediakan batas lain jika jalur berbagi dan bootstrap-nya dirancang untuk itu. Putuskan komponen mana yang memiliki DNS dan apakah komponen itu mengikuti aturan keluar yang sama. Lalu lihat RPC: jika rpc-whitelist digunakan, jaringan manajemen yang disetujui adalah bagian dari kontrak, dan rentang RFC1918 yang luas bukan.

ss -tunp | grep -i transmission

Penghitung antarmuka dapat menguatkan pengamatan, tetapi tidak dapat membuktikan proses mana yang menghasilkan byte itu. Jalankan transfer yang boleh Anda tinggalkan: pertama di jalur yang berfungsi, lalu tanpa terowongan saat mulai, lalu melewati gangguan, penyambungan ulang, dan antarmuka yang baru dibuat. Uji percobaan baru maupun koneksi yang sudah terbuka, karena aturan mungkin belum berlaku pada soket lama. Catat tanggal, akun, dan hasilnya bersama pengujian.

Menempelkan contoh yang membersihkan seluruh rantai menukar satu lubang dengan beberapa, jadi tambahkan aturan alih-alih menghapusnya. Saat kelima pemeriksaan lolos, jaminannya eksplisit: lalu lintas klien keluar melalui terowongan atau tidak sama sekali, dan aturan yang menegakkannya bertahan saat terowongan itu sendiri gagal.

Artikel terkait