Schritt-fĂŒr-Schritt-Anleitung zur Einrichtung eines DNS-Servers BIND in einer chroot-Umgebung fĂŒr Red Hat (RHEL / CentOS) 7.

Die Übersetzung des Artikels wurde fĂŒr die Studierenden des Kurses vorbereitet „Sicherheit von Linux“. Möchten Sie in diesem Bereich wachsen? Sehen Sie sich die Aufzeichnung des Workshops von Ivan Piskunov an „Sicherheit in Linux im Vergleich zu Windows und MacOS“

Schritt-fĂŒr-Schritt-Anleitung zur Einrichtung eines DNS-Servers BIND in einer chroot-Umgebung fĂŒr Red Hat (RHEL / CentOS) 7.

In diesem Artikel werde ich die Schritte zur Konfiguration eines DNS-Servers in RHEL 7 oder CentOS 7 erlĂ€utern. Zur Demonstration habe ich Red Hat Enterprise Linux 7.4 verwendet. Unser Ziel ist es, einen A-Eintrag und einen PTR-Eintrag fĂŒr die VorwĂ€rts- und RĂŒckwĂ€rtszone entsprechend zu erstellen.

ZunĂ€chst installieren Sie die benötigten RPM-Pakete fĂŒr den DNS-Server.

HINWEIS: FĂŒr RHEL benötigen Sie ein aktives Abonnement bei RHN, oder Sie können ein lokales Offline-Repository konfigurieren, mit dem der Paketmanager „yum“ die benötigten RPM-Pakete und AbhĂ€ngigkeiten installieren kann.

# yum install bind bind-chroot caching-nameserver

Meine Einstellungen:

# 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

Da wir chroot verwenden werden, mĂŒssen wir den Dienst deaktivieren.

# systemctl stop named
# systemctl disable named

Kopieren Sie dann die erforderlichen Dateien in das chroot-Verzeichnis.
HINWEIS. Verwenden Sie das Argument -p rcctl set servicename oomprotect -1000 cp um Berechtigungen und EigentĂŒmer zu erhalten.

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

Kopieren Sie dann die zonenbezogenen Dateien an den neuen Speicherort.

