Membangun DNS Server menggunakan Bind dengan menambahkan fitur filtering domain Depkominfo.

Beberapa tahun belakan ini, pemerintah melalui Depkominfo cukup galak meminta operator untuk memberantas pornografi. Salah satunya adalah dengan memblok semua situs porno yang ada di dunia internet. Cara ini diakui kominfo cukup efektif, walaupun sebenarnya masih banyak situs - situs porno tersebut yang masih dapat diakses.

Saat ini operator telekomunikasi dan ISP mengambil referensi domain yang diblok dari situs yang diberikan oleh depkominfo sendiri, yaitu di Trust Positif Kominfo. Terakhir, jumlah site yang berhasil diblok , jika berdasarkan file yang diambil di trust positif tersebut adalah sekitar 756050 site, jadi belum ada 1 juta.

Untuk melakukan bloking terhadap domain tersebut, dibutuhkan aplikasi server. Yang bisa melakukan blok berdasarkan domain adalah DNS. Selama ini saya biasa menggunakan bind sebagai aplikasi dns server. Namun aplikasi tersebut belum mampu melakukan teknik blocking yang baik. Ide bloking menggunakan bind yang saya gunakan adalah melakukan manipulasi terhadap A record, dari domain yang di blok tersebut. jadi misalnya suatu situs porno, www.sex.com, yang kalau belum di manipulasi , alamatnya sebagai berikut :

> www.sex.com
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   www.sex.com
Address: 206.125.164.82
>

Setelah dimanipulasi , alamatnya menjadi :
> www.sex.com
Server:         180.131.144.144
Address:        180.131.144.144#53

Name:   www.sex.com
Address: 180.131.146.7
>
dari keterangan di atas (saya menggunakan DNS nawala untuk melakukan query). sex.com dimanipulasi A recordnya dan diganti ke alamat yang lain.

Mekanisme yang saya , saya coba di bind. Namun sayangnya, bind tidak dapat melakukannya karena jumlah zone yang sangat banyak. Hingga akhirnya saat itu, saya mengganti bind dengan powerdns. Powerdns memiliki kelebihan bisa menggunakan database untuk menyimpan record. Bind sebenarnya bisa, tapi butuh usaha lebih :) . Namun menurut saya, powerdns yang saya gunakan yaitu powerdns sebagai authoritative only, sehingga untuk bertanya selain domain yang di handle, dia butuh 1server lagi sebagai cache dns. Menurut saya hal ini aga boros, karena berati saya butuh minimal 2 server untuk membangunnya. Apalagi kalau DNS dilewati traffik besar, berati saya harus memisahkan database dalam server sendiri, lalu sebuah server untuk powerdns dan sebuah server lagi yang berfungsi sebagai forwarder dari si Powerdns.

Beberapa waktu lalu , saya coba buka situs nya bind, di ISC , dan ternyata bind sudah mencapai versi 9.9.4. bind terakhir yang saya download alah versi 9.8. ada yang menarik dari bind versi ini, yaitu ada fitur baru yang bernama RPZ (Response Policy Zone). mengutip dari wikipedia, RPZ adalah :

History

The RPZ mechanism was developed by Internet Systems Consortium lead by Paul Vixie as a component of BIND Domain Name Server (DNS). It was first available in BIND release 9.8.1 released 2010 CE.
The RPZ mechanism is published as an open and vendor-neutral standard for the interchange of DNS Firewall configuration information, allowing other DNS resolution software to implement it. [2][3]
RPZ was developed as a technology to combat the misuse of the DNS by groups and/or persons with malicious intent or other nefarious purposes. It follows on from the Mail Abuse Prevention System project which introduced reputation data as a mechanism for protecting against email spam. RPZ extends the use of reputation data into the Domain Name System.

Function

RPZ allows a DNS recursive resolver to choose specific actions to be performed for a number of collections of domain name data (zones).
For each zone, the DNS service may choose to perform full resolution (normal behaviour), or other actions, including declaring that the requested domain does not exist (technically, NXDOMAIN), or that you should visit a different domain (technically, CNAME), amongst other potential actions.
As zone information can be obtained from external sources (via a zone transfer) this allows a DNS service to obtain information from an external organisation about domain information and then choose to handle that information in a non-standard manner.

Purpose

RPZ is essentially a filtering mechanism, either preventing people from visiting internet domains, or redirecting them to other locations.
RPZ provides the opportunity for DNS recursive resolver operators to be able to obtain reputational data from external organisations about domains that may be harmful, and then use that information to avoid harm coming to the computers that use the recursive resolver by preventing those computers from visiting the potentially harmful domains.

