Pada episode ini kita akan mengunci daemon RPC aria2: token akses dengan rpc-secret, autentikasi user dan password, membatasi interface yang didengar, firewall untuk jaringan LAN, serta pola akses jarak jauh yang benar tanpa mengekspos port ke internet.

Di episode 13 kalian memastikan bahwa server yang diajak bicara benar-benar server yang kalian tuju — identitas pihak lain terverifikasi. Sekarang giliran sisi kalian: sejak episode 3, kalian tahu aria2 bisa berjalan sebagai daemon dan diendalikan lewat antarmuka RPC. Antarmuka itu adalah remote control — dan remote control yang tidak terkunci adalah undangan untuk siapa pun yang bisa menjangkaunya.
Episode 14 membahas cara mengunci pintu RPC: token, user dan password, batasan interface, firewall, serta pola akses jarak jauh yang benar. Keamanan bukan tentang kunci yang kuat saja; ia tentang kunci yang kuat yang tidak pernah tertinggal di meja.
RPC bukan sekadar jendela informasi — ia kendali penuh. Lewat RPC, siapa pun yang bisa mengirim request bisa menyuruh aria2 menambah download, mengubah direktori penyimpanan, menghapus download, dan menjadwalkan pekerjaan. Karena aria2 menulis file ke disk, kendali ini berarti kemampuan menulis file ke sistem — setara memberikan kunci rumah kalian kepada orang asing.
Secara default, daemon RPC hanya mendengar di 127.0.0.1 — proses di mesin yang sama yang bisa menjangkaunya. Itu lapisan pertama, tapi belum cukup: proses lain yang berjalan sebagai user yang sama, atau service lain di mesin, bisa berbicara tanpa meminta izin. Karena itu lapisan kedua harus berupa autentikasi eksplisit.
--rpc-secret: Satu Token untuk Semua PintuCara paling sederhana dan paling dianjurkan untuk mengunci RPC adalah secret token:
aria2c --enable-rpc \
--rpc-secret="r4h4s1a-panjang-acak-123" \
--rpc-listen-port=6800--rpc-secret=TOKEN mewajibkan setiap request JSON-RPC membawa token — dibahas rinci di episode 15. Token harus panjang dan acak, karena ia adalah satu-satunya kata sandi antara daemon dan klien. Sekali diatur, request tanpa token ditolak sebelum perintah dijalankan.
Warning
Jangan tulis secret di command line dalam jangka panjang — ia terlihat di ps selama proses berjalan dan menempel di shell history. Tempat yang benar adalah baris rpc-secret di file aria2.conf dengan permission 600, atau dibaca dari environment.
--rpc-user dan --rpc-passwdSelain token, aria2 menyediakan pasangan user dan password berbasis HTTP Basic Authentication:
aria2c --enable-rpc \
--rpc-user=admin --rpc-passwd=rahasia \
--rpc-listen-port=6800--rpc-user=admin dan --rpc-passwd=rahasia bekerja sebagai pasangan identitas: username menegaskan siapa, password membuktikan bahwa ia. Perbedaannya dengan --rpc-secret terletak pada bentuknya: user dan password adalah dua nilai terpisah, sedangkan token adalah satu nilai yang dirotasi lebih mudah. Karena itu --rpc-secret menjadi pilihan utama untuk integrasi modern — satu string, satu sumber kebenaran, dan diganti tanpa mengatur ulang username.
--rpc-listen-allDefault --rpc-listen-all=false membuat aria2 hanya mendengar di loopback — tak ada kartu jaringan lain yang bisa menjangkaunya. Opsi inilah yang paling sering disalahgunakan:
# BERBAHAYA: mendengar di semua interface tanpa pembatas
aria2c --enable-rpc --rpc-secret="rahasia-panjang-acak" \
--rpc-listen-all=true--rpc-listen-all=true membuat daemon mendengar di semua interface jaringan. Ini bukan keputusan "biar bisa diakses dari perangkat lain" yang polos — ia membuka pintu yang tadi hanya di-loopback. Kalau dijalankan tanpa autentikasi, seluruh jaringan lokal bisa mengendalikan daemon. Kalaupun autentikasi aktif, setiap interface yang terbuka memperluas permukaan serangan.
Important
Nyanyikan ini sebagai mantra: --rpc-listen-all=true tanpa token dan tanpa firewall adalah pintu yang terbuka lebar. Kalau belum benar-benar butuh akses jaringan, biarkan tetap false — loopback adalah rumah yang paling aman untuk daemon download.
Kalau akses lintas host memang dibutuhkan, jangan membuka semua interface — pilih satu saja. Opsi --rpc-listen-interface mengikat daemon ke interface atau alamat tertentu:
aria2c --enable-rpc --rpc-secret="rahasia-panjang-acak" \
--rpc-listen-interface=eth1--rpc-listen-interface=eth1 memastikan daemon hanya mendengar di interface yang kalian tunjuk — misalnya interface jaringan internal, bukan interface yang menghadap internet. Ini analog dengan menempatkan meja resepsionis di lantai yang tepat daripada di lobi yang terbuka ke jalan.
Autentikasi menolak orang yang tidak punya kunci; firewall menolak orang yang tidak pernah sampai ke pintu. Dua lapisan berbeda, keduanya layak dipasang. Untuk akses dari jaringan LAN yang tepercaya, batasi port RPC ke subnet tertentu:
sudo ufw allow from 192.168.1.0/24 to any port 6800 proto tcpAturan di atas hanya mengizinkan lalu lintas menuju port 6800 dari subnet 192.168.1.0/24 — sisanya diblokir sebelum mencapai daemon. Firewall mengubah "siapapun bisa mencoba" menjadi "hanya jaringan ini yang mencoba". Kombinasi firewall yang ketat dan token yang kuat adalah pertahanan berlapis yang sebenarnya.
Pola paling umum untuk daemon download di server: ia diakses dari laptop pengguna. Godaan terbesarnya adalah --rpc-listen-all=true tanpa pengaman agar bisa diakses dari mana saja. Ini pola yang keliru, karena token dikirim sebagai teks biasa tanpa TLS — siapapun di jalur jaringan bisa membacanya.
Pola yang benar untuk akses dari mesin lain:
ssh -N -L 6800:localhost:6800 user@server-downloadhttp://127.0.0.1:6800/jsonrpc di mesin lokal menembus ke daemon di server — tanpa membuka port apa pun ke internet.127.0.0.1:6800 — kita bangun pola produksinya lebih dalam di episode setup production nanti.Tip
Rule of thumb yang selalu menolong: kalau sebuah port tidak perlu terlihat oleh dunia, jangan buat ia terlihat. SSH tunnel memberi koneksi terenkripsi tanpa mengekspos port sama sekali — hasil yang sama dengan rasa aman yang jauh lebih besar.
Rangkuman keputusan yang harus kalian ambil setiap kali menyalakan daemon RPC:
--rpc-listen-all=false) kecuali benar-benar butuh akses jaringan.--rpc-secret dengan token yang panjang dan acak — bukan rahasia atau password.--rpc-listen-interface dengan aturan firewall per subnet.aria2.conf dengan permission 600, bukan literal di command line atau di repo.Episode 14 mengunci pintu RPC dari segala arah: memahami kenapa RPC butuh autentikasi, memakai --rpc-secret sebagai token utama, mengenal --rpc-user dan --rpc-passwd, menolak --rpc-listen-all=true tanpa alasan, membatasi dengan --rpc-listen-interface dan firewall, serta menjalankan pola akses jarak jauh yang benar lewat SSH tunnel atau HTTPS reverse proxy.
Inti yang perlu diingat: RPC adalah remote control, bukan kotak informasi — perlakukan ia seperti itu. Pintu yang terkunci di tempat yang salah tetap pintu yang salah, selama ia terbuka untuk semua orang.
Di episode 15 berikutnya pintu sudah terkunci — saatnya belajar bahasa yang dipakai di balik pintu: RPC JSON-RPC & XML-RPC — struktur request dan respons, method-method inti, notifikasi event, serta interaksi langsung dengan curl dan jq untuk integrasi script. Sampai jumpa!