GNU/Linux >> Belajar Linux >  >> Linux

Cara :Server DNS BIND9 Resmi di CentOS 7:Instal &Konfigurasi

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

  1. Persiapan Server Dasar.
  2. Pemasangan paket perangkat lunak BIND.
  3. Konfigurasi paket perangkat lunak BIND.
  4. Menambahkan zona uji (domain)
  5. 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.


Linux
  1. Cara menginstal server DNS di RHEL 8 / CentOS 8 Linux

  2. Cara menginstal Redis di CentOS 7

  3. Bagaimana cara memigrasikan server BIND DNS ke perangkat keras baru?

  1. Cara Memeriksa File Konfigurasi bind9 (DNS Server)

  2. Cara Menginstal DenyHost di CentOS 6.7

  3. Cara Menginstal Server PostgreSQL di CentOS 8

  1. Cara Menginstal ClickHouse di CentOS 7

  2. Cara Menginstal Server Minecraft di CentOS 7

  3. Cara Setup DNS Server (Bind) di CentOS 8 / RHEL8