Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu

Pada artikel sebelumnya saya telah menjelaskan bagaimana menjadikan DNS server Mnejadi Server Sslave atau Master yang fungsinya adalah sebagai server cadangan jika terjadi kegagalan koneksi oleh salah satu server master. Ini sangat perlu sekali karena membangun suatu server apalagi yang terhubung oleh jaringan Publik atau Online. Baca Disini jika belaum mengerti atau review ulang. setelah semua kita bangun DNS server tersebut sekarang saatnya untuk keamanan Server DNS Server. Hal ini sangat di perlukan bukan hanya pada Server DNS saja malahan yang paling penting pada Database Server. Ok Langsung saja kita mulai pembahasan ini.

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.

Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu

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:

Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu

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.

Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu
Pada konfigurasi contoh gambar diatas akan membuat satu buah kunci dengan nama ns.admin.web.id.
Nama kunci ini yang akan kita gunakan pada direktif server.
Lalu pada masing-masing server ini akan memberitahukan BIND untuk menggunakan TSIG. Hal ini dilakukan dengan cara menggunakan parameter keys di dalam parameter server. Dalam hal ini memberitahu BIND untuk menggunakan key dengan nama, Contohnya ns.admin.web.id, untuk melakukan koneksi
ke server tersebut. Kedua parameter tersebut di tambahkan di semua server DNS yang terkait. Berikut ini adalah konfigurasi pada server DNS master

Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu

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

Cara membangun keamanan DNS Server pada Linux Debian atau Ubuntu

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

Leave a Comment