Stap voor stap handleiding voor het instellen van een DNS-server BIND in een chroot-omgeving voor Red Hat (RHEL / CentOS) 7

De vertaling van het artikel is voorbereid voor studenten van de cursus Veiligheid van LinuxBen je geïnteresseerd in de ontwikkeling in deze richting? Bekijk de opname van de masterclass van Ivan Piskunov «Beveiliging in Linux vergeleken met Windows en MacOS»

Stap voor stap handleiding voor het instellen van een DNS-server BIND in een chroot-omgeving voor Red Hat (RHEL / CentOS) 7

In dit artikel zal ik de stappen uitleggen voor het configureren van een DNS-server op RHEL 7 of CentOS 7. Voor de demonstratie heb ik Red Hat Enterprise Linux 7.4 gebruikt. Ons doel is om één A-record en één PTR-record voor de respectievelijke rechtstreekse en omgekeerde weergavezone te creëren.

Begin met het installeren van de benodigde rpm-pakketten voor de DNS-server.

OPMERKING: Voor RHEL moet je een actief abonnement op RHN hebben, of je kunt een lokale offline repository configureren, waarmee de pakketbeheerder 'yum' de benodigde rpm-pakketten en afhankelijkheden kan installeren.

# yum install bind bind-chroot caching-nameserver

Mijn instellingen:

# 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

Aangezien we chroot zullen gebruiken, moet de service worden uitgeschakeld.

# systemctl stop named
# systemctl disable named

Kopieer vervolgens de benodigde bestanden naar de chroot-directory.
OPMERKING. Gebruik de parameter -p in het commando cp om de rechten en eigenaren te behouden.

[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’

Kopieer vervolgens de zone-gerelateerde bestanden naar de nieuwe locatie.

[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
Laten we nu eens kijken naar het hoofdconfiguratiebestand.
```bash
# cd /var/named/chroot/etc/

Maak de inhoud van named.conf leeg en plak het volgende.

[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";
};

Informatie met betrekking tot de zone moet worden toegevoegd aan /var/named/chroot/etc/named.rfc1912.zones. Voeg de onderstaande record toe. Het bestand example.zone is het directe zichtbestandsbestand, en example.rzone is het omgekeerde zonebestand.

BELANGRIJKE OPMERKING: Het omgekeerde zicht bevat 1.168.192, aangezien mijn IP-adres 192.168.1.7 is.

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; };
};

De bestanden gerelateerd aan de zones bevinden zich hier:

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

Laten we nu bestanden maken voor de directe en omgekeerde zone. De bestandsnamen zullen hetzelfde zijn als hierboven in het bestand named.rfc1912.zones. We hebben al enkele standaard sjablonen die we kunnen gebruiken.

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

Zoals u kunt zien, zijn de huidige rechten op alle bestanden en mappen eigendom van root.

[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

Verander de rechten van alle bestanden door gebruiker op te geven als root en groep named.

# chown root:named *

Maar voor data moet de eigenaar zijn named: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

Voeg de onderstaande inhoud toe aan het directe zonebestand. Hier maken we een A-record voor localhost (golinuxhub-client) en nog een voor de server (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

Voeg vervolgens de inhoud toe aan het omgekeerde zonebestand. Hier creëren we een PTR-record voor golinuxhub-client en voor server 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.

Voordat we de dienst named-chroot, controleren we de configuratie van het zonebestand.

[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

Alles ziet er goed uit. Controleer nu het configuratiebestand met de volgende opdracht.

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

Dus, alles is succesvol afgerond.

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

BELANGRIJKE OPMERKING: mijn SELinux staat in permissive modus

# getenforce
Permissive

Alles ziet er goed uit, dus het is tijd om onze service te starten named-chroot .

[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 "Controleren van zonebestanden is uitgeschakeld"; 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: geladen serie 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa/IN/my_resolver: geladen serie 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa/IN/my_resolver: geladen serie 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa/IN/my_resolver: geladen serie 1997022700
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone example/IN/my_resolver: geladen serie 1
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost/IN/my_resolver: geladen serie 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: geladen serie 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain/IN/my_resolver: geladen serie 0
Feb 12 21:53:23 golinuxhub-client.example named[5330]: alle zones geladen
Feb 12 21:53:23 golinuxhub-client.example named[5330]: aan het draaien
```bash
Zorg ervoor dat resolv.conf uw IP-adres bevat, zodat het kan functioneren als DNS-server.
```bash
# cat /etc/resolv.conf
search example
nameserver 192.168.1.7
```bash
Laten we onze DNS-server controleren voor de omgekeerde zone met 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
;; globale opties: +cmd
;; Ontvangen antwoord:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40331
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: versie: 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 tijd: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WANNEER: Mon Feb 12 22:13:17 IST 2018
;; MSG GROOTTE  ontvangen: 122

Zoals je kunt zien, hebben we een positieve respons (ANSWER) ontvangen op onze aanvraag (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

Op dezelfde manier kunnen we de directe zone controleren.

[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

Dit artikel is enigszins verouderd, aangezien je in RHEL 7 nu geen configuratiebestanden van bind meer naar chroot hoeft te kopiëren. Stapsgewijze Tutorial: Configureer DNS Server met bind chroot (CentOS/RHEL 7).

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers đŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster