GNU/Linux >> Belajar Linux >  >> Cent OS

Siapkan Zona Kebijakan Respons (RPZ) di BIND Resolver di CentOS/RHEL

Tutorial ini akan menunjukkan kepada Anda cara mengganti data DNS publik di resolver DNS BIND Anda dengan zona kebijakan respons (RPZ) di CentOS/RHEL.

Apa itu Zona Kebijakan Respons?

Zona kebijakan respons (RPZ) memungkinkan penyelesai DNS untuk memodifikasi catatan DNS. Ini awalnya dikembangkan sebagai cara untuk memblokir akses ke situs web berbahaya. Misalnya, jika komputer menanyakan alamat IP dari situs berbahaya yang diketahui menyebarkan malware, resolver DNS dapat mengembalikan 127.0.0.1 sebagai respons DNS, sehingga komputer tidak dapat terhubung ke situs berbahaya. Ini adalah kasus penggunaan asli. Dengan demikian, zona kebijakan respons juga dikenal sebagai firewall DNS .

Anda dapat menggunakan RPZ dengan cara lain. Misalnya,

  • Jika Anda memiliki layanan self-hosted seperti Nextcloud di jaringan lokal, Anda dapat menggunakan RPZ untuk mengarahkan domain Nextcloud Anda (nextcloud.domain-anda.com) ke alamat IP lokal, sehingga Anda tidak perlu keluar ke Internet, lalu kembali ke jaringan lokal Anda untuk mengakses server Nextcloud.
  • Orang tua dapat menggunakan RPZ untuk memblokir anak-anak mereka mengakses situs porno.
  • Anda dapat memblokir iklan yang tidak diinginkan.
  • Saya menginstal banyak aplikasi web di VPS saya. Jika aplikasi web tidak dimaksudkan untuk akses publik, saya menambahkan data DNS hanya di BIND RPZ dan tidak memublikasikan data DNS di pencatat domain saya untuk mencegah peretasan.

Ya, Anda dapat membuat entri DNS di /etc/hosts file di komputer lokal untuk menimpa catatan DNS publik, tetapi tidak dapat diskalakan dengan baik. Selain itu, iOS dan Android tidak mengizinkan Anda membuat entri DNS lokal. Bukankah lebih baik jika penyelesai BIND DNS menimpa catatan DNS publik, sehingga semua perangkat di jaringan yang menggunakan penyelesai BIND dapat menggunakan catatan DNS khusus?

Prasyarat

Untuk mengikuti tutorial ini, diasumsikan bahwa Anda memiliki penyelesai DNS BIND yang berjalan di server CentOS/RHEL Anda. Jika tidak, silakan baca tutorial berikut untuk menyiapkan resolver BIND.

  • Siapkan Resolver DNS BIND9 Anda Sendiri di CentOS 8/RHEL 8

Setelah BIND Resolver Anda aktif dan berjalan, ikuti petunjuk di bawah ini.

Cara Mengatur Zona Kebijakan Respons BIND di Server CentOS/RHEL

Pertama, edit named.conf file dengan editor teks baris perintah seperti Nano.

sudo nano /etc/named.conf

Tambahkan baris berikut di options {...} klausa untuk mengaktifkan zona kebijakan respons. (Baris pertama adalah komentar.)

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Kemudian gulir ke bawah ke bagian bawah file ini dan tambahkan zona RPZ di file ini.

zone "rpz.local" {
    type master;
    file "rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
};

Catatan:

  • Anda dapat menggunakan jalur absolut alih-alih nama file sederhana di file pengarahan. BIND akan menganggap file dalam /var/named/ .
  • Zona RPZ harus mengizinkan kueri dari localhost saja. Anda tidak perlu menambahkan klien jaringan lokal.
  • Ganti 12.34.56.78 dengan alamat IP dari resolver DNS BIND budak, yang diizinkan untuk melakukan transfer zona. Jika hanya ada satu resolver DNS, Anda dapat menggunakan localhost seperti ini:allow-transfer { localhost; };

Disarankan untuk menggunakan file log terpisah untuk RPZ guna menganalisis log dengan lebih baik, jadi tambahkan baris berikut di logging {...}; klausa.

    channel rpzlog {
  	file "/var/log/named/rpz.log" versions unlimited size 100m;
    	print-time yes;
    	print-category yes;
    	print-severity yes;
    	severity info;
    };
    category rpz { rpzlog; };

Simpan dan tutup file. Kemudian buat /var/log/named/ direktori dan buat named sebagai pemilik.

sudo mkdir /var/log/named/
sudo chown named:named /var/log/named/ -R

Kemudian kita perlu membuat file zona. Alih-alih membuat file zona dari awal, kita dapat menggunakan file template zona. Salin konten named.empty ke file baru.

sudo cp /var/named/named.empty /var/named/rpz.local

Edit file zona.

sudo nano /var/named/rpz.local

Tidak perlu mengubah konten yang ada. Kami hanya menambahkan catatan DNS kustom kami. Misalnya, jika Anda memiliki server Nextcloud di jaringan lokal dengan alamat IP 192.168.0.103, maka Anda menambahkan catatan DNS berikut, sehingga klien Nextcloud tidak perlu keluar ke Internet untuk terhubung ke server Nextcloud .

nextcloud.your-domain.com      A   192.168.0.103

Jika Anda tidak ingin anak Anda mengunjungi situs porno seperti pornhub.com, tambahkan baris berikut di file ini untuk memblokir seluruh domain pornhub.com.

*.pornhub.com          CNAME  .

Jika Anda tidak suka melihat iklan Google Adsense di halaman web, Anda dapat menambahkan baris berikut untuk memblokir doubleclick.net domain, yang digunakan untuk menayangkan Iklan Adsense.

*.doubleclick.net      CNAME   .

Untuk mengganti data MX untuk nama domain, tambahkan baris seperti di bawah ini.

example.com         MX     0    mail.example.com.

Catatan bahwa semua nama tangan kiri TIDAK boleh diakhiri dengan titik dan semua nama tangan kanan harus diakhiri dengan titik.


Simpan dan tutup file. Selanjutnya, kita harus mengatur named sebagai pemilik grup /var/named/rpz.local file, atau bernama tidak akan dapat memuat zona ini.

sudo chown root:named /var/named/rpz.local

Selanjutnya, jalankan perintah berikut untuk memeriksa apakah ada kesalahan sintaks pada file konfigurasi utama. Keluaran senyap menunjukkan tidak ada kesalahan yang ditemukan.

sudo named-checkconf

Kemudian periksa sintaks file zona RPZ.

sudo named-checkzone rpz /var/named/rpz.local

Jika tidak ada kesalahan yang ditemukan, mulai ulang BIND.

sudo systemctl restart named

Sekarang Anda dapat menjalankan dig perintah pada server BIND untuk melihat apakah RPZ berfungsi. Misalnya, kueri data DNS dari nama domain yang disertakan dalam zona kebijakan respons.

dig A nextcloud.your-domain.com @127.0.0.1

Anda akan melihat sesuatu seperti di bawah ini pada output perintah, yang menunjukkan bahwa respons DNS disajikan dari RPZ lokal.

;; AUTHORITY SECTION:
rpz.local			86400	IN	NS	localhost.

Anda juga dapat memeriksa log kueri BIND9.

sudo tail /var/log/named/rpz.log

Anda akan melihat sesuatu seperti di bawah ini, artinya respons disajikan dari RPZ lokal.

(example.com): rpz QNAME Local-Data rewrite example.com via example.com.rpz.local

Klien Fedora Tidak Menggunakan RPZ?

Secara default, Fedora tidak menggunakan RPZ. Anda dapat menggunakan dig utilitas baris perintah untuk menemukan alamat IP dari nama host di zona RPZ, tetapi jika Anda melakukan ping ke nama host, itu tidak dapat menemukan alamat IP.

Untuk mengatasi masalah ini, Anda perlu mengubah parameter hosts di /etc/nsswitch.conf file di klien Fedora.

sudo nano /etc/nsswitch.conf

Secara default, parameter host didefinisikan sebagai:

hosts:   files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

Ubah ke:

hosts:   files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

Simpan dan tutup file. RPZ seharusnya berfungsi sekarang.

Menggunakan RPZ dengan Forwarder

Jika Anda menambahkan fowarders direktif seperti di bawah ini di options klausa dalam /etc/named.conf file, maka resolver BIND Anda menjadi forwarder, yang akan meneruskan permintaan DNS ke resolver DNS upstream seperti 8.8.8.8 .

options {
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        max-cache-size 100m;
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; 10.10.60.0/24;};

        //enable response policy zone. 
        response-policy { 
           zone "rpz.local"; 
        };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        ...
};

Zona kebijakan respons berfungsi dengan penyiapan penerusan ini. Bind akan menanyakan zona kebijakan respons lokal terlebih dahulu. Jika catatan DNS tidak ditemukan di RPZ, maka permintaan akan diteruskan ke resolver DNS upstream. Anda mungkin ingin menggunakan penerus untuk mempercepat resolusi DNS ketika penyelesai BIND Anda sendiri membutuhkan terlalu banyak waktu untuk menyelesaikan nama DNS.

Konfigurasikan Transfer Zona

Jika Anda memiliki penyelesai DNS BIND lain, Anda dapat mengonfigurasinya sebagai penyelesai budak untuk secara otomatis menerima pembaruan dari penyelesai DNS master.

Pertama, Anda perlu mengedit /etc/named.conf file di master DNS resolver .

sudo nano /etc/named.conf

Tambahkan alamat IP dari resolver DNS slave ke allow-transfer arahan.

zone "rpz.local" {
    type master;
    file "/etc/bind/db.rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
    also-notify { 12.34.56.78; };
};

Jika Anda memiliki beberapa slave DNS resolver, tambahkan beberapa alamat IP seperti di bawah ini.

 allow-transfer { 12.34.56.78; 12.34.56.79; };

also-notify direktif akan membuat master DNS resolver mengirim pesan notifikasi ke slave resolver saat zona RPZ diubah. Simpan dan tutup file. Mulai ulang BIND agar perubahan diterapkan.

sudo systemctl restart named

Jika ada firewall yang berjalan di master DNS resolver, Anda harus mengizinkan resolver DNS slave untuk terhubung ke port 53.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="12.34.56.78" accept'
sudo systemctl reload firewalld

Selanjutnya, edit /etc/named.conf file di penyelesai DNS budak .

sudo nano /etc/named.conf

Tambahkan baris berikut di options {...} klausa untuk mengaktifkan zona kebijakan respons. (Baris pertama adalah komentar.)

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Kemudian tambahkan zona RPZ budak di akhir file ini. Ganti 11.22.33.44 dengan alamat IP dari master DNS resolver.

zone "rpz.local" {
    type slave;
    file "rpz.local";
    masters { 11.22.33.44;};
    allow-notify { 11.22.33.44; };
    allow-transfer { none; };
    allow-query { localhost; };
};

Simpan dan tutup file.

Anda juga perlu mengonfigurasi firewall slave resolver untuk mengizinkan master DNS resolver mengirim notify pesan.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.22.33.44" accept'
sudo systemctl reload firewalld

Selanjutnya, jalankan perintah berikut untuk memeriksa apakah ada kesalahan sintaks pada file konfigurasi utama. Keluaran senyap menunjukkan tidak ada kesalahan yang ditemukan.

sudo named-checkconf

Jika tidak ada kesalahan yang ditemukan, mulai ulang BIND.

sudo systemctl restart named

Setelah BIND restart, transfer zona akan segera dimulai. Periksa log BIND9 dengan perintah berikut.

sudo journalctl -eu named

Anda dapat melihat pesan seperti di bawah ini, yang menunjukkan transfer zona berhasil.

transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer status: success
transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer completed: 1 messages, 34 records, 899 bytes, 0.248 secs (3625 bytes/sec)

File zona akan disimpan sebagai /var/named/rpz.local pada penyelesai budak.

Catatan: Setiap kali Anda mengubah zona RPZ pada master resolver, Anda perlu memperbarui nomor seri. Buat lebih besar, sehingga slave resolver mengetahui zona RPZ diubah.

Membuat Beberapa Zona RPZ

Terkadang Anda mungkin tidak ingin catatan DNS tertentu ditransfer ke resolver budak. Anda dapat membuat zona RPZ terpisah. Edit /etc/named.conf berkas.

sudo nano /etcnamed.conf

Tambahkan zona RPZ baru.

//enable response policy zone. 
response-policy { 
    zone "rpz.local";
    zone "rpz.local.notransfer"; 
};

Tambahkan definisi untuk zona baru di bagian bawah file ini.

zone "rpz.local.notransfer" {
    type master;
    file "/var/named/rpz.local.notransfer";
    allow-query { localhost; };
    allow-transfer { localhost; };
};

Simpan dan tutup file. Kemudian kita perlu membuat file zona. Alih-alih membuat file zona dari awal, kita dapat menggunakan file template zona. Salin konten named.empty ke file baru.

sudo cp /var/named/named.empty /var/named/rpz.local.notransfer

Edit file zona.

sudo nano /var/named/rpz.local.notransfer

Cent OS
  1. Konfigurasi DNS pada CentOS 5 / RHEL 5 dengan chroot

  2. Cara mengkonfigurasi server DNS di CentOS 5 / RHEL 5

  3. Cara Mengatur atau Mengubah Nama Host di CentOS 7 / RHEL 7

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

  2. Instal dan Konfigurasi DNS/BIND Di Linux/Rhel/CentOS Dengan Fitur Chroot

  3. Cara Konfigurasi Slave DNS (BIND) di CentOS 7 / RHEL 7

  1. Cara Setup Server DNS (Bind) di CentOS/RHEL 7/6/5

  2. Cara Mengatur Server DNS Pribadi dengan BIND di CentOS 8

  3. Cara mengatur zona waktu di CentOS 7