GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Richten Sie die Response Policy Zone (RPZ) im BIND-Resolver unter CentOS/RHEL ein

Dieses Tutorial zeigt Ihnen, wie Sie öffentliche DNS-Einträge in Ihrem BIND-DNS-Resolver mit Antwortrichtlinienzone überschreiben (RPZ) auf CentOS/RHEL.

Was ist die Reaktionsrichtlinienzone?

Antwortrichtlinienzone (RPZ) ermöglicht es einem DNS-Resolver, DNS-Einträge zu ändern. Es wurde ursprünglich entwickelt, um den Zugriff auf gefährliche Websites zu blockieren. Wenn ein Computer beispielsweise die IP-Adresse einer bekanntermaßen gefährlichen Website abfragt, die Malware verbreitet, kann der DNS-Resolver 127.0.0.1 zurückgeben als DNS-Antwort, sodass der Computer keine Verbindung zu der gefährlichen Site herstellen kann. Dies ist der ursprüngliche Anwendungsfall. Daher wird die Reaktionsrichtlinienzone auch als DNS-Firewall bezeichnet .

Sie können RPZ auf andere Weise verwenden. Zum Beispiel

  • Wenn Sie selbst gehostete Dienste wie Nextcloud im lokalen Netzwerk haben, können Sie RPZ verwenden, um Ihre Nextcloud-Domain (nextcloud.your-domain.com) auf die lokale IP-Adresse zu verweisen, sodass Sie nicht ausgehen müssen mit dem Internet und gehen Sie dann zurück zu Ihrem lokalen Netzwerk, um auf den Nextcloud-Server zuzugreifen.
  • Eltern können mit RPZ verhindern, dass ihre Kinder auf Pornoseiten zugreifen.
  • Sie können unerwünschte Werbung blockieren.
  • Ich installiere viele Webanwendungen auf meinem VPS. Wenn die Web-App nicht für den öffentlichen Zugriff bestimmt ist, füge ich den DNS-Eintrag nur in BIND RPZ hinzu und veröffentliche keinen DNS-Eintrag bei meinem Domain-Registrar, um Hacking zu verhindern.

Ja, Sie können einen DNS-Eintrag in /etc/hosts erstellen Datei auf dem lokalen Computer, um öffentliche DNS-Einträge zu überschreiben, aber sie lässt sich nicht gut skalieren. Außerdem erlauben es iOS und Android nicht, lokale DNS-Einträge zu erstellen. Wäre es nicht schön, wenn der BIND-DNS-Resolver den öffentlichen DNS-Eintrag überschreibt, sodass alle Geräte im Netzwerk, die den BIND-Resolver verwenden, den benutzerdefinierten DNS-Eintrag verwenden können?

Voraussetzungen

Um diesem Tutorial zu folgen, wird davon ausgegangen, dass auf Ihrem CentOS/RHEL-Server ein BIND-DNS-Resolver ausgeführt wird. Wenn nicht, lesen Sie bitte das folgende Tutorial, um den BIND-Resolver einzurichten.

  • Richten Sie Ihren eigenen BIND9-DNS-Resolver auf CentOS 8/RHEL 8 ein

Sobald Ihr BIND-Resolver betriebsbereit ist, befolgen Sie die nachstehenden Anweisungen.

Einrichten der BIND-Antwortrichtlinienzone auf CentOS/RHEL-Server

Bearbeiten Sie zuerst die named.conf Datei mit einem Befehlszeilen-Texteditor wie Nano.

sudo nano /etc/named.conf

Fügen Sie die folgenden Zeilen in den options {...} hinzu -Klausel zum Aktivieren der Reaktionsrichtlinienzone. (Die erste Zeile ist ein Kommentar.)

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Scrollen Sie dann zum Ende dieser Datei und fügen Sie die RPZ-Zone in dieser Datei hinzu.

zone "rpz.local" {
    type master;
    file "rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
};

Hinweise:

  • Sie können in der file anstelle eines einfachen Dateinamens einen absoluten Pfad verwenden Richtlinie. BIND würde davon ausgehen, dass sich die Datei in /var/named/ befindet .
  • RPZ-Zonen sollten nur Abfragen von localhost zulassen. Sie müssen keine lokalen Netzwerkclients hinzufügen.
  • Ersetzen Sie 12.34.56.78 mit der IP-Adresse des Slave-BIND-DNS-Resolvers, der Zonentransfers durchführen darf. Wenn es nur einen DNS-Resolver gibt, können Sie localhost verwenden etwa so:allow-transfer { localhost; };

Es wird empfohlen, eine separate Protokolldatei für RPZ zu verwenden, um das Protokoll besser zu analysieren, also fügen Sie die folgenden Zeilen in logging {...}; hinzu Klausel.

    channel rpzlog {
  	file "/var/log/named/rpz.log" versions unlimited size 100m;
    	print-time yes;
    	print-category yes;
    	print-severity yes;
    	severity info;
    };
    category rpz { rpzlog; };

Speichern und schließen Sie die Datei. Erstellen Sie dann /var/log/named/ Verzeichnis und machen named als Eigentümer.

sudo mkdir /var/log/named/
sudo chown named:named /var/log/named/ -R

Dann müssen wir die Zonendatei erstellen. Anstatt eine Zonendatei von Grund auf neu zu erstellen, können wir eine Zonenvorlagendatei verwenden. Kopieren Sie den Inhalt von named.empty in eine neue Datei.

sudo cp /var/named/named.empty /var/named/rpz.local

Bearbeiten Sie die Zonendatei.

sudo nano /var/named/rpz.local

Es besteht keine Notwendigkeit, den bestehenden Inhalt zu ändern. Wir fügen einfach unsere benutzerdefinierten DNS-Einträge hinzu. Wenn Sie beispielsweise einen Nextcloud-Server im lokalen Netzwerk mit der IP-Adresse 192.168.0.103 haben, fügen Sie den folgenden DNS-Eintrag hinzu, damit Nextcloud-Clients nicht ins Internet gehen müssen, um sich mit dem Nextcloud-Server zu verbinden .

nextcloud.your-domain.com      A   192.168.0.103

Wenn Sie nicht möchten, dass Ihre Kinder Pornoseiten wie pornhub.com besuchen, fügen Sie dieser Datei die folgende Zeile hinzu, um die gesamte Domäne pornhub.com zu blockieren.

*.pornhub.com          CNAME  .

Wenn Sie keine Google Adsense-Anzeigen auf Webseiten sehen möchten, können Sie die folgende Zeile hinzufügen, um doubleclick.net zu blockieren Domain, die zur Bereitstellung von Adsense-Anzeigen verwendet wird.

*.doubleclick.net      CNAME   .

Um den MX-Eintrag für einen Domainnamen zu überschreiben, fügen Sie eine Zeile wie unten hinzu.

example.com         MX     0    mail.example.com.

Hinweis dass alle linken Namen NICHT mit einem Punkt enden dürfen und alle rechten Namen mit einem Punkt enden müssen.


Speichern und schließen Sie die Datei. Als nächstes sollten wir named setzen als Gruppeneigentümer von /var/named/rpz.local file oder named kann diese Zone nicht laden.

sudo chown root:named /var/named/rpz.local

Führen Sie als Nächstes den folgenden Befehl aus, um zu prüfen, ob Syntaxfehler in der Hauptkonfigurationsdatei vorhanden sind. Eine stille Ausgabe zeigt an, dass keine Fehler gefunden wurden.

sudo named-checkconf

Überprüfen Sie dann die Syntax der RPZ-Zonendateien.

sudo named-checkzone rpz /var/named/rpz.local

Wenn keine Fehler gefunden werden, starten Sie BIND neu.

sudo systemctl restart named

Jetzt können Sie dig ausführen Befehl auf dem BIND-Server, um zu sehen, ob RPZ funktioniert. Fragen Sie beispielsweise einen DNS-Eintrag eines Domänennamens ab, der in der Antwortrichtlinienzone enthalten ist.

dig A nextcloud.your-domain.com @127.0.0.1

Sie sollten in der Befehlsausgabe so etwas wie unten sehen, was darauf hinweist, dass die DNS-Antwort von der lokalen RPZ bereitgestellt wurde.

;; AUTHORITY SECTION:
rpz.local			86400	IN	NS	localhost.

Sie können auch das BIND9-Abfrageprotokoll überprüfen.

sudo tail /var/log/named/rpz.log

Sie würden so etwas wie unten sehen, was bedeutet, dass die Antwort von der lokalen RPZ geliefert wurde.

(example.com): rpz QNAME Local-Data rewrite example.com via example.com.rpz.local

Der Fedora-Client verwendet kein RPZ?

Standardmäßig verwendet Fedora kein RPZ. Sie können den dig verwenden Befehlszeilendienstprogramm, um die IP-Adresse eines Hostnamens in der RPZ-Zone zu finden, aber wenn Sie den Hostnamen anpingen, kann es die IP-Adresse nicht finden.

Um dieses Problem zu lösen, müssen Sie den hosts-Parameter in /etc/nsswitch.conf ändern Datei auf dem Fedora-Client.

sudo nano /etc/nsswitch.conf

Standardmäßig ist der hosts-Parameter wie folgt definiert:

hosts:   files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

Ändern Sie es in:

hosts:   files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

Speichern und schließen Sie die Datei. RPZ sollte jetzt funktionieren.

RPZ mit Forwardern verwenden

Wenn Sie eine fowarders hinzufügen Direktive wie unten in den options -Klausel in /etc/named.conf Datei, dann wird Ihr BIND-Resolver zu einem Forwarder, der DNS-Anfragen an einen Upstream-DNS-Resolver wie 8.8.8.8 weiterleitet .

options {
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        max-cache-size 100m;
        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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { localhost; 10.10.60.0/24;};

        //enable response policy zone. 
        response-policy { 
           zone "rpz.local"; 
        };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        ...
};

Die Antwortrichtlinienzone funktioniert mit dieser Weiterleitungseinrichtung. Bind fragt zuerst die lokale Reaktionsrichtlinienzone ab. Wenn der DNS-Eintrag nicht in der RPZ gefunden wird, wird die Anfrage an einen Upstream-DNS-Resolver weitergeleitet. Möglicherweise möchten Sie einen Forwarder verwenden, um die DNS-Auflösung zu beschleunigen, wenn Ihr eigener BIND-Resolver zu viel Zeit mit dem Auflösen von DNS-Namen benötigt.

Zonenübertragung konfigurieren

Wenn Sie einen anderen BIND-DNS-Resolver haben, können Sie ihn als Slave-Resolver konfigurieren, um automatisch Updates vom Master-DNS-Resolver zu erhalten.

Zuerst müssen Sie die /etc/named.conf bearbeiten Datei auf dem Master-DNS-Resolver .

sudo nano /etc/named.conf

Fügen Sie die IP-Adresse des Slave-DNS-Resolvers zum allow-transfer hinzu Richtlinie.

zone "rpz.local" {
    type master;
    file "/etc/bind/db.rpz.local";
    allow-query { localhost; };
    allow-transfer { 12.34.56.78; };
    also-notify { 12.34.56.78; };
};

Wenn Sie mehrere Slave-DNS-Resolver haben, fügen Sie mehrere IP-Adressen wie unten hinzu.

 allow-transfer { 12.34.56.78; 12.34.56.79; };

Die also-notify -Anweisung bewirkt, dass der Master-DNS-Resolver eine Benachrichtigung an den Slave-Resolver sendet, wenn die RPZ-Zone geändert wird. Speichern und schließen Sie die Datei. Starten Sie BIND neu, damit die Änderungen wirksam werden.

sudo systemctl restart named

Wenn auf dem Master-DNS-Resolver eine Firewall läuft, müssen Sie dem Slave-DNS-Resolver erlauben, sich mit Port 53 zu verbinden.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="12.34.56.78" accept'
sudo systemctl reload firewalld

Bearbeiten Sie als Nächstes die /etc/named.conf Datei auf dem Slave-DNS-Resolver .

sudo nano /etc/named.conf

Fügen Sie die folgenden Zeilen in den options {...} hinzu -Klausel zum Aktivieren der Reaktionsrichtlinienzone. (Die erste Zeile ist ein Kommentar.)

//enable response policy zone. 
response-policy { 
    zone "rpz.local"; 
};

Fügen Sie dann am Ende dieser Datei eine Slave-RPZ-Zone hinzu. Ersetzen Sie 11.22.33.44 mit der IP-Adresse des Master-DNS-Resolvers.

zone "rpz.local" {
    type slave;
    file "rpz.local";
    masters { 11.22.33.44;};
    allow-notify { 11.22.33.44; };
    allow-transfer { none; };
    allow-query { localhost; };
};

Speichern und schließen Sie die Datei.

Sie müssen auch die Firewall des Slave-Resolvers konfigurieren, damit der Master-DNS-Resolver notify senden kann Nachrichten.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="11.22.33.44" accept'
sudo systemctl reload firewalld

Führen Sie als Nächstes den folgenden Befehl aus, um zu prüfen, ob Syntaxfehler in der Hauptkonfigurationsdatei vorhanden sind. Eine stille Ausgabe zeigt an, dass keine Fehler gefunden wurden.

sudo named-checkconf

Wenn keine Fehler gefunden werden, starten Sie BIND neu.

sudo systemctl restart named

Nach dem Neustart von BIND beginnt der Zonentransfer sofort. Überprüfen Sie das BIND9-Protokoll mit dem folgenden Befehl.

sudo journalctl -eu named

Sie können Meldungen wie unten sehen, die darauf hinweisen, dass die Zonenübertragung erfolgreich war.

transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer status: success
transfer of 'rpz.local/IN' from xx.xx.xx.xx#53: Transfer completed: 1 messages, 34 records, 899 bytes, 0.248 secs (3625 bytes/sec)

Die Zonendatei wird als /var/named/rpz.local gespeichert auf dem Slave-Resolver.

Hinweis: Immer wenn Sie die RPZ-Zone auf dem Master-Resolver ändern, müssen Sie die Seriennummer aktualisieren. Machen Sie es größer, damit Slave-Resolver wissen, dass die RPZ-Zone geändert wurde.

Erstellen mehrerer RPZ-Zonen

Manchmal möchten Sie möglicherweise nicht, dass bestimmte DNS-Einträge an Slave-Resolver übertragen werden. Sie können eine separate RPZ-Zone erstellen. Bearbeiten Sie die /etc/named.conf Datei.

sudo nano /etcnamed.conf

Fügen Sie eine neue RPZ-Zone hinzu.

//enable response policy zone. 
response-policy { 
    zone "rpz.local";
    zone "rpz.local.notransfer"; 
};

Fügen Sie am Ende dieser Datei eine Definition für die neue Zone hinzu.

zone "rpz.local.notransfer" {
    type master;
    file "/var/named/rpz.local.notransfer";
    allow-query { localhost; };
    allow-transfer { localhost; };
};

Speichern und schließen Sie die Datei. Dann müssen wir die Zonendatei erstellen. Anstatt eine Zonendatei von Grund auf neu zu erstellen, können wir eine Zonenvorlagendatei verwenden. Kopieren Sie den Inhalt von named.empty in eine neue Datei.

sudo cp /var/named/named.empty /var/named/rpz.local.notransfer

Bearbeiten Sie die Zonendatei.

sudo nano /var/named/rpz.local.notransfer

Cent OS
  1. Konfigurieren Sie DNS auf CentOS 5 / RHEL 5 mit Chroot

  2. So konfigurieren Sie den DNS-Server unter CentOS 5 / RHEL 5

  3. So legen Sie den Hostnamen in CentOS 7 / RHEL 7 fest oder ändern ihn

  4. So konfigurieren Sie Slave-DNS (BIND) unter CentOS 7 / RHEL 7

  5. So richten Sie einen DNS (Bind)-Server unter CentOS/RHEL 7/6/5 ein

So konfigurieren Sie den DNS (BIND)-Server unter CentOS 8 / RHEL 8

So ändern Sie die Zeitzone in CentOS 8 / RHEL 8

Richten Sie die Response Policy Zone (RPZ) im BIND-Resolver unter Debian/Ubuntu ein

Richten Sie SpamAssassin auf CentOS/RHEL ein, um E-Mail-Spam zu blockieren

So richten Sie ein IPsec-basiertes VPN mit Strongswan unter CentOS/RHEL 8 ein

So konfigurieren Sie FirewallD in RHEL, CentOS und Fedora