[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
Jetzt schauen wir uns die Hauptkonfigurationsdatei an.
```bash
# cd /var/named/chroot/etc/

Löschen Sie den Inhalt von named.conf und fĂŒgen Sie das Folgende ein.

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

Die Informationen, die sich auf die Zone beziehen, mĂŒssen in /var/named/chroot/etc/named.rfc1912.zoneseingefĂŒgt werden. FĂŒgen Sie die folgenden EintrĂ€ge hinzu. Die Datei example.zone ist eine Datei fĂŒr die direkte Ansicht, und example.rzone ist die Datei fĂŒr die inverse Zone.

WICHTIGER HINWEIS: Die inverse Ansicht enthÀlt 1.168.192, da meine IP-Adresse 192.168.1.7 ist.

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

Die Dateien, die mit den Zonen verbunden sind, befinden sich hier:

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

Lassen Sie uns jetzt Dateien fĂŒr die direkte und inverse Zone erstellen. Die Dateinamen werden die gleichen sein wie oben in der Datei named.rfc1912.zones. Wir haben bereits einige Standardvorlagen, die wir verwenden können.

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

Wie Sie sehen können, gehören die aktuellen Berechtigungen fĂŒr alle Dateien und Verzeichnisse 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

Ändern Sie die Berechtigungen aller Dateien, indem Sie den Benutzer root und die Gruppe named.

# chown root:named *

angeben. Doch fĂŒr data sollte der Besitzer 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

FĂŒgen Sie den folgenden Inhalt in die Datei der direkten Zone ein. Hier erstellen wir einen A-Eintrag fĂŒr localhost (golinuxhub-client) und einen weiteren fĂŒr den 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

FĂŒgen Sie als NĂ€chstes den Inhalt in die Datei der inversen Zone ein. Hier erstellen wir einen PTR-Eintrag fĂŒr golinuxhub-client und fĂŒr den 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.

Bevor wir den Dienst named-chroot, starten, ĂŒberprĂŒfen wir die Konfiguration der Zonendatei.

[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 sieht gut aus. ÜberprĂŒfen Sie nun die Konfigurationsdatei mit dem folgenden Befehl.

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

So, alles wurde erfolgreich ausgefĂŒhrt.

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

WICHTIGER HINWEIS: Ich habe SELinux im permissive-Modus.

# getenforce
Permissive

Alles sieht gut aus, also ist es Zeit, unseren Dienst zu 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: geladen (\/usr\/lib\/systemd\/system\/named-chroot.service; deaktiviert; Standardwert des Anbieters: deaktiviert)
   Active: aktiv (lÀuft) seit Mo, 12. Feb. 2018 21:53:23 IST; vor 19s
  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 "ÜberprĂŒfung der Zonen-Dateien ist deaktiviert"; 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

12. Feb 21:53:23 golinuxhub-client.example named[5330]: managed-keys-zone\/my_resolver: geladene Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 0.in-addr.arpa\/IN\/my_resolver: geladene Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 1.0.0.127.in-addr.arpa\/IN\/my_resolver: geladene Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone 1.168.192.in-addr.arpa\/IN\/my_resolver: geladene Seriennummer 1997022700
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone example\/IN\/my_resolver: geladene Seriennummer 1
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone localhost\/IN\/my_resolver: geladene Seriennummer 0
12. Feb 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: geladene Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: zone localhost.localdomain\/IN\/my_resolver: geladene Seriennummer 0
12. Feb 21:53:23 golinuxhub-client.example named[5330]: alle Zonen geladen
12. Feb 21:53:23 golinuxhub-client.example named[5330]: lÀuft
```bash
Stellen Sie sicher, dass resolv.conf Ihre IP-Adresse enthÀlt, damit sie als DNS-Server funktionieren kann.
```bash
# cat \/etc\/resolv.conf
search example
nameserver 192.168.1.7
```bash
Lassen Sie uns unseren DNS-Server fĂŒr die umgekehrte Zone mit dig ĂŒberprĂŒfen.
```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 Optionen: +cmd
;; Antwort erhalten:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40331
;; flags: qr aa rd ra; QUERY: 1, ANTWORT: 1, AUTHORITY: 1, ADDITIONAL: 2

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

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

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

;; ADDITIONALER ABSCHNITT:
example.                86400   IN      A       192.168.1.7

;; Abfragezeit: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; WANN: Mo, 12. Feb 22:13:17 IST 2018
;; MSG GRÖSSE  rcvd: 122

Wie Sie sehen, haben wir eine positive Antwort (ANTWORT) auf unsere Anfrage (ANFRAGE) erhalten.

[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
;; globale Optionen: +cmd
;; Antwort erhalten:
;; ->>HEADER<<- Opcode: QUERY, Status: NOERROR, ID: 55804
;; Flags: qr aa rd ra; QUERY: 1, ANTWORT: 1, AUTORITÄT: 1, ZUSÄTZLICH: 2

;; OPT PSEUDOSECTION:
; EDNS: Version: 0, Flags:; UDP: 4096
;; FRAGESEKTION:
;7.1.168.192.in-addr.arpa.      IN      PTR

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

;; AUTORITÄTSEKTION:
1.168.192.in-addr.arpa. 86400   IN      NS      example.

;; ZUSÄTZLICHE SEKTION:
example.                86400   IN      A       192.168.1.7

;; Abfragezeit: 1 msec
;; SERVER: 192.168.1.7#53(192.168.1.7)
;; BEI: Mo Feb 12 22:12:54 IST 2018
;; MSG GRÖSSE  empfangen: 122

Auf die gleiche Weise können wir die direkte Zone ĂŒberprĂŒfen.

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

Name:   golinuxhub-client.example
Adresse: 192.169.1.7

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

Name:   golinuxhub-server.example
Adresse: 192.168.1.5

Dieser Artikel ist etwas veraltet, da in RHEL 7 jetzt keine Konfigurationsdateien von bind mehr in chroot kopiert werden mĂŒssen. Schritt-fĂŒr-Schritt-Anleitung: Konfigurieren Sie den DNS-Server mit bind chroot (CentOS/RHEL 7).

Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster