TrustPositif To RPZ Binary
Panduan Instalasi BIND9 DNS Filtering, Response Policy Zone, WhiteList & Google SafeSearch
Debian 12/13 · Ubuntu 22.04/24.04 · BIND9 9.18+ · Production Ready
Kontak Penulis & Konsultasi
ALSYUNDAWY IT SOLUTION
- DOC: Memperkaya seluruh section dengan konteks resmi Komdigi, arsitektur RPZ (trigger & action), praktik ISP Indonesia, dan perbandingan BIND9 vs Unbound.
- DOC: Menambahkan penjelasan Sunat TrustPositif, master/slave konsep DNS, ACL/firewall, dan checklist operasional yang lebih lengkap.
- UX: Peningkatan keterbacaan, tabel informatif, dan bahasa teknis yang lebih profesional & mudah dipahami.
- A11Y / SEO: Semantic structure, caption tabel, meta 2026-ready, dan fokus keyboard tetap terjaga.
- CODE: Review HTML/CSS/JS — copy-to-clipboard, IntersectionObserver, back-to-top, dan responsive layout diverifikasi production-ready.
- FIX: setup_rpz_binary mengunduh ke temp file dulu sebelum mengganti binary lama (mencegah data loss).
- FIX: Duplikasi pesan error pada cleanup_temp_files dihilangkan.
- SECURITY: Permission eksplisit 644 pada log file.
- FIX: systemctl enable --now cron setelah instalasi paket cron.
- Default database RPZ dialihkan ke ALSYUNDAWY DATABASE.
- Script 100% idempoten; aman dijalankan ulang.
- Menu pemilihan sumber RPZ via /dev/tty (aman di pipe/curl|bash).
- Trap pembersihan file sementara, auto rndc.key, deteksi OS diperluas (Debian 13+/Ubuntu 24.04+).
- Auto-install BIND9 + RPZ, WhiteList, Google SafeSearch, multi-source (Alsyundawy / Komdigi / GitHub), auto-update 12 jam.
Ringkasan Status Komponen & Arsitektur
Komponen utama yang digunakan dalam panduan instalasi BIND9 DNS Filtering dengan TrustPositif RPZ:
| Komponen | Versi / Status | Peran & Catatan |
|---|---|---|
| BIND9 (named) | 9.18+ | DNS recursive resolver + authoritative untuk zona RPZ |
| Response Policy Zone | Aktif | DNS firewall — memblokir / rewrite domain berdasarkan policy |
| TrustPositif Database | Multi-Source | Alsyundawy / Komdigi / GitHub — daftar domain diblokir |
| Port Default | 53 UDP/TCP | Port DNS standar; konflik dengan systemd-resolved ditangani otomatis |
| Auto Update | Cron 12 jam | Sinkronisasi database RPZ otomatis via cron |
| Binary RPZ | /usr/local/bin/rpz | Database RPZ sebagai binary executable |
0.1 Apa itu TrustPositif?
TrustPositif (sering disebut juga Internet Positif atau Nawala di kalangan pengguna) adalah sistem penyaringan konten internet resmi yang dikelola oleh Kementerian Komunikasi dan Digital (Komdigi) Republik Indonesia — sebelumnya Kementerian Komunikasi dan Informatika (Kominfo). Portal resmi saat ini: trustpositif.komdigi.go.id.
Database TrustPositif berisi daftar domain/URL yang dikategorikan bermuatan negatif: pornografi, perjudian online (judol/judi slot), penipuan, malware, konten radikal, dan pelanggaran regulasi lainnya. Berdasarkan praktik ISP, mayoritas entri dalam beberapa tahun terakhir didominasi domain perjudian online.
Seluruh Internet Service Provider (ISP) berlisensi di Indonesia wajib menyinkronkan daftar ini ke jaringan mereka. Metode paling umum adalah DNS filtering: saat pengguna menanyakan domain terblokir, DNS ISP mengembalikan alamat halaman blokir (walled garden), bukan IP asli server tujuan.
0.2 Apa itu Response Policy Zone (RPZ)?
Response Policy Zone (RPZ) adalah kerangka kerja terbuka (vendor-neutral) yang memungkinkan DNS resolver memodifikasi respons berdasarkan kebijakan lokal. RPZ sering disebut DNS firewall: aturan policy disimpan dalam zona DNS khusus, lalu diterapkan pada query atau jawaban yang cocok.
Trigger utama yang didukung BIND9 dan Unbound antara lain:
- QNAME — nama domain yang ditanyakan (paling sering dipakai untuk blocklist TrustPositif)
- Client IP — alamat IP klien yang query
- Response IP — alamat IP yang muncul di jawaban asli
- NSDNAME / NSIP — nama atau IP nameserver otoritatif
Aksi policy yang umum: NXDOMAIN (domain tidak ada), NODATA, CNAME ke halaman blokir (mis. lamanlabuh.resolver.id), PASSTHRU (lewati policy), DROP, atau TCP-only.
RPZ didukung secara native oleh BIND9 (sejak 9.8+, matang di 9.10+) dan Unbound (sejak 1.10+). Script ini fokus pada BIND9 karena ekosistem ISP Indonesia, fleksibilitas multi-zona, dan kesesuaian dengan distribusi zone file resmi/semi-resmi.
0.3 Mengapa Membangun DNS TrustPositif Sendiri?
| Manfaat | Penjelasan |
|---|---|
| Compliance ISP / PSE | Memenuhi kewajiban pemblokiran sesuai regulasi Komdigi tanpa bergantung penuh pada DNS pihak ketiga |
| Kontrol penuh | Anda memilih sumber database, whitelist, SafeSearch, dan kebijakan update |
| Privasi & latensi | Query tetap di jaringan Anda; tidak perlu forward semua query ke resolver publik |
| Audit & logging | Log RPZ lokal memudahkan investigasi false positive dan pelaporan |
| Skalabilitas | Siap untuk master/slave, anycast, atau multi-instance di skala ISP |
Pendahuluan — DNS, TrustPositif, RPZ & BIND9
1.1 Cara Kerja DNS Filtering dengan RPZ
Proses dasar filtering DNS via RPZ pada BIND9 dapat diringkas sebagai berikut:
- Query masuk: Klien mengirim query DNS (misalnya A/AAAA untuk domain.xyz) ke resolver BIND9 di port 53.
- Pemeriksaan ACL: BIND memastikan klien diizinkan query/recursion (allow-query / allow-recursion).
- RPZ lookup: Sebelum (atau bersamaan dengan) rekursi normal, BIND mencocokkan QNAME (dan trigger lain jika dikonfigurasi) terhadap zona policy TrustPositif.
- Policy action: Jika cocok, BIND menerapkan aksi — biasanya CNAME ke halaman blokir (walled garden) atau NXDOMAIN — tanpa meneruskan query ke internet.
- Respons ke klien: Klien menerima jawaban policy; browser/aplikasi mengarah ke halaman pemblokiran, bukan ke server asli.
- Domain aman: Jika tidak ada match RPZ (atau ada PASSTHRU dari whitelist), query diproses normal: cache, rekursi, atau forwarder.
1.2 Mengapa BIND9 + RPZ?
| Solusi | Keunggulan | Keterbatasan |
|---|---|---|
| BIND9 + RPZ | Standar industri ISP, multi-zona (hingga puluhan policy zone), mature, open-source, dokumentasi luas | Konsumsi memori lebih tinggi untuk zona sangat besar; konfigurasi lebih verbose |
| Unbound + RPZ | Ringan, modern, recursive-first, performa bagus di edge/small resolver | Ekosistem operasional ISP Indonesia lebih banyak memakai BIND; fitur enterprise berbeda |
| Pi-hole / AdGuard Home | UI mudah, cocok home lab & jaringan kecil | Bukan fokus compliance TrustPositif / skala ISP; model blocklist berbeda |
| Squid + SquidGuard | Filtering di layer HTTP/HTTPS; historis dipakai Trust+ Positif versi lama | Tidak menangkap semua traffic (DoH, non-HTTP); butuh proxy di path pengguna |
Pilihan BIND9 + RPZ selaras dengan praktik banyak ISP yang menerima zone transfer atau file zone TrustPositif dan menerapkannya sebagai response-policy di recursive resolver.
1.3 Arsitektur TrustPositif To RPZ Binary
- BIND9 Daemon (named): Recursive resolver yang menerima query dan menerapkan policy RPZ.
- Zona RPZ TrustPositif: Zone file berisi daftar domain + aksi (sering CNAME ke
lamanlabuh.resolver.idatau sejenis). - Binary
/usr/local/bin/rpz: Database RPZ yang diunduh dari sumber pilihan (Alsyundawy / Komdigi / GitHub) dan dijadikan executable lokal. - WhiteList Zone: Domain yang dikecualikan dari pemblokiran (aksi PASSTHRU).
- SafeSearch Zone: Memaksa endpoint SafeSearch Google/YouTube/Bing untuk jaringan pendidikan atau instansi.
- Cron job: Update database RPZ otomatis setiap 12 jam.
- Konfigurasi named:
named.conf.options(response-policy, recursion, ACL) dannamed.conf.local(definisi zona).
1.4 Konsep Master / Slave (Opsional Skala ISP)
Pada skala ISP, satu node dapat menjadi master yang memelihara zona RPZ, sementara node lain menjadi slave yang menerima zone transfer (AXFR/IXFR) dari master atau dari server distribusi resmi. Script one-line ini menyiapkan node recursive standalone yang siap production; untuk cluster multi-node, Anda dapat menambahkan konfigurasi slave dan ACL transfer setelah instalasi dasar berhasil.
1.5 Mengapa Menggunakan Script Ini?
| Keunggulan | Manfaat |
|---|---|
| One-line install | Instalasi BIND9 + RPZ + hardening dalam satu perintah |
| Multi-source database | Pilih Alsyundawy (cleaned), Komdigi, atau GitHub mirror |
| WhiteList & SafeSearch | Kontrol pengecualian dan SafeSearch untuk pendidikan/instansi |
| Idempoten | Aman dijalankan berulang kali tanpa error konflik port |
| Auto update 12 jam | Database RPZ tetap sinkron tanpa intervensi manual |
| Port 53 conflict handler | Menangani systemd-resolved dan named yang sudah berjalan |
| Security hardened | Trap cleanup, validasi unduhan, permission, rndc.key otomatis |
Persyaratan Sistem
Sebelum menjalankan script, pastikan server memenuhi persyaratan berikut. Script akan memeriksa sebagian besar kondisi secara otomatis.
| Distribusi | Versi Minimum | Catatan |
|---|---|---|
| Ubuntu | 22.04 LTS | Direkomendasikan 24.04+ |
| Debian | 12 (Bookworm) | Debian 11 (Bullseye) masih didukung; 13+ (Trixie) didukung |
Rekomendasi Hardware
| Skala | CPU | RAM | Disk | Keterangan |
|---|---|---|---|---|
| Personal / Lab | 2 Core | 8 GB | 20 GB | Minimum resmi; cocok testing |
| Small ISP / Kantor | 4 Core | 16 GB | 40 GB | Direkomendasikan untuk production |
| Medium–Large ISP | 8+ Core | 32+ GB | 100+ GB | High QPS; pertimbangkan multi-instance / anycast |
Database TrustPositif dapat mencapai ratusan MB (tergantung sumber dan tingkat pembersihan). Pastikan RAM cukup agar zona RPZ termuat di memori tanpa thrashing. Untuk performa stabil di production, prioritaskan 16 GB RAM atau lebih.
Persyaratan Wajib
- Superuser privileges (root atau sudo) — script menulis konfigurasi sistem dan mengelola service
- Network interface aktif dengan akses internet (unduh paket APT & database RPZ)
- Distribusi berbasis systemd
- Bash ≥ 4.0
- Port 53 UDP/TCP tersedia, atau siap dilepas dari
systemd-resolved/ layanan DNS lain - Waktu sistem tersinkronisasi (NTP) — penting untuk validasi sertifikat TLS saat unduh dan logging akurat
Persiapan Manual yang Disarankan
- Pastikan hostname dan
/etc/hostskonsisten (script juga memperbaiki pola 127.0.1.1 Debian/Ubuntu) - Jika server virtual, sediakan akses outbound HTTPS (443) ke GitHub raw content
- Backup konfigurasi DNS lama jika server sudah menjalankan named/bind9
Instalasi Cepat (Quick Start)
Jalankan sebagai root (atau via sudo). Script bersifat interaktif untuk pemilihan sumber RPZ.
3.1 One-Line Installer (Recommended)
curl -sSL https://raw.githubusercontent.com/alsyundawy/TrustPositif-To-RPZ-Binary/refs/heads/main/bind9_dns_rpz_setup_configurator.sh | bash
wget -qO- https://raw.githubusercontent.com/alsyundawy/TrustPositif-To-RPZ-Binary/refs/heads/main/bind9_dns_rpz_setup_configurator.sh | bash
3.2 Apa yang Dilakukan Script Secara Otomatis?
- Deteksi OS (Debian 11+/Ubuntu 22.04+) dan tipe virtualisasi (KVM/VMware)
- Penanganan konflik Port 53 (systemd-resolved, named yang sudah berjalan)
- Instalasi paket BIND9, bind9utils, dnsutils, cron, dan dependensi
- Unduhan konfigurasi named.conf.options, named.conf.local, whitelist & safesearch zones
- Pemilihan sumber database RPZ (Alsyundawy / Komdigi / GitHub)
- Penempatan binary RPZ di
/usr/local/bin/rpz - Penjadwalan cron update setiap 12 jam
- Validasi konfigurasi BIND, generate rndc.key jika belum ada, reload named
- Perbaikan /etc/resolv.conf agar mengarah ke 127.0.0.1
3.3 Verifikasi Pasca-Instalasi
# Status service
sudo systemctl status bind9
# atau
sudo systemctl status named
# Port listening
sudo ss -tulnp | grep :53
# Test query domain terblokir (harus mengarah ke policy / lamanlabuh)
dig @127.0.0.1 example-blocked-domain.com
# Test query domain normal
dig @127.0.0.1 google.com
# Cek konfigurasi
sudo named-checkconf
sudo named-checkzone rpz /etc/bind/zones/... # sesuaikan path zona
# Log
sudo journalctl -u bind9 -f -n 50
# atau
tail -f /var/log/install_bind9_rpz.log
dig @127.0.0.1.
Fitur Utama
- Auto Install & Konfigurasi: BIND9 + RPZ dalam satu perintah — tanpa konfigurasi manual berjam-jam.
- WhiteList Support: Kelola daftar putih domain yang tidak diblokir (passthru).
- Google SafeSearch: Paksa SafeSearch untuk Google, YouTube, Bing — cocok jaringan pendidikan/instansi.
- Multi-Source Database: Pilih sumber RPZ: ALSYUNDAWY (default, cleaned), KOMDIGI, atau GITHUB mirror.
- Idempoten & Aman: Script aman dijalankan berulang kali tanpa error konflik port.
- Auto Update 12 Jam: Sinkronisasi database RPZ via cron secara otomatis.
- Port 53 Conflict Handler: Menangani systemd-resolved dan named yang sudah berjalan.
- Validasi Konfigurasi: named-checkconf sebelum reload.
- Binary RPZ Terpisah: Database sebagai executable di /usr/local/bin/rpz.
- Deteksi Virtualisasi: Auto-install guest tools (VMware/KVM).
- Security Hardened: Permission management, cleanup trap, secure download, rndc.key otomatis.
Sumber Database RPZ
Saat instalasi, script menampilkan menu pemilihan sumber database RPZ. Semua opsi disimpan sebagai binary lokal /usr/local/bin/rpz.
| Opsi | Sumber | Keterangan | Rekomendasi |
|---|---|---|---|
| 1. ALSYUNDAWY | rpz-alsyundawy-database | Database cleaned & optimized (Sunat TrustPositif) — default | Sangat disarankan |
| 2. KOMDIGI | rpz-komdigi-database | Database mendekati sumber resmi Komdigi | Untuk compliance ketat |
| 3. GITHUB | rpz-github-database | Mirror dari repository GitHub | Fallback / mirror |
Pilihan sumber disimpan sebagai binary lokal yang sama (/usr/local/bin/rpz). Anda dapat mengganti sumber dengan menjalankan ulang installer dan memilih opsi lain — script bersifat idempoten.
WhiteList & Google SafeSearch
Script mengunduh zona whitelist dan safesearch dari repository. File berada di /etc/bind/zones/.
6.1 WhiteList
Zona whitelist menggunakan aksi PASSTHRU agar domain tertentu tidak kena policy blokir. Edit file alsyundawy_whitelist.zones untuk menambah domain yang dikecualikan, lalu reload BIND:
# Edit whitelist
sudo nano /etc/bind/zones/alsyundawy_whitelist.zones
# Contoh entri (sesuaikan format zona yang dipakai script)
# example.com CNAME rpz-passthru.
# *.example.com CNAME rpz-passthru.
# Validasi & reload
sudo named-checkconf
sudo rndc reload
# atau
sudo systemctl reload bind9
6.2 Google SafeSearch
Zona SafeSearch memaksa resolusi Google, YouTube, dan mesin pencari lain ke endpoint SafeSearch. Berguna untuk jaringan sekolah, kampus, atau kantor yang ingin membatasi konten pencarian.
File: /etc/bind/zones/alsyundawy_safesearch.zones. Pastikan zona ini di-include dalam response-policy di named.conf.options.
Manajemen Post-Installation & Update
Database RPZ diperbarui otomatis setiap 12 jam via cron. Anda juga dapat memperbarui manual.
7.1 Update Manual Database RPZ
# Jalankan ulang binary RPZ (jika binary mendukung update)
sudo /usr/local/bin/rpz
# Atau unduh ulang dari sumber yang dipilih lalu reload
# (sesuaikan URL sesuai sumber yang Anda pilih saat instalasi)
sudo systemctl reload bind9
# atau
sudo rndc reload
7.2 Menjalankan Ulang Installer
Karena script idempoten, Anda dapat menjalankan ulang one-liner installer kapan saja untuk memperbarui konfigurasi atau mengganti sumber database RPZ tanpa merusak instalasi yang sudah ada.
curl -sSL https://raw.githubusercontent.com/alsyundawy/TrustPositif-To-RPZ-Binary/refs/heads/main/bind9_dns_rpz_setup_configurator.sh | bash
7.3 Log & Monitoring
# Log instalasi
cat /var/log/install_bind9_rpz.log
# Log BIND (jika channel RPZ dikonfigurasi)
sudo journalctl -u bind9 -f
# atau
sudo tail -f /var/log/named/rpz.log # jika path logging RPZ diaktifkan
# Cek cron
sudo crontab -l
ls -la /etc/cron.* 2>/dev/null | head
Keamanan & Hardening Defaults
- Permission management: File konfigurasi dan binary diatur kepemilikan & mode yang aman.
- Cleanup trap: File sementara dihapus otomatis saat interupsi atau error.
- Secure download: Unduhan via temp file di /tmp, validasi ukuran minimal, overwrite atomik.
- rndc.key: Di-generate otomatis dengan permission 640 (root:bind) jika belum ada.
- /etc/resolv.conf: Izin distandarisasi ke 644 (root:root).
- Log file: /var/log/install_bind9_rpz.log dengan permission 644.
- Idempotency: Mengurangi risiko konfigurasi rusak saat re-run.
8.1 Rekomendasi ACL & Firewall
- Batasi
allow-querydanallow-recursionke subnet klien yang dipercaya (contoh: LAN kantor, CGNAT pelanggan). - Jangan expose recursive DNS terbuka ke internet publik — risiko amplifikasi DNS dan abuse sangat nyata.
- Buka port 53 UDP/TCP hanya dari sumber yang diperlukan; kunci SSH dan management plane terpisah.
- Gunakan firewall host (ufw / nftables) atau security group cloud secara konsisten.
- Jika menyediakan DNS untuk pelanggan, dokumentasikan policy filtering dan prosedur whitelist/false-positive.
8.2 Logging RPZ (Opsional tetapi Disarankan)
Aktifkan channel logging kategori rpz di named.conf agar setiap rewrite policy tercatat. Log ini membantu audit, investigasi false positive, dan pelaporan operasional. Batasi ukuran dan rotasi log agar disk tidak penuh.
Troubleshooting & Diagnostic
| Gejala | Penyebab Umum | Solusi |
|---|---|---|
| Port 53 already in use | systemd-resolved atau named lain aktif | Script menangani otomatis; manual: disable systemd-resolved, restart bind9 |
| Domain terblokir masih bisa diakses | Klien belum pakai DNS ini / cache / DoH | Pastikan klien mengarah ke IP server; flush cache; nonaktifkan DNS-over-HTTPS di browser |
| Domain aman ikut terblokir | False positive di database | Tambahkan ke whitelist zone, lalu rndc reload |
| named gagal start | Syntax error di named.conf / zona | named-checkconf; perbaiki; cek journalctl -u bind9 |
| Update RPZ gagal | Jaringan / URL sumber down | Cek konektivitas; jalankan ulang installer atau unduh manual |
| Memori tinggi / OOM | Zona RPZ sangat besar | Naikkan RAM; gunakan sumber Alsyundawy (lebih ringan); pertimbangkan split zone |
# Status
systemctl status bind9
# Log real-time
journalctl -u bind9 -f -n 100
# Port
ss -tulnp | grep -E ':53|named'
# Test policy
dig @127.0.0.1 +short domain-terblokir.example
dig @127.0.0.1 +short google.com
Best Practices Operasional
MUST — Wajib
- Jangan expose recursive DNS terbuka ke internet publik (risiko amplifikasi)
- Batasi allow-query / allow-recursion ke subnet klien yang berwenang
- Backup konfigurasi /etc/bind dan binary RPZ sebelum perubahan besar
- Pantau log dan status service setelah instalasi serta setelah update
- Pastikan cron update RPZ aktif dan berjalan
SHOULD — Disarankan
- Gunakan sumber ALSYUNDAWY DATABASE (default) untuk daftar yang lebih bersih
- Kelola whitelist untuk domain kritis bisnis agar tidak false-positive
- Aktifkan logging kategori RPZ untuk audit pemblokiran
- Update sistem dan paket BIND secara berkala
- Dokumentasikan sumber RPZ yang dipilih dan tanggal instalasi
AVOID — Hindari
- Menjalankan recursion terbuka tanpa ACL
- Menghapus zona whitelist/safesearch tanpa memahami dampaknya
- Menonaktifkan update otomatis tanpa mekanisme pengganti
- Menyimpan kredensial atau secret di client-side / log publik
Ringkasan, Summary & Kesimpulan
11.1 Ringkasan Teknis Arsitektur
Panduan ini membahas instalasi dan operasional BIND9 DNS Filtering dengan Response Policy Zone (RPZ) berbasis database TrustPositif Komdigi, menggunakan script maintained dari repository alsyundawy/TrustPositif-To-RPZ-Binary.
Script mengotomatiskan: deteksi OS, penanganan konflik port 53, instalasi BIND9, unduhan konfigurasi & binary RPZ, pemilihan multi-sumber database, WhiteList, Google SafeSearch, penjadwalan update 12 jam, validasi konfigurasi, dan hardening dasar.
11.2 Deployment Checklist
| Aspek | Komponen / Tindakan | Status Target |
|---|---|---|
| Instalasi | BIND9, RPZ binary, named.conf, zones | Selesai; named active |
| Sumber RPZ | Alsyundawy / Komdigi / GitHub | Dipilih & terunduh |
| WhiteList & SafeSearch | Zona passthru & SafeSearch | Terpasang |
| Auto Update | Cron 12 jam | Aktif |
| ACL / Firewall | allow-query, port 53 terbatas | Dikonfigurasi |
| Verifikasi | dig domain terblokir & domain aman | Policy bekerja |
11.3 Langkah Berikutnya
1. Arahkan Klien
Set DNS klien/router ke IP server BIND9. Uji dengan dig dan akses domain terblokir vs domain aman.
2. Kelola WhiteList
Tambahkan domain bisnis kritis ke whitelist agar tidak false-positive. Reload setelah perubahan.
3. Hardening Berkelanjutan
Pantau log, jaga cron update, batasi ACL, dan backup konfigurasi secara rutin.
11.4 Kesimpulan
Dengan mengikuti panduan ini — dari pemahaman TrustPositif & RPZ, persiapan sistem, one-line install, hingga best practices — operator memperoleh server DNS production-ready yang:
- Siap melayani filtering TrustPositif dalam hitungan menit
- Mendukung multi-sumber database (Alsyundawy cleaned, Komdigi, GitHub)
- Dilengkapi WhiteList dan Google SafeSearch
- Update otomatis setiap 12 jam
- Idempoten dan hardened untuk operasi yang aman