Menarik kan ... :D karena hal itu, ada secercah harapan .. (ceile .. :D) menggunakan bind lagi. jadi intinya, saya cukup menambahkan 1 opsi respon policy di global option, lalu menambahkan 1 zone yang isinya blacklist domain, dan buat listnya, seharusnya sukses. OK , seperti ini langkah-langkah nya :

asusmsinya, kita sudah install bind yang terbaru, yaitu versi 9.9.4-p1 yang bisa di download di isc. alamatnya adalah : bind download

setelah selesai dilakukan kompilasi, danbind sudah jalan, berikut ini yang perlu kita tambahkan di bind :
  •  Tambahkan di global option :   
options {
         ...;
        response-policy {zone "rpz";};
};
 
  •  buat zone yang namanya rpz 
 zone "rpz" {
        type master;
        file "zone/rpz";
        allow-query {none;};
};
zone yang saya buat type nya master. jadi saya juga bisa buat slave nya nanti, kalau memang membutuhkan dns yang master-slave
  • selesai mebuat zone, nah sekarang kita buat file rpz nya. isi rpz nya kurang lebih sebagai berikut :
$TTL 60
@            IN    SOA  localhost. root.localhost.  (
                        4   ; serial
                        3H  ; refresh
                        1H  ; retry
                        1W  ; expiry
                        1H) ; minimum
              IN    NS    localhost.

sex.com.      CNAME contentfilter.
 
         nah seperti itu....

reload DNS nya, dan kita coba, ini hasilnya :
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> sex.com
Server:         localhost
Address:        127.0.0.1#53

Non-authoritative answer:
sex.com canonical name = contentfilter.
Name:   contentfilter
Address: 192.168.0.1
>
 nah kita sudah sukses mengaktifkan fitur RPZ di bind. pada RPZ , domain sex.com nya dialiaskan ke domain baru yang namanya contentfilter. nah di contentfilter ini kita bisa kembangkan , apakah mau cuman ditampilkan halaman html biasa yang isinya larangan membuka site porno,  atau yang lain, silakah dikembangkan.

OK, tadi baru buat 1 domain, nah sekarang bagaimana menambahkan seluruh list yang ada di trust positif.  Kalau saya mengambil 3 file, yaitu
  • di bagian kajian -> domains
  • di bagian pengaduan -> domains
  • di bagian porn -> domains
download file file tersebut, lalu taruh di server. biasanya namanya saya ubah, karena nama dan extensinya sama. misalnya menjadi
  • di bagian kajian -> domains -> file1
  • di bagian pengaduan -> domains -> file2
  • di bagian porn -> domains -> file3
karena sekarang sudah ada 3 file, sekarang saya ingin meletakkan ke tiga file tersebut di file rpz tadi. di sini saya menggunakan command cat dan awk. 
 
#cat file1 file2 file3 > file4 && awk '{print $1"  IN CNAME contentfilter"}' file4 >> rpz

arti dari command di atas adalah :
gabungkan file1, file2, dan file3, dan ditaruh di file4. kemudian tambahkan setelah baris 1 string IN CNAME contentfilter. ok done. sekarang semua domain list sudah saya tambahkan. namun, di sini ada 1 masalah, yaitu, kalau orang tersebut akan mengakses sex.com , alamatnya akan ter-redirect ke contentfilter, tapi kalau membuka alamat www.sex.com, maka orang tersebut masih dapat membuka alamat www.sex.com dan menikmati contentnnya. jadi harus kita tambahkan lagi wildacard, sehingga commandnya sebagai berikut :

#cat file1 file2 file3 > file4 && awk '{print "*."$1"  IN CNAME contentfilter"}' file4 >> rpz
 
ok done. sekarang kita reload bind nya dan kita tes 
 nslookup
> server localhost
Default server: localhost
Address: 127.0.0.1#53
> www.sex.com
Server:         localhost
Address:        127.0.0.1#53

Non-authoritative answer:
www.sex.com     canonical name = contentfilter.
Name:   contentfilter
Address: 192.168.0.1
>
 Sip, sudah selesai. semoga bermanfaat :)
 
 

 

Komentar

Anonim mengatakan…
Pak rito bisa dijelaskan pada direktori db.rpz nya saya kurang mengerti.

Postingan Populer