Header Ads

MEMBUAT DNS RESOLVER SENDIRI MENGGUNAKAN BIND9 PADA UBUNTU ATAU DEBIAN

Fungsi dari DNS Resolver cukup sederhana dan simpel, yaitu mengubah nama domain menjadi alamat-ip. Hal ini dimulai dengan request sistem pada operasi lokal, yang pada gilirannya meneruskannya ke router. DNS Resolver yang dikonfigurasi di sana, yang mungkin diantaranya adalah beberapa publik atau ISP yang Sampeyan gunakan. Banyak (mungkin semua), resolver mencatat permintaan ini dan disertai meta-data. Google, misalnya, sangat jelas tentang apa, siapa dan darimana yang login pada akun mereka.

Ini berarti bahwa Google tahu persis ketika Sampeyan mengunjungi situs web mereka dari IP mana, lokasi mana dan detail yang lainnya. Terlepas dari kenyataan saya tidak suka info ini dicatat, karena kami tahu banyak dari perusahaan-perusahaan ini melihat nilai data kita sebagai pengguna, pengunjung ataupun user, mengatur DNS Resolver Sampeyan sendiri mungkin juga memberikan peningkatan kecepatan internet yang bagus.

seperti halnya para pengguna service internet provider plat merah, Telkom Indihome, yang akhir-akhir ini cukup membikin jengkel dengan seenak udel-bodongnya sendiri memblokir layanan Cloudflare, sehingga banyak sekali website-website yang menggunakan layanan Cloudflare DNS mengalami kendala dalam mengakses website mereka. Tidak berhenti disitu saja, Telkom Indihome yang menerapkan dynamic IP untuk ketersediaan IP client juga memiliki DNS server yang cukup "bosok" yang berimbas pada semakin lemot dan lambat sekali koneksi internet walopun speed bandwidth sudah di upgrade.


Setting DNS Resolver Menggunakan Bind9
Sampeyan perlu membutuhkan:

Client machine (Semua OS diizinkan);
Server machine yang menjalankan Linux (Ubuntu atau Debian misalnya), dimana merupakan tempat Sampeyan mendapatkan akses root.

Ikuti saja langkah-langkah di bawah ini.

1. Persiapan on server

Pertama-tama, pastikan untuk membuat cadangan file / folder berikut (jika ada):
/etc/resolv.conf
/etc/dhcp/dhclient.conf
/etc/bind

Juga, pastikan paket yang diperlukan sudah diinstal:
apt install bind9 bind9utils

2. Setting up bind9 on server

Untuk menghindari disalahgunakan untuk gateway melakukan serangan DNS aplification (DDoS), pastikan dahulu resolver Sampeyan tidak dalam kondisi terbuka.
Harap perhatikan bahwa DNS Resolver yang terbuka dapat digunakan sebagai gateway serangan-serangan DDoS (Distributed Denial of Service). Karena itu, Sampeyan harus menutup resolver Sampeyan dengan cara:

Dalam contoh konfigurasi di bawah ini, ganti any; -keyword dengan daftar ip Sampeyan, seperti: 1.2.3.4; 2.3.4.5; untuk definisi yang dimulai dengan allow-, atau;
Tambahkan firewall rules untuk mengizinkan daftar IP Sampeyan.

Untuk mengatur konfigurasi, kita akan mengubah file /etc/bind/named.conf sebagai berikut:


// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

//include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

// Set up our personal DNS resolver
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;

// Either replace 'any' with a list of IPs you allow requests from, or add firewall rules
allow-recursion { any; };
allow-query-cache { any; };
allow-query { any; };

listen-on port 53 {
127.0.0.1;
1.2.3.4;
};
listen-on-v6 port 53 {
::1;
1:2:3:4;
}
};

logging {
channel default_file {
file "/var/log/bind/default.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel general_file {
file "/var/log/bind/general.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

channel queries_file {
file "/var/log/bind/queries.log" versions 3 size 5m;
severity dynamic;
print-time yes;
};

category default { default_file; };
category general { general_file; };
// Comment out the line below to enable logging all requests
// category queries { queries_file; };
};

3. Setting server sebagai primary DNS Resolver

Pada /etc/dhcp/dhclient.conf ubahlah menjadi

#prepend domain-name-servers 127.0.0.1;
prepend domain-name-servers 127.0.0.1;

Testing on server

Untuk menguji apakah resolver DNS Sampeyan berfungsi dengan baik, cukup request domain secara lokal:
dig domain.tld @127.0.0.1

4. Block access (menghindari open resolver) on server

Seperti yang dinyatakan di atas, Sampeyan harus menghindari resolver terbuka, karena resolver terbuka dapat digunakan dalam serangan DDoS (Distributed Denial of Service). Oleh karena itu ada dua metode untuk hanya mengizinkan satu IP atau lebih.

a. Menggunakan iptables

Jika Sampeyan menggunakan iptables-firewall, saya sangat merekomendasikan pengaturan izin di sana. Cukup tambahkan peran untuk memungkinkan akses ke satu atau lebih IP spesifik:

# Change the list of your IP's to your liking
iptables -A INPUT -p udp --dport 53 -s 1.2.3.4,4.3.2.1 -j ACCEPT
ip6tables -A INPUT -p udp --dport 53 -s 10:20:30:40,40:30:20:10 -j ACCEPT

b. Bind configuration

Jika Sampeyan tidak menggunakan iptables, Sampeyan dapat mengizinkan akses dengan mengganti kata kunci apa saja dengan daftar IP Sampeyan di named.conf. Lakukan ini untuk semua definisi yang dimulai dengan allow-: dan tambahkan ";" setelah setiap IP:

allow-query {
::1;
127.0.0.1;
1.2.3.4;
4.3.2.1;
};

5. Testing on client

Terakhir, untuk menguji apakah server DNS Resolver Sampeyan menerima koneksi dan mengembalikan dengan tepat, request-lah domain dari sisi client. Jangan lupa untuk mengubah 127.0.0.2 dengan IP server DNS Sampeyan:

dig domain.tld @127.0.0.2

Sekali lagi, semuanya akan berfungsi ketika output tidak memiliki error dan mengembalikan satu atau lebih banyak IP.

Menggunakan DNS Resolver

Sebagai pemula saya sarankan untuk mengubah pengaturan DNS router Sampeyan. Pada panduan manual router Sampeyan mungkin telah membahas hal ini. Ketika router Sampeyan membutuhkan DNS sekunder (secondary DNS), cukup gunakan IP resolver Sampeyan lagi atau jika itu tidak berhasil gunakan beberapa penyedia publik yang paling Sampeyan percayai (saya sarankan 1.1.1.1). Ini mencakup semua permintaan yang dibuat dari jaringan rumah Sampeyan.

Saya sarankan secara manual mengatur server DNS pada client berbasis wifi jika Sampeyan menggunakannya di lokasi lain selain jaringan rumah Sampeyan. Harap hindari menggunakan aplikasi apa pun yang mengklaim mengatur catatan DNS untuk Sampeyan, karena itu mungkin hanya layanan VPN yang akan mencatat aktivitas Sampeyan juga. Jadi, gunakan saja pengaturan bawaan jika memungkinkan.

Kesimpulan


Menggunakan DNS Sampeyan sendiri menambah sedikit privasi untuk aktivitas internet Sampeyan, karena permintaan DNS tidak lagi dapat dicatat oleh ISP Sampeyan atau layanan DNS publik yang Sampeyan gunakan. Namun mereka masih akan dicatat oleh situs web atau layanan yang Sampeyan kunjungi.

Kelemahan pada server DNS secara umum adalah bahwa permintaan dalam teks biasa, yang berarti mereka rentan terhadap 'man in the middle'-attacks (MITM). Secara teori, ISP Sampeyan masih bisa mengendus paket (dan bahkan memodifikasinya untuk merutekan permintaan melalui server mereka sendiri, tetapi jika itu masalahnya Sampeyan memiliki masalah kepercayaan yang jauh lebih besar) untuk mengetahui domain yang Sampeyan kunjungi. Selain itu, respons berisi domain yang Sampeyan kunjungi, sehingga hanya akan tidak dapat dibaca oleh orang lain di telepon jika responsnya menggunakan TLS (mis. Https).

Solusi lain seperti "DNS-over-TLS" atau "DNS-over-HTTPS" mungkin merupakan solusi untuk sepenuhnya mencegah serangan MITM, tetapi ini perlu diyakinkan dan dipelajari lebih lanjut.

Sementara itu, ingatlah bahwa privasi tidak benar-benar ada di web.