Membuat DNS Filtering dengan BIND RPZ di Ubuntu
Pemerintah saat ini sedang berusaha melakukan pemblokiran konten pornografi dengan gencarnya. Para penyedia layanan internet (ISP dan NAP) diwajibkan untuk melakukan pemblokiran terhadap situs-situs yang mengandung konten pornografi. Pemerintah melakukan sidak ke ISP / NAP untuk mengecek apakah sudah dilakukan pemblokiran konten pornografi atau belum. Jika ternyata masih bisa mengakses situs-situs yang mengandung konten pornografi, maka mereka akan ditegur dengan surat peringatan resmi.
Untuk melakukan pemblokiran konten pornografi, cara yang paling mudah adalah dengan menggunakan DNS filtering yang cara kerjanya me-redirect request DNS dari pengguna ke halaman web tertentu yang berisi peringatan bahwa situs yang berusaha diakses telah diblokir karena mengandung konten pornografi.
Sebenarnya saat ini sudah tersedia publik DNS filtering di Indonesia yang dibuat oleh Yayasan Nawala Nusantara biasa disebut dengan DNS Nawala. Namun terkadang masih bisa lolos dari filtering mungkin overload dikarenakan terlalu banyak yang menggunakannya.
Oleh karena itu Pemerintah dalam hal ini Kementrian Kominfo mewajibkan ISP / NAP untuk membangun DNS filtering sendiri. Tulisan singkat ini untuk memberikan panduan bagaimana cara membuat DNS filtering dengan RPZ menggunakan software BIND. RPZ (Response Policy Zones) merupakan salah satu fitur yang terdapat pada BIND9.8+ yang memungkinkan resolver (DNS server) untuk melakukan penerjemahan terhadap request yang sudah didefinisikan pada zone file. Situs-situs yang akan diblokir harus didefinisikan terlebih dahulu di zone file untuk diarahkan (di-redirect) ke server tertentu yang sudah kita siapkan.
Dalam panduan ini saya akan menggunakan Ubuntu 14.04 dengan BIND versi 9.9.5. Konfigurasi pada distro Linux yang lain seperti CentOS, RedHat, Fedora, atau Slackware mestinya identik hanya penamaan dan penempatan file konfigurasinya saja yang mungkin berbeda. Mari kita langsung saja ke langkah-langkahnya:
1. Install BIND 9
sudo apt-get install bind9
2. Edit file /etc/bind/named.conf.options menjadi seperti berikut:
options { directory "/var/cache/bind"; dnssec-validation auto; auth-nxdomain no; listen-on-v6 { any; }; check-names master ignore; check-names slave ignore; allow-query { 127.0.0.1; 10.11.12.0/24; }; response-policy { zone "rpz.zone"; }; }; zone "rpz.zone" { type master; file "/etc/bind/db.rpz.zone"; allow-query { any; }; };
3. Buat file baru dengan nama ‘db.rpz.zone’ di folder /etc/bind/
Inilah file zone yang nantinya akan berisi domain-domain yang akan di-redirect ke server kita sendiri yang sudah disiapkan. Isi file ‘db.rpz.zone’ adalah sebagai berikut:
$TTL 1H @ IN SOA LOCALHOST. hostmaster.local. (1 1h 15m 30d 2h) @ IN NS LOCALHOST. @ IN A 127.0.0.1 @ IN AAAA ::1
4. Download database domain yang harus diblokir di website Kominfo (http://trustpositif.kominfo.go.id/files/)
Untuk men-download-nya, klik menu Shares > Database > blacklist > porn, kemudian klik ‘domains’ untuk mulai mengunduhnya. File berukuran sekitar 12.37 MB.
5. Setelah selesai mengunduh file ‘domains’ pada langkah no. 4 di atas, langkah berikutnya adalah membuat zone entry dengan format “namadomain IN A IP_ADDRESS” yang ditambahkan ke dalam file db.rpz.zone. Kalau kita buka file ‘domains’ tersebut hanya berisi daftar domain saja. Supaya bisa dibaca oleh BIND DNS, kita perlu mengubahnya dalam format “namadomain IN A IP_ADDRESS”. Kita akan menggunakan tool ‘awk’ untuk meng-generate-nya.
awk '{print $1" IN A 10.11.12.13"}' domains >> /etc/bind/db.rpz.zone awk '{print "*."$1" IN A 10.11.12.13"}' domains >> /etc/bind/db.rpz.zone
Script pertama akan mengambil semua baris dalam file ‘domains’ dan menambahkan “IN A 10.11.12.13” pada tiap baris dan kemudian memasukkan / menambahkannya ke dalam file ‘db.rpz.zone’.
Script kedua akan mengambil semua baris dalam file ‘domains’ dengan menambahkan “*.” (bintang dan titik) sebelum namadomain dan “IN A 10.11.12.13” setelah namadomain pada tiap baris dan kemudian memasukkan / menambahkannya ke dalam file ‘db.rpz.zone’.
contohnya adalah sbb:
17bb.info IN A 10.11.12.13 *.17bb.info IN A 10.11.12.13
Sebagaimana kita tahu, jika hanya ada entry baris pertama (17bb.info), maka sub-domain dari domain tersebut (misalnya http://www.17bb.info, web.17bb.info) tidak ikut terblokir. Maka dari itu kita perlu menambahkan entry baris kedua (*.17bb.info) supaya semua sub-domain ikut terblokir.
Kemudian restart service BIND9 nya.
service bind9 restart
6. Test query DNS
Waktunya untuk melakukan tes dari server DNS (localhost) dengan menggunakan ‘dig’
dig @127.0.0.1 redtube.com ; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> @127.0.0.1 redtube.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49180 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;redtube.com. IN A ;; ANSWER SECTION: redtube.com. 5 IN A 10.11.12.13 ;; AUTHORITY SECTION: rpz.zone. 3600 IN NS LOCALHOST. ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon May 11 02:47:21 WIB 2015 ;; MSG SIZE rcvd: 87
Dari hasil command dig di atas terlihat bahwa domain redtube.com mempunyai address 10.11.12.13 seperti yang sudah didefinisikan di zone file db.rpz.zone
7. Tes akses dengan menggunakan browser.
Setelah dipastikan DNS RPZ berjalan dengan benar, terakhir kita pastikan bahwa jika kita mengakses website nya, yang muncul adalah situs web yang sudah kita persiapkan yang berisi pemberitahuan bahwa website yang diakses telah diblokir karena mengandung konten pornografi seperti gambar di bawah ini sebagai contoh:
Semoga tulisan singkat ini membantu kita untuk mendukung program pemerintah tentant Internet Bersih dan Sehat.
Sumber = https://katalis.web.id/270/membuat-dns-filtering-dengan-bind-rpz