Keamanan DNS Server pada Linux Debian atau Ubuntu
Kalau kita perhatikan, Salah satunya keamanan yang digunakan saat transfer zona antara master dengan slave adalah dengan menggunakan alamat IP tetapi alamat IP sangat mudah sekali kalau dipalsukan. Tentu saja hal ini akan menambah kerawanan pada saat melakukan transfer zona yang dilewati oleh internet karena server DNS slave dapat menerima zona dari server palsu yang menirukan alamat IP dari server DNS master.
Cara mencegah hal ini, adalah dengan diciptakanlah TSIG (Transaction signature penanda transaksi) yang memberi akses komunikasi yang aman antar server dengan cara penanda transaksi. Dalam hal ini kerjanya sama seperti md5sum yang akan memperoses kesahan suatu data. Tetapi juga dalam hal TSIG, si penerima akan mengecek kesahan dan keutuhan paket yang dikinimkan oleh server lain dengan menggunakan kata kunci pribadi (private key) dari si pengirim.
TSIG bekerja dengan cara menandatangani setiap ada transakasi DNS diantara dua kedua belah server seperti master dengan slave. Penandatanganan/Pengesahan transaksi ini dilakukan dengan cara melakukan proses hashing terhadap isi transaksi tersebut, yang dalam hal ini adalah zona yang akan kita itransfer, dengan kunci dari server master. Pada server slave, transaksi DNS yang diterima akan diverifikasi dengan cara menggunakan kunci yang sama. Kalau transaksi DNS valid maka server DNS slave akan menerima transaksi tersebut.
Kunci yang digunakan pada semua server master dan slave untuk zona tertentu adalah sama. Untuk setiap zona, diperlukan satu kunci saja karena apabila suatu DNS server melayani beberapa zona otoritatif dari semua zona tersebut dengan menggunakan TSIG, maka untuk pada setiap zona di haruskan menggunakan kunci yang berbeda.
CATATAN TSIG akan mengandalkan sinkronisasi waktu antara server DNS master dan slave. TSIG akan menggunakan timestamp untuk mencegah replay attack. Jika diantara kedua server tersebut terdapat perbedaan selisih waktu yang cukupjauh, maka proses transfer akan gagal karena tandatangan yang dikirimkan menjadi tidak valid. Hal ni ditandai dengan pesan log
tsig verifiy failure (BADTIME)
Oleh Sebab itu sangat di perlukan untuk menggunakan NTP pada semua host yang akan melakukan koneksi TSIG.
Saatnya kita akan mengamankan transaksi antar server untuk domain admin.web.id. Kita akan membuat kunci yang akan digunakan dan dibagikan kepada semua server di server utama DNS yaitu ns.admin.web.id. Anda bisa menggunakan perintah dnssec-keygen untuk membuat kunci ini.
Perintah pada contoh gambar diatas akan membuat sebagai kunci pada host ns.admin.web.id dengan
menggunakan algoritma HMAC-MD5 dari panjang kunci dalam bit. Opsi -a mengijinkan kita untuk memilih algoritma yang digunakan. Opsi -b menentukan panjangnya kunci dalam bit dan opsi -n menetukan jenis kunci yang akan kita gunakan untuk membuat kunci.
Pada perintah gambar diatas kita akan membuat dua buah file yaitu Kns.admin.web.id.+157+19220.key dan Kns.admin.web.id.+157+19220.private.ns.admin.web.id adalah nama dari kunci tersebut. +157 mengindikasikan bahwa algoritma yang kita gunakan yaitu HMAC-MD5, dan +16728 adalah nomor
kunci acak yang kita gunakan untuk membedakan kunci lainnya yang dibuat di host ns.admin.web.id. pada kedua file tersebut harus dan perlu dimiliki oleh root dengan mode 600.
File Kns.admin.web.id.+157+19220 private berisi tentang kunci yang kita perlukan untuk TSIG. Berikut ini adalah isi file tersebut:
Bagian yang hanya kita butuhkan untuk TSIG adalah bagian setelah Key:. Copy semua baris setelah Key: . Lalu pada semua server yang akan melakukan koneksi TSIG mislanya server DNS master dan semua server DNS slave, tambahkan baris berikut pada file konfigurasi utama BIND yaitu named.conf.local hingga akhirnya seperti dibawah ini.
Parameter server akan mendefinisikan alamat IP server, Dengan ini, server DNS master mendefinisikan dua buah server yaitu 202.46.1.2 dan 10.10.1.7 yang merupakan server DNS slave. Kedua server tersebut akan menggunakan kunci ns.admin.web.id yang sudah kita buat pada sebelumnya dan di definisikan pada parameter key. Lalu kita membuat konfigurasi yang sama pada kedua server slave. Berikut ini adalah konfigurasi pada server slave 202.46.1.2
Coba kita perhatikan, alamat yang digunakan pada parameter server di host 202.46.1.2 dan 10.10.1.7 berbeda, padahal kedua slave tersebut tertuju kepada server DNS master yang sama. Hal ini dikarenakan konfigurasi diatas menggunakan split DNS. Host 202.46.1.2 dengan menggunakan alamat IP publik dari
server ns.admin.web.id sedangkan host 10.10.1.7 menggunakan alamat internal dari server ns.admin.web.id.
Sekian, Semoga Bermanfaat