Mengimplementasikan FreeBSD dan DNS Unbound Sebagai DNS Over TLS Client dan Server
· 2 min read · Label UnixBSDDNS Over TLS digunakan untuk meningkatkan privasi dan keamanan pengguna. Dan juga untuk mencegah penyadapan dan manipulasi lalu lintas DNS oleh serangan MITM (man in the middle). Meskipun beberapa browser seperti Firefox, Yandex, Chrome mengaktifkan DNS over HTTPS secara default, DNS over HTTPS hanya mengamankan browser web, bukan koneksi internet Anda.
Seperti saat sistem Anda terhubung ke internet untuk pembaruan atau saat Anda menggunakan aplikasi web desktop lainnya seperti Discord dan torrent.
Pada artikel ini, kami akan mencoba membahas cara menginstal dan mengkonfigurasi server DNS Unbound sehingga mendukung DNS Over TLS yang dapat meningkatkan keamanan saat Anda menjelajah internet.
System Specifications:
OS: FreeBSD 13.2-STABLE
CPU: AMD Phenom II X4 965 3400 MHz
LAN IP: 192.168.9.3/24
Domain: unixexplore.com
Unbound IP: 192.168.9.3
Unbound Port: 53
TLS Unbound Port: 853
Unbound Version: 1.17.1
control-interface: 127.0.0.1
control-port: 8951
Domain Name System (DNS) yang digunakan komputer modern untuk mencari sumber daya di internet dirancang 35 tahun lalu tanpa mempertimbangkan privasi pengguna. Sistem ini rentan terhadap risiko keamanan dan serangan seperti DNS Hijacking. Hal ini juga memungkinkan ISP untuk menyadap kueri.
Untungnya, DNS over TLS dan DNSSEC tersedia. DNS over TLS dan DNSSEC memungkinkan terciptanya terowongan end-to-end yang aman dan terenkripsi dari komputer ke server DNS yang dikonfigurasi. Di FreeBSD, langkah-langkah untuk menerapkan teknologi ini mudah dan semua alat yang diperlukan sudah tersedia.
Untuk menginstal DNS Unbound via TLS di FreeBSD, Anda dapat menggunakan port dan pkg. Secara umum, sistem pkg lebih sering digunakan, selain ringkas dan juga cepat dalam proses instalasi.
Untuk memulai, ketik. Tunggu hingga semua proses instalasi selesai.
root@router2:~ # pkg install unbound openssl ca_root_nss bind-tools libevent
Sebelum mulai mengkonfigurasi unbound.conf, unbound memerlukan file root.hints yang mencantumkan Server DNS primer. Unbound menyertakan daftar Server DNS root dalam kodenya, tetapi ini memastikan salinan terkini pada setiap server. Praktik yang baik adalah memperbarui file ini setiap enam bulan. Unduh file root.hints dari internic.
root@router2:~ # wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /usr/local/etc/unbound/root.hints
Selain itu, Unbound memerlukan file auto-trust-anchor. File ini berisi kunci agar DNSSEC dapat divalidasi. Untuk membuat root.key, jalankan perintah berikut.
root@router2:~ # cd /usr/local/etc/unbound
root@router2:~ # unbound-anchor -a "/usr/local/etc/unbound/root.key"
Buat file rc.conf, sehingga Unbound dapat berjalan secara otomatis. Ketik perintah berikut.
root@router2:~ # ee /etc/rc.conf
Then enter the script
unbound_enable="YES"
unbound_config="/usr/local/etc/unbound/unbound.conf"
unbound_pidfile="/usr/local/etc/unbound/unbound.pid"
unbound_anchorflags="-a /usr/local/etc/unbound/root.hint"
Jangan lupa untuk memasukkan skrip berikut dalam file resolv.conf.
root@router2:~ # ee /etc/resolv.conf
Kemudian masukkan script
domain unixexplore.com
nameserver 192.168.9.3
nameserver 127.0.0.1
Langkah berikutnya adalah membuat kunci yang diperlukan agar Unbound dapat dikontrol oleh unbound-control.
root@router2:~ # cd /usr/local/etc/unbound
root@router2:~ # unbound-control-setup
Buat berkas log dan izin yang Tidak Terikat.
root@router2:~ # cd /usr/local/etc/unbound
root@router2:~ # mkdir log
Setelah itu Anda memberikan hak kepemilikan pada direktori yang tidak terikat.
root@router2:~ # chown -R unbound:unbound /usr/local/etc/unbound
root@router2:~ # chown -R unbound:unbound /usr/local/etc/unbound/
root@router2:~ # chown -R unbound:unbound /usr/local/etc/unbound/*
Unbound Sebagai Caching DNS Resolver
Secara default, layanan DNS unbound menyelesaikan dan menyimpan cache pencarian yang berhasil dan gagal. Layanan tersebut kemudian menjawab permintaan ke rekaman yang sama dari cache-nya.Sekarang kita masuk ke inti pembahasan, yaitu mengedit file unbound.conf. File unbound.conf di bawah ini adalah file unbound versi 1.17.1 asli, Anda hanya perlu menyesuaikannya dengan spesifikasi sistem atau komputer Anda.
File konfigurasi Unbound default terletak di "/usr/local/etc/unbound/unbound.conf". Buka file ini dengan editor teks pilihan Anda. Dalam panduan ini, kita akan menggunakan "ee" sebagai editor teks. Untuk mengedit file unbound.conf, ketik.
root@router2:~ # ee /usr/local/etc/unbound/unbound.conf
Contoh Skrip Lengkap dari file /usr/local/etc/unbound/unbound.conf, Anda dapat mengklik tautan tersebut.
Setelah Anda selesai mengedit file /usr/local/etc/unbound/unbound.conf, langkah selanjutnya adalah menjalankan unbound dengan perintah "service".
root@router2:~ # service unbound restart
Gambar di atas menunjukkan bahwa server yang tidak terikat sedang BERJALAN.
Sekarang kita melakukan pengujian.
Test Unbound dengan perintah dig
root@router2:~ # dig google.com
Metode di atas adalah mengonfigurasi unbound sebagai server DNS yang melakukan caching DNS resolver. Sekarang kita lanjutkan pembahasan tentang konfigurasi unbound DNS Over TLS.
Unbound Sebagai Client DNS Over-TLS
Cara lain yang lebih modern untuk melindungi lalu lintas DNS adalah protokol DNS-over-TLS yang dijelaskan dalam standar RFC7858, yang merupakan enkapsulasi data dalam TLS standar. Kami sarankan menggunakan port 853 untuk akses.Sama seperti DNSCrypt, diasumsikan bahwa klien DNS, yang biasanya merupakan DNS caching lokal yang sama, mengakses server jarak jauh yang mendukung DNS-over-TLS.
Unbound yang disebutkan di atas memiliki dukungan bawaan untuk protokol ini, jadi tidak diperlukan lapisan perangkat lunak tambahan untuk menggunakannya, seperti halnya dengan DNSCrypt.
Untuk menjadikan unbound sebagai klien untuk DNS Over TLS, dari skrip unbound.conf di atas, yang harus kita ubah adalah skrip terakhir, yaitu:
forward-zone:
name: "."
forward-addr: 1.1.1.1
forward-addr: 1.0.0.1
forward-addr: 8.8.8.8
We change it to,
forward-zone:
name: "."
forward-ssl-upstream: yes
forward-addr: 1.1.1.1@853
forward-addr: 1.0.0.1@853
forward-addr: 8.8.8.8@853
Unbound Sebagai Server DNS Over-TLS
Untuk membuat server yang tidak terikat untuk DNS Over TLS, dari skrip yang tidak terikat sebagai klien untuk DNS Over TLS, kami menambahkan skrip SSL.Sebelum kita melangkah lebih jauh, mari kita buat sertifikat SSL dengan OpensSL terlebih dahulu.
root@router2:~ # cd /usr/local/etc/unbound
root@router2:~ # openssl genrsa -des3 -out myCA.key 2048
root@router2:~ # openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
root@router2:~ # openssl req -new -newkey rsa:2048 -nodes -keyout mydomain.key -out mydomain.csr
root@router2:~ # openssl x509 -req -in mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mydomain.pem -days 1825 -sha256
Setelah kita mendapatkan sertifikat SSL, kita lanjutkan dengan mengedit file unbound.conf. Untuk mengeditnya, kita gunakan file unbound.conf dari pembahasan (Unbound sebagai klien DNS Over TLS).
Dari file unbound.conf, kita tambahkan skrip antarmuka, sehingga menjadi.
interface: 192.168.9.3@53
interface: 192.168.9.3@853
Pada skrip tls-service-key, tls-cert-bundle dan tls-port HAPUS tanda "#", sehingga menjadi
tls-service-key: "/usr/local/etc/unbound/mydomain.key"
tls-service-pem: "/usr/local/etc/unbound/mydomain.pem"
tls-port: 853
tls-cert-bundle: "/etc/ssl/cert.pem"
Setelah itu jalankan kembali server Unbound.
Restart Unbound
root@router2:~ # service unbound restart
Sekarang kita melakukan tes pada port 53 dan 853Test Unbound
root@router2:~ # dig -p 53 google.com @192.168.9.3
; <<>> DiG 9.18.16 <<>> -p 53 google.com @192.168.9.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24919
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1432
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 240 IN A 172.253.118.138
google.com. 240 IN A 172.253.118.113
google.com. 240 IN A 172.253.118.100
google.com. 240 IN A 172.253.118.101
google.com. 240 IN A 172.253.118.139
google.com. 240 IN A 172.253.118.102
;; Query time: 0 msec
;; SERVER: 192.168.9.3#53(192.168.9.3) (UDP)
;; WHEN: Thu Aug 03 22:30:38 WIB 2023
;; MSG SIZE rcvd: 135
Test Unbound
root@router2:~ # dig -p 853 google.com @192.168.9.3
; <<>> DiG 9.18.16 <<>> -p 853 google.com @192.168.9.3
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65330
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1432
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 73 IN A 172.253.118.138
google.com. 73 IN A 172.253.118.113
google.com. 73 IN A 172.253.118.100
google.com. 73 IN A 172.253.118.101
google.com. 73 IN A 172.253.118.139
google.com. 73 IN A 172.253.118.102
;; Query time: 0 msec
;; SERVER: 192.168.9.3#853(192.168.9.3) (UDP)
;; WHEN: Thu Aug 03 22:33:25 WIB 2023
;; MSG SIZE rcvd: 135
IP lokal 192.168.9.3 yang berjalan pada port 853 telah menjawab Google DNS, artinya server yang tidak terikat berjalan dengan baik.Kami periksa lagi apakah port 53 dan 853 terbuka.
Test Unbound
root@router2:~ # sockstat -46 | grep unbound
unbound unbound 1421 4 udp4 192.168.9.3:53 *:*
unbound unbound 1421 5 tcp4 192.168.9.3:53 *:*
unbound unbound 1421 6 udp4 192.168.9.3:853 *:*
unbound unbound 1421 7 tcp4 192.168.9.3:853 *:*
unbound unbound 1421 8 tcp4 127.0.0.1:8951 *:*
Dalam kasus ini, Unbound telah meneruskan ke port 853 yang telah dienkripsi.
Dalam tutorial ini, Unbound secara default melayani permintaan DNS standar pada antarmuka lokal 192.168.9.3 port 53, tetapi kami juga telah menetapkan Unbound sebagai server Domain Over TLS, sehingga Unbound menyediakan permintaan eksternal secara eksklusif melalui protokol DNS-over-TLS pada port 853.
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar