GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gewusst wie:Autorisierender BIND9-DNS-Server unter CentOS 7:Installation und Konfiguration

Einführung

In diesem Anleitungsartikel führen wir Sie durch die Installation eines sicheren autoritativen BIND9-DNS-Servers auf CentOS 7

Was ist BIND?

BIND ist Open-Source-Software, die die DNS-Protokolle (Domain Name System) für das Internet implementiert. Es ist eine Referenzimplementierung dieser Protokolle, aber es ist auch eine produktionstaugliche Software, die für den Einsatz in hochvolumigen und hochzuverlässigen Anwendungen geeignet ist.
– ISC (Internet Systems Consortium)

Übersicht der Konfigurationsschritte

  1. Grundlegende Servervorbereitung.
  2. Installation der BIND-Softwarepakete.
  3. Konfiguration der BIND-Softwarepakete.
  4. Hinzufügen einer Testzone (Domain)
  5. Den DNS-Server testen

Voraussetzungen

Bevor Sie mit diesem Anleitungsartikel beginnen, müssen Sie zunächst sicherstellen, dass Sie diese Voraussetzungen erfüllt haben.

– CentOS 7 Server – Wenn Sie keinen Server zur Verfügung haben, können Sie einen über unsere VPS-Hosting-Services-Seite einrichten.
– Ihr bevorzugter Texteditor ist installiert – Wir werden nano in diesem Tutorial verwenden.

.

1 – Grundlegende Servervorbereitung

Stellen Sie zunächst sicher, dass Sie als Root-Benutzerkonto angemeldet sind.

sudo su -

Als nächstes werden wir sicherstellen, dass das Kernbetriebssystem vollständig aktualisiert wird.

yum update -y

Nachdem Ihr System nun vollständig aktualisiert ist, werden wir die Firewall aktualisieren (standardmäßig aktiviert ), um DNS (TCP Port 53 / UDP Port 53) den Zugriff auf Ihren Server zu ermöglichen.

firewall-cmd --permanent --zone public --add-port 53/tcp
firewall-cmd --permanent --zone public --add-port 53/udp 
firewall-cmd --reload

2 – Installation der BIND-DNS-Softwarepakete

Wir sind jetzt bereit, die BIND-Softwarepakete auf Ihrem Server zu installieren.

yum install -y bind bind-utils bind-chroot
  • binden : DNS-Server (Domain Name System) von Berkeley Internet Name Domain (BIND)
  • bind-utils : Dienstprogramme zum Abfragen von DNS-Nameservern
  • bind-chroot : Eine Chroot-Laufzeitumgebung für den ISC BIND DNS-Server

Nachdem Sie nun die erforderlichen BIND-Softwarepakete installiert haben, können wir die BIND-Dienste starten und sie so einstellen, dass sie beim Neustart des Servers automatisch gestartet werden.

systemctl start named
systemctl enable named

.

3 – Konfiguration des BIND-DNS-Servers

Beim Starten des BIND-DNS-Servers hängt das Chroot-Paket automatisch alle Konfigurationsdateien in /var/named/chroot ein Verzeichnis Ihres Servers. Wenn Sie BIND (oder irgendeinen anderen Prozess) in einem Chroot-Gefängnis ausführen, kann der Prozess einfach keinen Teil des Dateisystems außerhalb des Gefängnisses sehen.

Als Referenz, das Basisverzeichnis, in dem Sie für alle BIND-Konfigurationen arbeiten werden, ist /var/named/chroot

Wechseln wir zunächst für den Rest dieser Schritte in dieses Verzeichnis.

cd /var/named/chroot

Lassen Sie uns nun einige Verzeichnisse und eine Konfigurationseinstellungsdatei für Ihren neuen Server erstellen und den Besitz festlegen. Diese Verzeichnisse werden zum Speichern von Forward- und Reverse-Zonendateien für Ihren DNS-Server verwendet.

mkdir var/named/fwd-zones
mkdir var/named/rev-zones

chown -R named:named var/named/fwd-zones
chown -R named:named var/named/rev-zones

touch etc/zones.conf
chown root:named etc/zones.conf

Als Nächstes bearbeiten wir die etc/named.conf Konfigurationsdatei. Wir werden Sie durch die gesamte Einrichtung führen, damit Sie verstehen, was jede Option für Ihren Server tut.

nano etc/named.conf

Bei der Erstinstallation ist die Standardkonfigurationsdatei unten (wenn Sie zur letzten etc/named.conf springen möchten , finden Sie unten):

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
        listen-on port 53 { 127.0.0.1; };
        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; };
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

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

Die verfügbaren Konfigurationseinstellungen und Optionen in BIND sind sehr umfangreich. In diesem Artikel behandeln wir nur die Optionen, um Ihren Server als autoritativen DNS-Server einzurichten und Ihren Server vor rekursiven DNS-Verstärkungsangriffen zu schützen.

Für eine ausführlichere Erklärung all dieser Optionen empfehlen wir die Leute von Zytrax.com.

Höroptionen

Die erste Konfigurationsoption, die wir ändern werden, sind die Listening-Optionen für Ihren Server. Standardmäßig ist der Server so eingerichtet, dass er nur die lokale Loopback-Adresse (127.0.0.1) abhört. Wir werden dies ändern, um alle Schnittstellen auf Ihrem Server zu überwachen. Ersetzen Sie die folgenden Zeilen in den options { } -Klausel der Konfigurationsdatei.

        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };

ACLs (Zugriffskontrolllisten)

Wir werden der Konfiguration nun einige ACL-Regeln (Access Control List) hinzufügen. Diese ACLs werden verwendet, um die Sicherheitseinstellungen für die Abfragesuchoptionen sowie die rekursiven Abfrageoptionen zu erweitern. Die erste Regel – die wir „erlaubte Abfragen“ nennen – wird verwendet, um jeder Quelladresse zu erlauben, Ihren DNS-Server abzufragen. Die zweite Regel – wir nennen diese eine „allowed-recursion“ – wird verwendet, um die rekursive Suche nur auf die localhost-Adresse zu beschränken.

Fügen Sie die folgenden ACL-Richtlinienregeln direkt über den options { } hinzu Klausel.

// ACL - Allow queries from ANY source address
acl "allowed-queries" {
     any;
};

// ACL - Allow recursion from LOCALHOST only.
acl "allowed-recursion" {
    127.0.0.1;
     ::1;
};

options {
    ...
};

Als Nächstes ändern wir den Konfigurationswert von allow-query -Anweisungsvariable, um die neue ACL zu verwenden, die wir gerade erstellt haben. Die allow-query -Anweisung definiert, wer (d. h. Quellnetzwerke) Ihren DNS-Server abfragen darf. Ersetzen Sie die folgende Zeile innerhalb der options { } -Klausel der Konfigurationsdatei.

     allow-query     { "allowed-queries"; };

Rekursion einschränken

Jetzt müssen wir die Berechtigung zur Rekursionssuche auf Ihrem Server sichern. Rekursion ist eine Technik, bei der ein DNS-Server andere DNS-Server im Namen des anfragenden Clients abfragt, um den Namen vollständig aufzulösen, und dann eine Antwort an den Client zurücksendet. Angreifer können diese Technik verwenden, um DNS-Server mit aktivierter offener Rekursion dazu zu bringen, unwissentlich an einem DDoS-Angriff (Distributed Denial of Service) teilzunehmen. Wenn ein DNS-Server in Ihrem Netzwerk keine rekursiven Abfragen empfangen soll, sollte die Rekursion daher auf diesem Server deaktiviert oder gesichert werden, damit nicht autorisierte Quellen diese Technik nicht verwenden können.

     recursion yes;
     allow-recursion { "allowed-recursion"; };

Wir werden der Konfigurationsdatei jetzt eine Include-Anweisung hinzufügen. Diese Anweisung wird verwendet, um die autoritativen Zonendaten (Domänen) einzuschließen, für deren Reaktion Ihr Server konfiguriert wird. Fügen Sie die folgende Zeile unter dem Ende der option { } hinzu -Klausel direkt nach der letzten Include-Anweisung.

include "/etc/zones.conf";

Wir haben nun die Konfigurationsänderungen in der etc/named.conf abgeschlossen Konfigurationsdatei. Sie können Ihre Änderungen jetzt speichern und beenden.

.

Neue named.conf-Datei

Zur Überprüfung Ihre etc/named.conf Konfigurationsdatei sollte nun wie folgt aussehen:

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

// ACL - Allow queries from ANY source address
acl "allowed-queries" {
     any;
};

// ACL - Allow recursion from LOCALHOST only.
acl "allowed-recursion" {
    127.0.0.1;
    ::1;
};

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        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     { "allowed-queries"; };
        recursion yes;
        allow-recursion { "allowed-recursion"; };

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

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";
include "/etc/zones.conf";

.

4 – Hinzufügen Ihrer ersten Zone (Domain)

Wir werden jetzt Ihre erste Zone hinzufügen, für die Ihr DNS-Server autorisierend sein wird. Wir werden eine Testdomäne verwenden (example.tld ) für diesen Schritt als Beispiel.

Zuerst erstellen wir eine neue Datei im Verzeichnis var/named/fwd-zones die wir zuvor erstellt haben.

touch var/named/fwd-zones/example.tld.zone;
chown named:named var/named/fwd-zones/example.tld.zone;

Als Nächstes fügen wir die Beispiel-Zoneneintragsdaten für diese Domain hinzu. Bearbeiten Sie die neue Datei, die wir gerade erstellt haben, und fügen Sie die Zonendaten zur Konfigurationsdatei hinzu.

nano var/named/fwd-zones/example.tld.zone

Zonendaten

; zone file for example.tld
$TTL 14400     ; 4 hours - default TTL for zone
$ORIGIN example.tld.

;; SOA Resource Record
@             IN      SOA   ns1.example.tld. hostmaster.example.tld. (
                        2015010100 ; se = serial number
                        12h        ; ref = refresh
                        15m        ; ret = update retry
                        3w         ; ex = expiry
                        3h         ; min = minimum
                        )

;; Name Servers
              IN      NS      ns1.example.com.
ns1           IN      A       192.0.2.3

;; Mail Exchange Resource Records
@             IN      MX  10  mail.example.tld.

;; Web Server Resource Records
@             IN      A       192.0.2.3
www           IN      CNAME   @

;; FTP Server Resource Records
ftp           IN      A       192.0.2.3

Wenn Sie alle erforderlichen Änderungen vorgenommen haben, speichern und beenden Sie.

Jetzt bearbeiten wir die etc/zones.conf Konfigurationsdatei, um die gerade erstellte neue Domäne aufzunehmen.

nano etc/zones.conf

Fügen Sie nun die folgenden Parameter zur Konfigurationsdatei hinzu.

zone "example.tld" in {
     type master;
     file "fwd-zones/example.tld.zone";
     allow-transfer { none; };
};

Wenn Sie fertig sind, speichern und beenden Sie diese Datei.

Wir sind jetzt bereit, Ihre DNS-Dienste neu zu starten, damit alle neuen Konfigurationen geladen werden.

systemctl restart named

Wenn alles erfolgreich und ohne Fehler neu gestartet wurde, sollten Sie die folgende Antwort erhalten:

Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]

.

5 – Testen Ihres DNS-Servers

Wir sind nun bereit, die Funktionalität Ihres neuen DNS-Servers zu testen. Zuerst werden wir bestätigen, dass Ihr DNS-Server für die Zone (Domäne) antwortet, die wir gerade erstellt haben. Führen Sie den folgenden Befehl aus:

dig example.tld -t ANY @localhost

Sie sollten die folgende ähnliche Antwortausgabe von Ihrem Server sehen. Die wichtigsten Antwortwerte, nach denen gesucht werden muss, sind ;; ANSWER SECTION: Werte. Diese Ausgabe teilt Ihnen mit, dass der Server auf Ihre Anfrage mit den Datensatzdaten geantwortet hat, die Sie in den vorherigen Schritten eingegeben haben.

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.2 <<>> example.tld -t ANY @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61421
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.tld.                   IN      ANY

;; ANSWER SECTION:
example.tld.            14400   IN      SOA     ns1.example.tld. hostmaster.example.tld. 2015010100 43200 900 1814400 10800
example.tld.            14400   IN      NS      ns1.example.tld.
example.tld.            14400   IN      MX      10 mail.example.tld.
example.tld.            14400   IN      A       192.0.2.3

