Giới thiệu sơ lược
BIND (Berkeley Internet Name Domain) là một phần mềm hệ thống máy chủ tên miền cơ bản và phổ biến nhất hiện nay. BIND được sử dụng trên hầu hết các máy chủ phân giải tên miền trên toàn thế giới.
Cài đặt BIND 9
Trong ví dụ này tôi sử dụng 1 con VPS với địa chỉ IP là 172.10.10.20
yum update -y yum -y install bind bind-utils
Sau khi cài đặt xong các bạn chạy lệnh kiểm tra:
# named -v BIND 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 (Extended Support Version) <id:7107deb>
Phân quyền cho tập tin cấu hình name.conf
chgrp named -R /var/named chown -v root:named /etc/named.conf
Chỉnh sửa cấu hình named.conf
vi /etc/named.conf
options { listen-on port 53 { 127.0.0.1; 172.10.10.20; }; # điền IP của VPS listen-on-v6 port 53 { ::1; }; # Thư mục service làm việc directory "/var/named"; # Thư mục cache 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; # Cho phép query DNS từ dải IP nào hoặc tất cả các dải allow-query { localhost; 172.10.10.0/24;}; # transfer range ( điều chỉnh nếu có Secondary DNS) # allow-transfer { localhost; 10.0.0.0/24; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; # dnssec-enable yes; # dnssec-validation yes; dnssec-enable no; dnssec-validation no; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; 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"; #Thêm bên dưới phần cấu hình Zone forward và Zone reverse, giả định là domain "systuts.net": zone "sysuts.net" IN { type master; file "systuts.fwd.zone"; # đường dẫn tuyệt đối hoặc tương đối allow-update { none; }; }; zone "4.16.172.in-addr.arpa" IN { type master; file "systuts.rev.zone"; allow-update { none; }; };
Tiếp theo chúng ta tiến hành tạo zone forward
vi cat /var/named/systuts.fwd.zone
$TTL 86400 @ IN SOA masterdns.systuts.net. root.systuts.net. 2021082501 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ) ; minimum ; Name server's @ IN NS masterdns.systuts.net. ; Name server hostname to IP resolve. @ IN A 172.25.10.221 ; Hosts in this Domain @ IN A 172.25.10.221 masterdns IN A 172.25.10.221 a IN A 172.25.10.222 mail IN A 172.25.10.222 b IN A 172.25.10.224 ; mail server @ IN MX 10 mail ;CNAME www IN CNAME a ;TXT @ IN TXT "Day la ban ghi TXT"
Tạo reverse zone (bản ghi ngược PTR)
vi /var/named/systuts.rev.zone
$TTL 86400 @ IN SOA masterdns.systuts.net. root.systuts.net. ( 2021082502 ; serial 3600 ; refresh 1800 ; retry 604800 ; expire 86400 ) ; minimum ; Name server's @ IN NS masterdns.systuts.net. ; Name server hostname to IP resolve. masterdns IN A 172.25.10.221 ;Hosts in Domain 221 IN PTR masterdns.systuts.net. 222 IN PTR a.systuts.net. 223 IN PTR b.systuts.net.
Phần quyền cho reverse zone
sudo chgrp named /var/named/systuts.fwd.zone sudo chgrp named /var/named/systuts.rev.zone
Khởi động dịch vụ DNS
systemctl start named systemctl enable named
Cấp quyền tường lửa cho phép truy cập
firewall-cmd --add-service=dns --permanent firewall-cmd --reload
Truy vấn bản ghi từ DNS Server
Trước tiên chúng ta cần thay đổi nameserver, chạy lệnh:
vi /etc/resolv.conf
Sửa thành địa chỉ IP Server của bạn, trong ví dụ này IP Server của tôi là 172.10.10.20:
nameserver 172.10.10.20
Sau đó lưu lại và chạy lệnh query dns để kiểm tra, cú pháp: dig [bản ghi] [tên miền]
[root@master ~]# dig a systuts.net ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> a systuts.local ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3805 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;systuts.net. IN A ;; ANSWER SECTION: systuts.net. 86400 IN A 172.25.10.221 ;; AUTHORITY SECTION: systuts.net. 86400 IN NS masterdns.systuts.net. ;; ADDITIONAL SECTION: masterdns.systuts.net. 86400 IN A 172.25.10.221 ;; Query time: 0 msec ;; SERVER: 172.10.10.20#53(172.10.10.20) ;; WHEN: Wed Aug 25 17:07:24 +07 2021 ;; MSG SIZE rcvd: 98
Tùy chọn chroot
Mục đích là để bảo mật an toàn cho DNS Server bằng cách cài đặt gói bind-chroot nhằm cô lập các file liên quan đến service BIND 9 với file system
yum -y install bind-chroot
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
Tắt service named
systemctl stop named systemctl disable named
Bật service named chroot
systemctl start named-chroot systemctl enable named-chroot
Verify lại các zones đã tạo
[root@master ~]# named-checkzone systuts.net/var/named/systuts.rev.net zone systuts.net/IN: loaded serial 2021082502 OK [root@master ~]# named-checkzone systuts.net/var/named/systuts.fwd.zone zone systuts.net/IN: loaded serial 2021082501 OK
Chúc các bạn thành công.