Exemplarische Vorgehensweise zum Einrichten eines BIND-DNS-Servers in einer Chroot-Umgebung für Red Hat (RHEL / CentOS) 7

Eine Übersetzung des Artikels wurde für Studenten des Linux-Sicherheitskurses vorbereitet. Ist es interessant, sich in diese Richtung zu entwickeln? Sehen Sie sich die Aufzeichnung der Sendung der Meisterklasse von Ivan Piskunov „Sicherheit unter Linux im Vergleich zu Windows und MacOS“ an.



In diesem Artikel werde ich die Schritte zum Einrichten eines DNS-Servers unter RHEL 7 oder CentOS 7 beschreiben. Zur Demonstration habe ich Red Hat Enterprise Linux 7.4 verwendet. Unser Ziel ist es, einen A-Datensatz und einen PTR-Datensatz für die Vorwärts- bzw. Rückwärtssuchzonen zu erstellen.


Installieren Sie zuerst die erforderlichen RPM-Pakete für den DNS-Server.


ANMERKUNG: Für RHEL müssen Sie über ein aktives RHN-Abonnement verfügen, oder Sie können ein lokales Offline-Repository konfigurieren, mit dem der yum-Paketmanager die erforderlichen 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, 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 für den Befehl cp , um Eigentum und Besitz 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 mit der Zone verknüpften Dateien an einen 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       . ```bash # cd /var/named/chroot/etc/ 

Löschen Sie den Inhalt von named.conf und fügen Sie Folgendes 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"; }; 

Informationen zur Zone sollten zu /var/named/chroot/etc/named.rfc1912.zones hinzugefügt werden . Fügen Sie die folgenden Einträge hinzu. Die Datei example.zone ist die Forward-Lookup-Datei, und example.rzone ist die Reverse-Zone-Datei.


WICHTIGER HINWEIS: Die Reverse-Lookup-Zone enthält 1.168.192, da meine IP-Adresse 192.168.1.7 lautet


 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 den Zonen zugeordneten Dateien befinden sich hier:


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

Erstellen Sie als Nächstes Dateien für die Vorwärts- und Rückwärtszone. Die Dateinamen sind die gleichen 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 zu 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 Rechte aller Dateien, indem Sie root und die benannte Gruppe als Eigentümer des Benutzers angeben.


 # chown root:named * 

Für Daten muss der Eigentümer jedoch benannt werden: 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 der Weiterleitungszonendatei den folgenden Inhalt hinzu. Hier erstellen wir einen A-Datensatz 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 zur Reverse Zone-Datei hinzu. Hier erstellen wir einen PTR-Datensatz für den Golinuxhub-Client und für den 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. 

Überprüfen Sie die Konfiguration der Zonendatei, bevor Sie den Named-Chroot-Dienst starten.


 [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 

Also ist alles erfolgreich.


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

WICHTIGER HINWEIS: Mein SELinux befindet sich im zulässigen Modus


 # getenforce Permissive 

Alles sieht gut aus, also ist es Zeit, unseren Named-Chroot-Service zu starten.


 [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 

Wie Sie sehen, haben wir eine positive Antwort (ANTWORT) auf unsere Anfrage (QUERY) 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 ;; 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 

Ebenso können wir die direkte Zone überprüfen.


 [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 

Dieser Artikel ist etwas veraltet, da RHEL 7 keine Bindungskonfigurationsdateien mehr nach chroot kopieren muss. Schritt-für-Schritt-Anleitung: Konfigurieren Sie den DNS-Server mit Bind Chroot (CentOS / RHEL 7) .

Source: https://habr.com/ru/post/de461281/


All Articles