Pengantar
Dalam artikel panduan ini, kami akan memandu Anda melalui instalasi server DNS otoritatif BIND9 yang aman di CentOS 7
Apa itu BIND?
BIND adalah perangkat lunak open source yang mengimplementasikan protokol Domain Name System (DNS) untuk Internet. Ini adalah implementasi referensi dari protokol tersebut, tetapi juga merupakan perangkat lunak tingkat produksi, cocok untuk digunakan dalam aplikasi bervolume tinggi dan dengan keandalan tinggi.
– ISC (Konsorsium Sistem Internet)
Garis Besar Langkah Konfigurasi
- Persiapan Server Dasar.
- Pemasangan paket perangkat lunak BIND.
- Konfigurasi paket perangkat lunak BIND.
- Menambahkan zona uji (domain)
- Menguji server DNS Anda
Prasyarat
Sebelum Anda memulai artikel petunjuk ini, Anda harus memastikan bahwa Anda telah menyelesaikan prasyarat ini terlebih dahulu.
– Server CentOS 7 – Jika Anda tidak memiliki server yang tersedia, Anda dapat memutarnya melalui halaman layanan hosting VPS kami.
– Editor teks pilihan Anda terpasang – Kami akan menggunakan nano dalam tutorial ini.
.
1 – Persiapan Server Dasar
Pertama, pastikan Anda masuk sebagai akun pengguna root.
sudo su -
Selanjutnya, kita akan memastikan sistem operasi inti diperbarui sepenuhnya.
yum update -y
Sekarang setelah sistem Anda diperbarui sepenuhnya, kami akan memperbarui firewall (diaktifkan secara default ) untuk mengizinkan DNS (TCP Port 53 / UDP Port 53) mengakses server Anda.
firewall-cmd --permanent --zone public --add-port 53/tcp firewall-cmd --permanent --zone public --add-port 53/udp firewall-cmd --reload
2 – Pemasangan Paket Perangkat Lunak DNS BIND
Kami sekarang siap untuk menginstal paket perangkat lunak BIND di server Anda.
yum install -y bind bind-utils bind-chroot
- mengikat : Server DNS (Sistem Nama Domain) Berkeley Internet Name Domain (BIND)
- bind-utils : Utilitas untuk menanyakan server nama DNS
- bind-chroot : Lingkungan waktu proses chroot untuk server DNS ISC BIND
Sekarang setelah Anda menginstal paket perangkat lunak BIND yang diperlukan, kami siap untuk memulai layanan BIND dan mengaturnya untuk memulai secara otomatis saat server di-boot ulang.
systemctl start named systemctl enable named
.
3 – Konfigurasi Server DNS BIND
Saat memulai server DNS BIND, paket chroot secara otomatis memasang semua file konfigurasi di /var/named/chroot
direktori server Anda. Saat Anda menjalankan BIND (atau proses lainnya) di chroot jail, proses tersebut tidak dapat melihat bagian mana pun dari sistem file di luar jail.
Sebagai referensi, direktori dasar tempat Anda akan bekerja untuk konfigurasi BIND apa pun adalah /var/named/chroot
Pertama, mari kita ubah ke direktori itu untuk sisa langkah-langkah ini.
cd /var/named/chroot
Sekarang, mari buat beberapa direktori dan file pengaturan konfigurasi untuk server baru Anda dan atur kepemilikannya. Direktori ini akan digunakan untuk menyimpan file zona maju dan mundur untuk server DNS Anda.
mkdir var/named/fwd-zones mkdir var/named/rev-zones chown -R named:named var/named/fwd-zones chown -R named:named var/named/rev-zones touch etc/zones.conf chown root:named etc/zones.conf
Selanjutnya, kita akan mengedit etc/named.conf
berkas konfigurasi. Kami akan memandu Anda melalui seluruh penyiapan sehingga Anda memahami apa yang dilakukan setiap opsi untuk server Anda.
nano etc/named.conf
Saat instalasi awal, file konfigurasi default akan seperti di bawah ini (jika Anda ingin melompat ke etc/named.conf
final , Anda dapat menemukannya di bawah):
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
Pengaturan dan opsi konfigurasi yang tersedia di BIND sangat luas. Dalam artikel ini kami hanya akan membahas opsi untuk menyiapkan server Anda menjadi server DNS otoritatif dan mengamankan server Anda dari serangan amplifikasi DNS rekursif.
Untuk penjelasan yang lebih mendalam tentang semua opsi ini, kami merekomendasikan orang-orang di Zytrax.com.
Opsi Mendengarkan
Opsi konfigurasi pertama yang akan kita ubah adalah opsi mendengarkan untuk server Anda. Secara default, server diatur untuk mendengarkan hanya pada alamat loopback lokal (127.0.0.1). Kami akan mengubah ini untuk mendengarkan di semua antarmuka di server Anda. Ganti baris berikut di dalam options { }
klausa dari file konfigurasi.
listen-on port 53 { any; }; listen-on-v6 port 53 { any; };
ACL (Daftar Kontrol Akses)
Kita sekarang akan menambahkan beberapa aturan ACL (Access Control List) ke konfigurasi. ACL ini akan digunakan untuk memperluas pengaturan keamanan untuk opsi pencarian kueri serta opsi kueri rekursif. Aturan pertama – yang akan kami sebut “permintaan yang diizinkan” – akan digunakan untuk mengizinkan alamat sumber apa pun untuk menanyakan server DNS Anda. Aturan kedua–kami akan menyebutnya “rekursi yang diizinkan”–akan digunakan untuk membatasi pencarian rekursif hanya ke alamat localhost.
Tambahkan aturan kebijakan ACL di bawah tepat di atas options { }
klausa.
// ACL - Allow queries from ANY source address acl "allowed-queries" { any; }; // ACL - Allow recursion from LOCALHOST only. acl "allowed-recursion" { 127.0.0.1; ::1; }; options { ... };
Selanjutnya, kita akan mengubah nilai konfigurasi allow-query
variabel pernyataan untuk menggunakan ACL baru yang baru saja kita buat. allow-query
pernyataan mendefinisikan siapa (yaitu, jaringan sumber) yang diizinkan untuk menanyakan server DNS Anda. Ganti baris berikut di dalam options { }
klausa dari file konfigurasi.
allow-query { "allowed-queries"; };
Membatasi Rekursi
Sekarang kita perlu mengamankan izin pencarian rekursi di server Anda. Rekursi adalah teknik di mana server DNS menanyakan server DNS lain atas nama klien yang meminta untuk menyelesaikan nama sepenuhnya, dan kemudian mengirimkan jawaban kembali ke klien. Penyerang dapat menggunakan teknik ini untuk menyebabkan server DNS dengan rekursi terbuka yang diaktifkan tanpa disadari berpartisipasi dalam serangan DDoS (Distributed Denial of Service). Oleh karena itu, jika server DNS di jaringan Anda tidak dimaksudkan untuk menerima kueri rekursif, rekursi harus dinonaktifkan di server tersebut atau diamankan agar sumber tidak sah menggunakan teknik ini.
recursion yes; allow-recursion { "allowed-recursion"; };
Kita sekarang akan menambahkan pernyataan include ke file konfigurasi. Pernyataan ini akan digunakan untuk menyertakan data zona otoritatif (domain) yang akan direspons oleh server Anda. Tambahkan baris berikut di bawah penutup option { }
klausa, tepat setelah pernyataan include terakhir.
include "/etc/zones.conf";
Kami sekarang telah menyelesaikan perubahan konfigurasi di etc/named.conf
berkas konfigurasi. Sekarang Anda dapat menyimpan dan keluar dari perubahan Anda.
.
File bernama.conf baru
Untuk ditinjau, etc/named.conf
your Anda file konfigurasi sekarang akan terlihat seperti di bawah ini:
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // ACL - Allow queries from ANY source address acl "allowed-queries" { any; }; // ACL - Allow recursion from LOCALHOST only. acl "allowed-recursion" { 127.0.0.1; ::1; }; options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { "allowed-queries"; }; recursion yes; allow-recursion { "allowed-recursion"; }; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; include "/etc/zones.conf";
.
4 – Menambahkan Zona Pertama Anda (Domain)
Kami sekarang akan menambahkan zona pertama Anda yang akan menjadi server DNS Anda. Kami akan menggunakan domain pengujian (example.tld ) untuk langkah ini sebagai contoh.
Pertama, kita akan membuat file baru di direktori var/named/fwd-zones
yang kita buat sebelumnya.
touch var/named/fwd-zones/example.tld.zone; chown named:named var/named/fwd-zones/example.tld.zone;
Selanjutnya, kita akan menambahkan contoh data record zone untuk domain ini. Edit file baru yang baru saja kita buat dan tambahkan data zona ke file konfigurasi.
nano var/named/fwd-zones/example.tld.zone
Data Zona
; zone file for example.tld $TTL 14400 ; 4 hours - default TTL for zone $ORIGIN example.tld. ;; SOA Resource Record @ IN SOA ns1.example.tld. hostmaster.example.tld. ( 2015010100 ; se = serial number 12h ; ref = refresh 15m ; ret = update retry 3w ; ex = expiry 3h ; min = minimum ) ;; Name Servers IN NS ns1.example.com. ns1 IN A 192.0.2.3 ;; Mail Exchange Resource Records @ IN MX 10 mail.example.tld. ;; Web Server Resource Records @ IN A 192.0.2.3 www IN CNAME @ ;; FTP Server Resource Records ftp IN A 192.0.2.3
Setelah Anda membuat semua perubahan yang perlu Anda buat, simpan dan keluar.
Sekarang kita akan mengedit etc/zones.conf
file konfigurasi untuk menyertakan domain baru yang baru saja kita buat.
nano etc/zones.conf
Sekarang tambahkan parameter di bawah ini ke file konfigurasi.
zone "example.tld" in { type master; file "fwd-zones/example.tld.zone"; allow-transfer { none; }; };
Setelah selesai, simpan dan keluar dari file ini.
Kami sekarang siap untuk memulai kembali layanan DNS Anda sehingga semua konfigurasi baru dapat dimuat.
systemctl restart named
Jika semuanya berhasil dimulai ulang, tanpa kesalahan, Anda akan menerima respons berikut:
Stopping named: . [ OK ] Starting named: [ OK ]
.
5 – Menguji Server DNS Anda
Kami sekarang siap untuk menguji fungsionalitas server DNS baru Anda. Pertama, kami akan mengonfirmasi bahwa server DNS Anda merespons zona (domain) yang baru saja kami buat. Jalankan perintah berikut:
dig example.tld -t ANY @localhost
Anda akan melihat output respons serupa di bawah ini dari server Anda. Nilai respons utama yang harus dicari adalah ;; ANSWER SECTION:
nilai-nilai. Keluaran ini memberi tahu Anda bahwa server telah menanggapi permintaan Anda dengan data rekaman yang Anda masukkan pada langkah sebelumnya.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.2 <<>> example.tld -t ANY @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61421 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;example.tld. IN ANY ;; ANSWER SECTION: example.tld. 14400 IN SOA ns1.example.tld. hostmaster.example.tld. 2015010100 43200 900 1814400 10800 example.tld. 14400 IN NS ns1.example.tld. example.tld. 14400 IN MX 10 mail.example.tld. example.tld. 14400 IN A 192.0.2.3 ;; ADDITIONAL SECTION: ns1.example.tld. 14400 IN A 192.0.2.3 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: ;; MSG SIZE rcvd: 147
Tes kedua yang akan kita lakukan adalah memeriksa apakah server Anda merespons pencarian rekursif dari localhost. Jalankan perintah di bawah ini untuk memulai pengujian:
dig google.com -t ANY @localhost
Jika server disiapkan seperti yang diharapkan, Anda akan menerima rekursif ;; ANSWER SECTION:
tanggapan.
;; ANSWER SECTION: google.com. 86400 IN SOA ns1.google.com. dns-admin.google.com. 4294967295 7200 1800 1209600 300 google.com. 600 IN MX 50 alt4.aspmx.l.google.com. google.com. 600 IN MX 40 alt3.aspmx.l.google.com. google.com. 600 IN MX 10 aspmx.l.google.com. google.com. 600 IN MX 20 alt1.aspmx.l.google.com. google.com. 600 IN MX 30 alt2.aspmx.l.google.com. google.com. 3600 IN TXT "v=spf1 include:_spf.google.com ~all" google.com. 86400 IN TYPE257 \# 19 0005697373756573796D616E7465632E636F6D google.com. 300 IN AAAA 2607:f8b0:4008:804::200e google.com. 300 IN A 216.58.219.78 google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns4.google.com. google.com. 172800 IN NS ns2.google.com. ;; AUTHORITY SECTION: google.com. 172800 IN NS ns4.google.com. google.com. 172800 IN NS ns1.google.com. google.com. 172800 IN NS ns3.google.com. google.com. 172800 IN NS ns2.google.com. ;; ADDITIONAL SECTION: ns2.google.com. 172800 IN A 216.239.34.10 ns1.google.com. 172800 IN A 216.239.32.10 ns4.google.com. 172800 IN A 216.239.38.10 ns3.google.com. 172800 IN A 216.239.36.10
Tes terakhir yang akan kita lakukan adalah memvalidasi bahwa server Anda TIDAK terbuka untuk serangan amplifikasi DNS. Orang-orang di openresolver.com telah menyiapkan tes sederhana yang dapat Anda gunakan dengan dig
:
dig +short test.openresolver.com TXT @1.2.3.4 (replace 1.2.3.4 with the IP address or domain name of the DNS server you are testing)
Tanggapan "open-resolver-detected"
menunjukkan bahwa Anda telah mengaktifkan rekursi. Tidak ada tanggapan, dalam hal ini, adalah hal yang baik .
Situs openresolver.com juga memiliki alat berbasis browser yang tersedia untuk menguji kerentanan ini.
Setelah menguji dengan alamat IP publik Anda, Anda akan menerima tanggapan serupa berikut:
Tes Resolver DNS Terbuka Berhasil
Selamat!
Anda sekarang memiliki server DNS otoritatif yang dikonfigurasi dan berjalan. Terima kasih telah membaca! Lihat beberapa artikel terkait di bawah ini dan terima kasih telah mencoba solusi hosting VPS kami yang andal di Atlantic.Net.