ريڊ هيٽ (RHEL/CentOS) 7 لاءِ ڪروٽ ماحول ۾ BIND DNS سرور کي ترتيب ڏيڻ لاءِ قدم بہ قدم ھدايت

ڪورس جي شاگردن لاءِ تيار ڪيل مضمون جو ترجمو "لينڪس سيڪيورٽي". هن هدايت ۾ ترقي ڪرڻ ۾ دلچسپي؟ Ivan Piskunov جي ماسٽر ڪلاس جي نشريات جي رڪارڊنگ ڏسو "لينڪس ۾ سيڪيورٽي ونڊوز ۽ MacOS جي مقابلي ۾"

ريڊ هيٽ (RHEL/CentOS) 7 لاءِ ڪروٽ ماحول ۾ BIND DNS سرور کي ترتيب ڏيڻ لاءِ قدم بہ قدم ھدايت

هن آرٽيڪل ۾، مان توهان کي RHEL 7 يا CentOS 7 تي DNS سرور قائم ڪرڻ لاءِ قدمن ذريعي هلائيندس. مون مظاهري لاءِ Red Hat Enterprise Linux 7.4 استعمال ڪيو. اسان جو مقصد هڪ A رڪارڊ ۽ هڪ PTR رڪارڊ فارورڊ ۽ ريورس لوڪ اپ زونز لاءِ ترتيب ڏيڻ آهي.

پهريون، DNS سرور لاءِ ضروري rpm پيڪيجز انسٽال ڪريو.

نوٽ: RHEL لاءِ توھان کي ھجڻ گھرجي فعال RHN رڪنيت، يا توهان ڪري سگهو ٿا مقامي آف لائن مخزن قائم ڪريو، جنهن سان پيڪيج مئنيجر “yum” انسٽال ڪري سگھي ٿو ضروري rpm پيڪيجز ۽ انحصار.

# yum install bind bind-chroot caching-nameserver

منهنجي سيٽنگون:

# hostname
golinuxhub-client.example
Мой IP-адрес 192.168.1.7
# ip address | egrep 'inet.*enp0s3'
    inet 192.168.1.7/24 brd 192.168.1.255 scope global dynamic enp0s3

جيئن ته اسان chroot استعمال ڪنداسين، اسان کي خدمت کي غير فعال ڪرڻ جي ضرورت آهي.

# systemctl stop named
# systemctl disable named

پوءِ گهربل فائلن کي ڪاپي ڪريو ڪروٽ ڊاريڪٽري ۾.
نوٽ. استدلال استعمال ڪريو -p هڪ ٽيم ۾ cp حقن ۽ مالڪن کي بچائڻ لاء.

