DJBDNS (alternatif DNS server pengganti BIND)
Kebanyakan orang jika mendengar kata DNS Server di unix, biasanya mereka berpikir tentang BIND (Berkeley Internet Name Daemon), yaitu sebuah nameserver daemon yang dikembangkan oleh Berkeley. Hampir semua distribusi unix, secara defaultnyamenyertakan BIND sebagai program DNS server mereka, sehingga banyak orang mengidentifikasikan atau berpikir "DNS Server adalah BIND", namun pada kenyataannya BIND bukanlah satu-satunya DNS Server unix yang ada. Ada banyak program lain di unix yang dapat berfungsi sebagaiDNS Server, diantaranya yaitu dents dan djbdns. Pada artikel ini penulis hanya akan membahas tentang djbdns saja, karena djbdns mempunyai "aliran" yang agak berbeda dengan BIND dalam melakukan setting up dnscache maupun suatu domain.
Apa itu DJBDNS?
djbdns adalah koleksi dari beberapa peralatan DNS yang cukup canggih, yang terdiri atas:- dnscache, yaitu program yang berfungsi melakukan
caching informasi domain dari DNS Server, dnscache menerima DNS query dari localhostmaupun klien-kliennya (hanya IP address yang diijinkan), dan dnscache akan mencari dan mengumpulkan informasi dari remote DNS server serta memberikan jawaban dari query tersebut.
- tinydns, yaitu DNS Server yang mempunyai autorisasi untuk satu domain tertentu, memberikaninformasi tentang domain yang ditanganinya ke klien langsung jika autoritatif atau ke DNS Server lain jika tidak autoritatif, tinydns bekerja berdasarkan paket UDP saja.
- pickdns, yaitu DNS Server yang berfungsi sebagai "load balancing", biasanya difungsikan untuk membagi beban/load dari suatu server.
- walldns, berfungsi sebagai reverse DNS, menyediakan informasi reverse dan meneruskan informasinya, sambil menyembunyikan informasi dari localhost.
- rbldns, yaitu berfungsi untuk mempublikasikan daftar alamat-alamat IP
- Library dns, yang berfungsi untuk menangani paket-paket DNS yang keluar dan masuk. Ini dapat digunakan oleh klien seperti web browser dsb. Untuk melihat alamat host, nama host, record MX, dsb.
- dnsfilter, sebagai penterjemah IP-address-to-host-name secara paralel
- dnsip, dnsipq, dnsname, dnstxt, dan dnsmx, yaitu berfungsi sebagai utilitas sederhana untuk berinteraksi dan memeriksa DNS.
- dnsq dan dnstrace, berfungsi sebagai alat untuk melakukan debugging.
Mengapa Menggunakan DJBDNS?
Tahukah anda bahwa sebenarnya BIND sangatlah rentan terhadap serangan-serangan yang dapat membahayakan keamanan server anda? Sering kali seorang cracker melakukan penyusupan atau DoS (Denial of Service) terhadap server dengan memanfaatkan celah keamanan yang terdapat BIND, banyak sekali versi dari BIND yang masih rentanterhadap serangan seperti ini. Jika anda sudah terlanjur
menggunakan BIND dan masih bersikeras untuk tetap menggunakan BIND, penulis menyarankan untuk menggunakan BIND dengan patch level terbaru yang bisa anda temukan melalui website dari BIND yaitu di http://www.isc.org/bind.html, serta selalu mengikuti perkembangan informasi tentang security BIND, serta gunakan option -u dan -g untuk menjalankan BIND sebagai non-root UID/GID, karena dengan cara ini sedikit banyak akan mempersulit para cracker untuk bisa melakukan "kudeta" terhadap root dengan cara memanfaatkan user yang menjalankan BIND.
Apa Saja Feature yang ditawarkan DJBDNS?
djbdns terdiri dari beberapa program yang dijalankan oleh non-root UID/GID, sehingga kendali penuh dari system tidak bisa disentuh melalui djbdns.- dnscache akan mengabaikan semua DNS queries dari alamat yang tidak termasuk dalam daftar alamat IP yang diijinkan untuk mengakses dnscache, jadi dengan cara ini tidak sembarang orang bisa"mencuri" sumber daya dari sistem anda, seperti yang terjadi pada kebanyakan nameserver di internet. Pada tinydns sebagai autoritatif DNS Server, tinydns akan mengabaikan query yang bukan autorisasinya.
- dnscache dan dns library menggunakan ID untuk setiap query baru dan port UDP baru untuk setiap query dan akan mengabaikan query dari alamat IP yang tidak relevan.
- dnscache menggunakan generator kriptografi (ilmu tentang penyandian data) untuk memilih nomor port dan ID yang sulit untuk ditebak.
- dnscache kebal terhadap serangan yang mencoba mengacaukan cache (cache-poisoning).
- tinydns, pickdns & walldns
tidak men-"cache" informasi, dan tidak bisa ditipu dengan melakukan rekursi informasi / domain.
Feature diatas memang dirancang khusus untuk memberikan DNS Server yang benar-benar reliable dan aman. Sekarang ada tantangan menarik untuk anda semua:djbdns akan memberikan hadiah kepada anda USD500, bagi siapa saja yang pertama kali menemukan dan mempublikasikan lubang keamanan di djbdns !!!
djbdns hanya berjalan di atas sistem operasi unix, anda bisa menggunakan beberapa varian dari unix seperti Linux, FreeBSD, OpenBSD, dsb. Untuk menjalankan djbdns, anda memebutuhkan software tambahan lagi bernama daemontool, yang dapat anda lihat dan downloaddi website Pelik ini di menu download.
Memasang Daemontools
Seperti biasa, lakukan gunzip dan untar terhadap paket daemontools yang anda download:
# tar -xvzf daemontools-0.70.tar.gz
lalu masuk ke direktori daemontools-0.70, dan lakukan kompilasi (defaultnya akan diinstall di /usr/local, edit file conf-home jika anda menginginkan diintall di lain direktori).
# make
kemudian lakukan instalasi.
# make setup check
buatlah direktori untuk meletakkan program yang akan dijalankan oleh daemontools, misalnya bernama service di root direktori:
# mkdir /service
Memasang DJBDNS
Seperti biasa lakukan un-tar dan un-gzipped terhadap file djbdns yang anda download terlebih dahulu:
# tar -xvzf djbdns-1.02.tar.gz
Lalu lakukan kompilasi /9default akan diinstall di /usr/local, edit conf-home jika anda menginginkan diinstall di lain direktori.
# make
Dan install dengan perintah:
# make setup check
Mengkonfigurasi DNSCACHE
Dnscache adalah DNS cache server lokal (jaringan lokal), dnscache akan menerima dan menjawab DNS query dari klien lokal, seperti web browser, mail user agent, dsb. dan akan menyimpan informasi tersebut untuk menjawab DNS query berikutnya
sehingga dnscache akan memberikan respon cepat apabila terdapat DNS queries yang sudah pernah disimpan.
Mengkonfigurasi dnscache di djbdns sangatlah mudah, semua sudah diatur oleh program yang bernama dnscache-conf, syntax umum dari dnscache-confadalah:
dnscache-conf acct logacct /direktori [alamat-IP]
dimana acct adalah account yang menjalankan dnscache, logacct adalah account yang digunakan untuk mencatat log, jadi pertama buatlah user yang akan dijadikan sebagai acct dan logacct.
Contoh:
Buatlah account bernama "dnscache" dan "dnslog"
# useradd dnscache -s /bin/false
# useradd dnslog -s /bin/false
Tentukan anda akan menjalankan dnscache dimana, apakah hanya dnscache lokal atau dnscache external, jika anda mempunyai klien-klien yang nantinya akan anda ijinkan untuk melakukan DNs queries ke server anda, silahkan anda pasang dnscache ini pada IP jaringan anda. Sedangkan jika tujuannya hanya untuk menjawab DNS queries dari
komputer lokal anda sendiri (localhost), anda cukup memasangnya pada alamat 127.0.0.1, lalu tentukan daftar IP/Range yang diijinkan untuk menggunakan dnscache anda, kemudian buat simbolik-link dengan direktori dari service daemontools anda. Perhatikan contoh berikut.
Misalnya server anda menggunakan ethernet dengan IP 192.168.1.1, dan akan mengkonfigurasikan dnscache sebagai external untuk jaringan intranet anda (misalnya dengan IP jaringan 192.168.1.0/24) maka anda harus mengkonfigurasikan, sbb:
# dnscache-conf dnscache dnslog /etc/dnscachex 192.168.1.1
# touch /etc/dnscachex/root/ip/192.168.1
# ln -s /etc/dnscachex /service
Jika anda hanya ingin membuat cache lokal untuk localhost saja, anda cukup memasangnya di alamat 127.0.0.1, contoh:
# dnscache-conf dnscache dnslog /etc/dnscache 127.0.0.1
# ln -s /etc/dnscachex /service
Sebelum anda menjalankan dnscache anda, pastikan apakah anda mempunyai DNS Server lokal lain untuk
intranet anda, jika ya,
anda harus memberitahu nama domain dan alamat IP dari DNS server tersebut. Sebagai contoh anda mempunyai domain lokal intranet dengan nama lokalku.net dengan IP dari nameserver 192.168.1.2, maka anda harus memberi tahu dnscache, bahwa ada nameserver lokal tsb. dengan cara:
# echo "192.168.1.2" > /etc/dnscachex/root/servers/lokalku.net
# echo "192.168.1.2" > /etc/dnscachex/root/servers/1.168.192.in-addr.arpa
Setelah semua oke, kemudian jalankan daemontool:
# csh -cf 'svscan /service &'
Setelah anda bisa menjalankan dnscache, mungkin anda akan bertanya, bagaimana membuat DNS Server untuk menangani sebuah domain dengan menggunakan djbdns? Jawabannya adalah: anda dapat menggunakan tinydns yang sudah merupakan satu paket yang tergabung dlama djbdns.
Sekarang marilah kita menginjak pada tahap berikutnya yaitu mengkonfigurasikan tinydns, mengkonfigurasikan tinydns sebenarnya hampir sama dengan mengkonfigurasikan dnscache, hanya bedanya
karena tinydns bertugas untuk menjawab DNS queries dari sebuah domain, maka anda akan berhubungan dengan record NS, A, MX, PTR, dsb. dari domain anda, namun konfigurasi tinydns tidak serumit konfigurasi BIND.
Mengkonfigurasi TINYDNS
Tinydns mempunyai program konfigurasi yang bernama tinydns-conf, dengan syntax umum, sbb:
# tinydns-conf [nama-account] [log-account] /direktori [alamat-IP]
jadi sebelumnya anda harus menentukan beberapa hal, yaitu:- Tinydns beserta lognya akan dijalankan dengan menggunakan account apa
- Direktori tempat konfigurasi tinydns
- Alamat IP dari nameserver
Sebagai contoh anda akan menjalankan tinydns dengan account bernama "tinydns" dan account untuk log bernama "tinylog", direktori konfigurasi ada di /etc/tinydns dan alamat IP dari DNS servernya ada di 192.168.1.2, maka anda harus
"tinydns" dan account untuk log bernama "tinylog", direktori konfigurasi ada di /etc/tinydns dan alamat IP dari DNS servernya ada di 192.168.1.2, maka anda harus mengikuti langkah-langkah berikut, tambahkan user "tinydns" dan "tinylog" terlebih dahulu:
# useradd tinydns -s /bin/false
# useradd tinylog -s /bin/false
jalankan tinydns-conf sesuai dengan spesifikasi diatas:
# tinydns-conf tinydns tinylog /etc/tinydns 192.168.1.2
Buat simbolik-link dengan direktori service dari daemontools:
# ln -s /etc/tinydns /service
Sampai tahap ini tinydns sudah siap untuk dikonfigurasikan untuk sebuah nameserver dari sebuah domain. Sebagai contoh anda akan membuat nameserver dari domain yang bernama lokalku.net, anda masuk ke dalam direktori /etc/tinydns/root terlebih dahulu:
# cd /etc/tinydns/root
kemudian anda berikan perintah, sbb:
# ./add-ns lokalku.net 192.168.1.2
# ./add-ns 1.168.192.in-addr.arpa 192.168.1.2
# ./add-host ns.lokalku.net 192.168.1.2
# make
Sampai tahap ini, kita mempunyai 1 host yang bernama ns.lokalku.net dengan ns yang terdapat pada a.ns.lokalku.netdengan alamat IP 192.168.1.2. Mengapa namanya menjadi a.ns.lokalku.net dan bukan ns.lokalku.net? bagaimana menghilangkan huruf depan 'a'? Untuk membuat ns kita hanya bernama ns.lokalku.net saja, silahkan anda edit file datanya secara manual:
# vi /service/tinydns/root/data
di situ terdapat baris, sbb:
.lokalku.net:192.168.1.2:a:259200
.1.168.192.in-addr.arpa:192.168.1.2:a:259200
=ns.lokalku.net:192.168.1.2:86400
Silahkan anda hilangkan huruf 'a', pada baris pertama dan kedua, sehingga menjadi:
.lokalku.net:192.168.1.2:259200
.1.168.192.in-addr.arpa:192.168.1.2:259200
=ns.lokalku.net:192.168.1.2:86400
setelah anda simpan, silahkan anda "make" ulang:
# make
Anda bisa juga menyerahkan otoritas dari suatu domain ke server lain, yaitu dengan memberikan perintah:
# ./add-childns [namadomain] [alamat-IP]
# make
Untuk menambahkan host baru anda bisa menggunakan perintah add-host, contoh: anda ingin menambahkan host bernama baru.lokalku.net dengan alamat-IP 192.168.1.100:
# ./add-host baru.lokalku.net 192.168.1.100
# make
Untuk menambahkan host alias, anda bisa memberikan perintah "./add-alias" contoh anda ingin membuat domain bernama mail.lokalku.net dan www.lokalku.net dengan alamat IP 192.168.1.2 (ns.lokalku.net):
# ./add-alias www.lokalku.net 192.168.1.2
# ./add-alias mail.lokalku.net 192.168.1.2
# make
Untuk menambah MX (Mail eXchanger), misalnya dari lokalku.net adalah beralamat IP 192.168.1.2
# ./add-mx lokalku.net 192.168.1.2
# make
perintah diatas akan mengakibatkan domain @lokalku.net mempunyai mx dengan alamat IP 192.168.1.2 dengan default namanya adalah: a.mx.lokalku.net dan nomor preference = 0. Jika anda ingin mengganti mx anda menjadi mail.lokalku.net dengan nomor preferencenya ingin anda ganti menjadi 10, maka silahkan anda edit file "data" nya, dan temukan baris, sbb:
@lokalku.net:192.168.1.2:a::86400
edit menjadi
@lokalku.net:192.168.1.2:mail.lokalku.net.:10:86400
kemudian anda "make" ulang:
# make
Tentang PTR, anda tidak usah terlalu pusing memikirkannya, jika anda sudah membuat ns untuk suatu domain berikut x.xxx.xxx.in-addr.arpa nya, setiap anda melakukan penambahan host baru, otomatis alamat IP tersebut akan di PTR ke nama host yang anda masukkan.
Sumber :
Majalah bulanan InfoLinux
Website: www.infolinux.web.id

Copyright (a) 2001 Pelik
Design by globalnet