;; ADDITIONAL SECTION:
ns1.example.tld.        14400   IN      A       192.0.2.3

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 
;; MSG SIZE  rcvd: 147

Der zweite Test, den wir durchführen werden, besteht darin, zu überprüfen, ob Ihr Server auf rekursive Suchen von localhost antwortet. Führen Sie den folgenden Befehl aus, um den Test zu starten:

dig google.com -t ANY @localhost

Wenn der Server wie erwartet eingerichtet ist, sollten Sie einen ähnlichen rekursiven ;; ANSWER SECTION: Antwort.

;; ANSWER SECTION:
google.com.             86400   IN      SOA     ns1.google.com. dns-admin.google.com. 4294967295 7200 1800 1209600 300
google.com.             600     IN      MX      50 alt4.aspmx.l.google.com.
google.com.             600     IN      MX      40 alt3.aspmx.l.google.com.
google.com.             600     IN      MX      10 aspmx.l.google.com.
google.com.             600     IN      MX      20 alt1.aspmx.l.google.com.
google.com.             600     IN      MX      30 alt2.aspmx.l.google.com.
google.com.             3600    IN      TXT     "v=spf1 include:_spf.google.com ~all"
google.com.             86400   IN      TYPE257 \# 19 0005697373756573796D616E7465632E636F6D
google.com.             300     IN      AAAA    2607:f8b0:4008:804::200e
google.com.             300     IN      A       216.58.219.78
google.com.             172800  IN      NS      ns1.google.com.
google.com.             172800  IN      NS      ns3.google.com.
google.com.             172800  IN      NS      ns4.google.com.
google.com.             172800  IN      NS      ns2.google.com.

;; AUTHORITY SECTION:
google.com.             172800  IN      NS      ns4.google.com.
google.com.             172800  IN      NS      ns1.google.com.
google.com.             172800  IN      NS      ns3.google.com.
google.com.             172800  IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.         172800  IN      A       216.239.34.10
ns1.google.com.         172800  IN      A       216.239.32.10
ns4.google.com.         172800  IN      A       216.239.38.10
ns3.google.com.         172800  IN      A       216.239.36.10

Der letzte Test, den wir durchführen werden, besteht darin, zu bestätigen, dass Ihr Server NICHT ist offen für einen DNS-Amplification-Angriff. Die Leute von openresolver.com haben einen einfachen Test eingerichtet, den Sie mit dig verwenden können :

dig +short test.openresolver.com TXT @1.2.3.4

      (replace 1.2.3.4 with the IP address or domain name of the DNS server you are testing)

Eine Antwort von "open-resolver-detected" zeigt an, dass Sie die Rekursion aktiviert haben. Keine Antwort ist in diesem Fall eine gute Sache .

Auf der Website openresolver.com steht auch ein browserbasiertes Tool zum Testen dieser Schwachstelle zur Verfügung.

Beim Testen mit Ihrer öffentlichen IP-Adresse sollten Sie die folgende ähnliche Antwort erhalten:

Erfolgreicher Open Recursive DNS Resolver Test

Herzlichen Glückwunsch!

Sie haben jetzt einen autoritativen DNS-Server konfiguriert und ausgeführt. Vielen Dank fürs Lesen! Sehen Sie sich unten einige der verwandten Artikel an und vielen Dank, dass Sie unsere zuverlässigen VPS-Hosting-Lösungen bei Atlantic.Net ausprobieren.


Linux
  1. So installieren Sie den DNS-Server unter RHEL 8 / CentOS 8 Linux

  2. So überprüfen Sie die Konfigurationsdateien von bind9 (DNS-Server).

  3. So installieren Sie DenyHost unter CentOS 6.7

  4. So installieren Sie PostgreSQL-Server auf CentOS 8

  5. So installieren Sie Redis unter CentOS 7

So installieren Sie Nginx unter CentOS 7

So installieren Sie Webmin unter CentOS 7

So installieren Sie ownCloud auf CentOS 7

So installieren Sie MyWebSQL unter CentOS 8

So installieren Sie die Reliktserverüberwachung unter CentOS 8

So installieren Sie WordPress auf einem CentOS 8-Server