[root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/etc/*  /var/named/chroot/etc/
‘/usr/share/doc/bind-9.9.4/sample/etc/named.conf’ -> ‘/var/named/chroot/etc/named.conf’
‘/usr/share/doc/bind-9.9.4/sample/etc/named.rfc1912.zones’ -> ‘/var/named/chroot/etc/named.rfc1912.zones’

پوءِ زون سان لاڳاپيل فائلن کي نقل ڪريو نئين جڳھ ڏانھن.

[root@golinuxhub-client ~]# cp -rpvf /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/
‘/usr/share/doc/bind-9.9.4/sample/var/named/data’ -> ‘/var/named/chroot/var/named/data’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.external.zone.db’ -> ‘/var/named/chroot/var/named/my.external.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/my.internal.zone.db’ -> ‘/var/named/chroot/var/named/my.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.ca’ -> ‘/var/named/chroot/var/named/named.ca’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.empty’ -> ‘/var/named/chroot/var/named/named.empty’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.localhost’ -> ‘/var/named/chroot/var/named/named.localhost’
‘/usr/share/doc/bind-9.9.4/sample/var/named/named.loopback’ -> ‘/var/named/chroot/var/named/named.loopback’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves’ -> ‘/var/named/chroot/var/named/slaves’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.ddns.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.ddns.internal.zone.db’
‘/usr/share/doc/bind-9.9.4/sample/var/named/slaves/my.slave.internal.zone.db’ -> ‘/var/named/chroot/var/named/slaves/my.slave.internal.zone.db’
```bash
Теперь давайте посмотрим на основной файл конфигурации.
```bash
# cd /var/named/chroot/etc/

name.conf جي مواد کي صاف ڪريو ۽ ھيٺ ڏنل پيسٽ ڪريو.

[root@golinuxhub-client etc]# vim named.conf
options {
        listen-on port 53 { 127.0.0.1; any; };
#       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; any; };
        allow-query-cache { localhost; any; };
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

view my_resolver {
        match-clients      { localhost; any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};

زون جي مخصوص معلومات کي شامل ڪيو وڃي /var/named/chroot/etc/named.rfc1912.zones. ھيٺيون داخلون شامل ڪريو. example.zone فائل فارورڊ لوڪ اپ زون فائل آهي، ۽ example.rzone - ريورس زون فائل.

اهم نوٽ: ريورس لوڪ اپ زون 1.168.192 تي مشتمل آهي ڇاڪاڻ ته منهنجو IP پتو 192.168.1.7 آهي

zone "example" IN {
        type master;
        file "example.zone";
        allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "example.rzone";
        allow-update { none; };
};

زونن سان لاڳاپيل فائلون هتي موجود آهن:

# cd /var/named/chroot/var/named/

اڳيون، اسان اڳتي ۽ ريورس زونن لاءِ فائلون ٺاهينداسين. فائل جا نالا ساڳيا ئي هوندا جيئن مٿي ڏنل فائل ۾ name.rfc1912.zones. اسان وٽ اڳ ۾ ئي ڪيترائي ڊفالٽ ٽيمپليٽ آھن جيڪي اسان استعمال ڪري سگھون ٿا.

# cp -p named.localhost  example.zone
# cp -p named.loopback example.rzone

جئين توهان ڏسي سگهو ٿا، موجوده اجازتون سڀني فائلن ۽ ڊائريڪٽرن تي آهن پاڙ.

[root@golinuxhub-client named]# ll
total 32
drwxr-xr-x. 2 root root    6 May 22  2017 data
-rw-r--r--. 1 root root  168 May 22  2017 example.rzone
-rw-r--r--. 1 root root  152 May 22  2017 example.zone
-rw-r--r--. 1 root root   56 May 22  2017 my.external.zone.db
-rw-r--r--. 1 root root   56 May 22  2017 my.internal.zone.db
-rw-r--r--. 1 root root 2281 May 22  2017 named.ca
-rw-r--r--. 1 root root  152 May 22  2017 named.empty
-rw-r--r--. 1 root root  152 May 22  2017 named.localhost
-rw-r--r--. 1 root root  168 May 22  2017 named.loopback
drwxr-xr-x. 2 root root   71 Feb 12 21:02 slaves

صارف کي مالڪ جي طور تي ظاهر ڪرڻ لاء سڀني فائلن جي اجازتن کي تبديل ڪريو پاڙ ۽ گروپ رکيو ويو.

# chown root:named *

پر ڊيٽا لاء مالڪ هجڻ ضروري آهي نالو: نالو.

# chown -R  named:named data
# ls -l
total 32
drwxr-xr-x. 2 named named    6 May 22  2017 data
-rw-r--r--. 1 root  named  168 May 22  2017 example.rzone
-rw-r--r--. 1 root  named  152 May 22  2017 example.zone
-rw-r--r--. 1 root  named   56 May 22  2017 my.external.zone.db
-rw-r--r--. 1 root  named   56 May 22  2017 my.internal.zone.db
-rw-r--r--. 1 root  named 2281 May 22  2017 named.ca
-rw-r--r--. 1 root  named  152 May 22  2017 named.empty
-rw-r--r--. 1 root  named  152 May 22  2017 named.localhost
-rw-r--r--. 1 root  named  168 May 22  2017 named.loopback
drwxr-xr-x. 2 root  named   71 Feb 12 21:02 slaves

پنھنجي فارورڊ زون فائل ۾ ھيٺ ڏنل مواد شامل ڪريو. هتي اسان مقامي هوسٽ (golinuxhub-client) لاءِ هڪ رڪارڊ ٺاهيو ۽ ٻيو سرور (golinuxhub-server) لاءِ.

# vim example.zone
$TTL 1D
@       IN SOA  example. root (
                                        1       ; serial
                                        3H      ; refresh
                                        15M     ; retry
                                        1W      ; expire
                                        1D )    ; minimum

                IN NS           example.

                        IN A 192.168.1.7
golinuxhub-server       IN A 192.168.1.5
golinuxhub-client       IN A 192.169.1.7

اڳيون، مواد شامل ڪريو ريورس زون فائل ۾. هتي اسان هڪ PTR رڪارڊ ٺاهيندا آهيون golinuxhub-client ۽ golinuxhub-server لاءِ.

# vim example.rzone
$TTL 1D
@       IN SOA  example. root.example. (
                                        1997022700      ; serial
                                        28800           ; refresh
                                        14400           ; retry
                                        3600000         ; expire
                                        86400  )        ; minimum

        IN NS   example.
5       IN PTR  golinuxhub-server.example.
7       IN PTR  golinuxhub-client.example.

خدمت شروع ڪرڻ کان اڳ نالو- ڪروٽ، اچو ته زون فائل جي ترتيب جي جانچ ڪريون.

[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.zone
zone golinuxhub-client.example/IN: loaded serial 1
OK

[root@golinuxhub-client named]# named-checkzone golinuxhub-client.example example.rzone
zone golinuxhub-client.example/IN: loaded serial 1997022700
OK

سڀ ڪجهه سٺو لڳندو آهي. ھاڻي ھيٺ ڏنل حڪم استعمال ڪندي ترتيب واري فائل کي چيڪ ڪريو.

[root@golinuxhub-client named]# named-checkconf -t /var/named/chroot/ /etc/named.conf

تنهن ڪري، سڀڪنھن شيء کي ڪاميابي سان مڪمل ڪيو ويو.

[root@golinuxhub-client named]# echo $?
0

اهم نوٽ: مون وٽ اجازت واري موڊ ۾ SELinux آهي

# getenforce
Permissive

هر شي سٺي لڳندي آهي، تنهنڪري اهو اسان جي خدمت شروع ڪرڻ جو وقت آهي نالو- ڪروٽ .

[root@golinuxhub-client named]# systemctl restart named-chroot

[root@golinuxhub-client named]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2018-02-12 21:53:23 IST; 19s ago
  Process: 5236 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 5327 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 5325 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
 Main PID: 5330 (named)
   CGroup: /system.slice/named-chroot.service
           └─5330 /usr/sbin/named -u named -c /etc/named.conf -t /var/named/chroot

Feb 12 21:53:23 golinuxhub-client.example named[5330]: managed-keys-zone/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa/IN/my_resolver: loaded serial 1997022700
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone example/IN/my_resolver: loaded serial 1
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain/IN/my_resolver: loaded serial 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: all zones loaded
Feb 12 21:53:23 golinuxhub-client.example named[5330]: running
```bash
Убедитесь, что resolv.conf содержит ваш IP-адрес, чтобы он мог работать в качестве DNS-сервера.
```bash
# cat /etc/resolv.conf
search example
nameserver 192.168.1.7
```bash
Давайте проверим наш DNS-сервер для обратной зоны, используя dig.
```bash
[root@golinuxhub-client named]# dig -x 192.168.1.5

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.1.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40331
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;5.1.168.192.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
5.1.168.192.in-addr.arpa. 86400 IN      PTR     golinuxhub-server.example.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN      NS      example.

;; ADDITIONAL SECTION:
example.                86400   IN      A       192.168.1.7

;; Query time: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WHEN: Mon Feb 12 22:13:17 IST 2018
;; MSG SIZE  rcvd: 122

جيئن توهان ڏسي سگهو ٿا، اسان کي اسان جي درخواست (QUERY) تي هڪ مثبت جواب (جواب) مليو.

[root@golinuxhub-client named]# dig -x 192.168.1.7

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.1.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55804
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;7.1.168.192.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
7.1.168.192.in-addr.arpa. 86400 IN      PTR     golinuxhub-client.example.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400   IN      NS      example.

;; ADDITIONAL SECTION:
example.                86400   IN      A       192.168.1.7

;; Query time: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WHEN: Mon Feb 12 22:12:54 IST 2018
;; MSG SIZE  rcvd: 122

اسان ساڳئي طريقي سان سڌو علائقو چيڪ ڪري سگهون ٿا.

[root@golinuxhub-client named]# nslookup golinuxhub-client.example
Server:         192.168.1.7
Address:        192.168.1.7#53

Name:   golinuxhub-client.example
Address: 192.169.1.7

[root@golinuxhub-client named]# nslookup golinuxhub-server.example
Server:         192.168.1.7
Address:        192.168.1.7#53

Name:   golinuxhub-server.example
Address: 192.168.1.5

هي آرٽيڪل ٿورڙو پراڻو آهي جيئن RHEL 7 ۾ توهان کي هاڻي ضرورت ناهي ته بائنڊ ڪنفيگريشن فائلن کي ڪروٽ ۾ نقل ڪريو. قدم بہ قدم سبق: بائنڊ ڪروٽ استعمال ڪندي DNS سرور ترتيب ڏيو (CentOS/RHEL 7).

جو ذريعو: www.habr.com

تبصرو شامل ڪريو