GNU/Linux >> Znalost Linux >  >> Cent OS

Nastavte zónu zásad odezvy (RPZ) v BIND Resolver na CentOS/RHEL

Tento tutoriál vám ukáže, jak přepsat veřejné záznamy DNS ve vašem překladači BIND DNS pomocí zóny zásad odezvy (RPZ) na CentOS/RHEL.

Co je zóna zásad odezvy?

Zóna zásad odpovědí (RPZ) umožňuje překladači DNS upravovat záznamy DNS. Původně byl vyvinut jako způsob, jak blokovat přístup k nebezpečným webům. Pokud se například počítač dotáže na IP adresu známého nebezpečného webu, který šíří malware, může DNS resolver vrátit 127.0.0.1 jako odpověď DNS, takže počítač se nemůže připojit k nebezpečné stránce. Toto je původní případ použití. Jako taková je zóna zásad odezvy známá také jako DNS firewall .

RPZ můžete využít i jinak. Například,

  • Pokud máte v místní síti vlastní služby, jako je Nextcloud, můžete pomocí RPZ nasměrovat svou doménu Nextcloud (nextcloud.vaše-doména.com) na místní IP adresu, takže nemusíte odcházet k Internetu a poté se vraťte do místní sítě pro přístup k serveru Nextcloud.
  • Rodiče mohou pomocí RPZ zablokovat svým dětem přístup na porno stránky.
  • Nežádoucí reklamy můžete blokovat.
  • Na své VPS instaluji mnoho webových aplikací. Když webová aplikace není určena pro veřejný přístup, přidám záznam DNS pouze do BIND RPZ a nezveřejňuji záznam DNS u svého registrátora domény, abych zabránil hackování.

Ano, záznam DNS můžete vytvořit v /etc/hosts soubor na místním počítači přepsat veřejné záznamy DNS, ale neškáluje se dobře. Kromě toho vám iOS a Android neumožňují vytvářet místní záznamy DNS. Nebylo by hezké, kdyby překladač DNS BIND přepsal veřejný záznam DNS, takže všechna zařízení v síti používající překladač BIND mohla používat vlastní DNS záznam?

Předpoklady

Chcete-li postupovat podle tohoto návodu, předpokládá se, že máte na serveru CentOS/RHEL spuštěný BIND DNS resolver. Pokud ne, přečtěte si prosím následující návod k nastavení BIND resolveru.

  • Nastavte si svůj vlastní BIND9 DNS Resolver na CentOS 8/RHEL 8

Jakmile bude váš BIND Resolver spuštěn a spuštěn, postupujte podle pokynů níže.

Jak nastavit zónu zásad BIND Response Policy na serveru CentOS/RHEL

Nejprve upravte named.conf pomocí textového editoru příkazového řádku, jako je Nano.

sudo nano /etc/named.conf

Přidejte následující řádky do options {...} klauzule pro povolení zóny zásad odezvy. (První řádek je komentář.)

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

Poté přejděte dolů na konec tohoto souboru a přidejte do tohoto souboru zónu RPZ.

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

Poznámky:

  • V file můžete místo jednoduchého názvu souboru použít absolutní cestu směrnice. BIND předpokládá, že soubor je v /var/named/ .
  • Zóny RPZ by měly umožňovat dotazy pouze z localhost. Není třeba přidávat klienty místní sítě.
  • Nahraďte 12.34.56.78 s IP adresou slave DNS resolveru BIND, který má povoleno provádět zónový přenos. Pokud existuje pouze jeden DNS resolver, můžete použít localhost takto:allow-transfer { localhost; };

Pro lepší analýzu protokolu se doporučuje použít samostatný soubor protokolu pro RPZ, proto přidejte následující řádky do logging {...}; doložka.

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

Uložte a zavřete soubor. Poté vytvořte /var/log/named/ adresář a make named jako vlastník.

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

Poté musíme vytvořit soubor zóny. Místo vytvoření souboru zóny od začátku můžeme použít soubor šablony zóny. Zkopírujte obsah named.empty do nového souboru.

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

Upravte soubor zóny.

sudo nano /var/named/rpz.local

Není třeba měnit stávající obsah. My pouze přidáme naše vlastní DNS záznamy. Pokud máte například v místní síti server Nextcloud s IP adresou 192.168.0.103, přidáte následující záznam DNS, takže klienti Nextcloud nemusí chodit na internet, aby se mohli připojit k serveru Nextcloud .

nextcloud.your-domain.com      A   192.168.0.103

Pokud nechcete, aby vaše děti navštěvovaly porno stránky, jako je pornhub.com, přidejte do tohoto souboru následující řádek, abyste zablokovali celou doménu pornhub.com.

*.pornhub.com          CNAME  .

Pokud nechcete, aby se vám na webových stránkách zobrazovaly reklamy Google Adsense, můžete přidat následující řádek a blokovat doubleclick.net doména, která se používá k zobrazování reklam AdSense.

*.doubleclick.net      CNAME   .

Chcete-li přepsat záznam MX pro název domény, přidejte řádek jako níže.

example.com         MX     0    mail.example.com.

Poznámka že všechna levá jména NESMÍ končit tečkou a všechna pravá jména musí končit tečkou.


Uložte a zavřete soubor. Dále bychom měli nastavit named jako vlastník skupiny /var/named/rpz.local soubor nebo pojmenované nebudou moci načíst tuto zónu.

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

Dále spusťte následující příkaz a zkontrolujte, zda v hlavním konfiguračním souboru nejsou chyby syntaxe. Tichý výstup znamená, že nebyly nalezeny žádné chyby.

sudo named-checkconf

Poté zkontrolujte syntaxi souborů zóny RPZ.

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

Pokud nejsou nalezeny žádné chyby, restartujte BIND.

sudo systemctl restart named

Nyní můžete spustit dig příkaz na serveru BIND, abyste zjistili, zda RPZ funguje. Dotazujte se například na záznam DNS názvu domény, který je součástí zóny zásad odezvy.

dig A nextcloud.your-domain.com @127.0.0.1

Ve výstupu příkazu byste měli vidět něco jako níže, což znamená, že odpověď DNS byla doručena z místního RPZ.

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

Můžete také zkontrolovat protokol dotazů BIND9.

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

Uvidíte něco podobného níže, což znamená, že odpověď byla doručena z místního RPZ.

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

Klient Fedora nepoužívá RPZ?

Ve výchozím nastavení Fedora nepoužívá RPZ. Můžete použít dig nástroj příkazového řádku k nalezení IP adresy názvu hostitele v zóně RPZ, ale pokud na název hostitele odešlete příkaz ping, nemůže IP adresu najít.

Chcete-li tento problém vyřešit, musíte změnit parametr hosts v /etc/nsswitch.conf soubor na klientovi Fedory.

sudo nano /etc/nsswitch.conf

Ve výchozím nastavení je parametr hosts definován jako:

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

Změňte jej na:

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

Uložte a zavřete soubor. RPZ by nyní mělo fungovat.

Používání RPZ s forwardery

Pokud přidáte fowarders jako níže v options klauzule v /etc/named.conf soubor, pak se váš BIND resolver stane forwarderem, který bude předávat DNS požadavky na upstream DNS resolver, jako je 8.8.8.8 .

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

Zóna zásad odezvy funguje s tímto nastavením předávání. Bind se nejprve dotáže místní zóny zásad odezvy. Pokud DNS záznam není v RPZ nalezen, bude požadavek předán upstreamovému DNS resolveru. Možná budete chtít použít forwarder k urychlení překladu DNS, když vašemu vlastnímu překladači BIND zabere příliš mnoho času překlad názvů DNS.

Konfigurace přenosu zóny

Pokud máte jiný BIND DNS resolver, můžete jej nakonfigurovat jako slave resolver, aby automaticky přijímal aktualizace z hlavního DNS resolveru.

Nejprve musíte upravit /etc/named.conf soubor na hlavním překladači DNS .

sudo nano /etc/named.conf

Přidejte IP adresu podřízeného DNS resolveru do allow-transfer směrnice.

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

Pokud máte více podřízených DNS resolverů, přidejte více IP adres, jak je uvedeno níže.

 allow-transfer { 12.34.56.78; 12.34.56.79; };

also-notify direktiva způsobí, že hlavní překladač DNS odešle zprávu s upozorněním podřízenému překladači, když se změní zóna RPZ. Uložte a zavřete soubor. Restartujte BIND, aby se změny projevily.

sudo systemctl restart named

Pokud je na hlavním překladači DNS spuštěna brána firewall, musíte podřízenému překladači DNS povolit připojení k portu 53.

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

Dále upravte /etc/named.conf soubor na slave DNS resolveru .

sudo nano /etc/named.conf

Přidejte následující řádky do options {...} klauzule pro povolení zóny zásad odezvy. (První řádek je komentář.)

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

Poté přidejte podřízenou zónu RPZ na konec tohoto souboru. Nahraďte 11.22.33.44 s IP adresou hlavního DNS resolveru.

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

Uložte a zavřete soubor.

Musíte také nakonfigurovat bránu firewall podřízeného resolveru, aby umožnil hlavnímu DNS resolveru posílat notify zprávy.

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

Dále spusťte následující příkaz a zkontrolujte, zda v hlavním konfiguračním souboru nejsou chyby syntaxe. Tichý výstup znamená, že nebyly nalezeny žádné chyby.

sudo named-checkconf

Pokud nejsou nalezeny žádné chyby, restartujte BIND.

sudo systemctl restart named

Po restartu BIND se okamžitě spustí přenos zóny. Zkontrolujte protokol BIND9 pomocí následujícího příkazu.

sudo journalctl -eu named

Můžete vidět zprávy jako níže, které indikují, že přenos zóny byl úspěšný.

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)

Soubor zóny bude uložen jako /var/named/rpz.local na podřízeném resolveru.

Poznámka: Kdykoli upravíte zónu RPZ na hlavním překladači, musíte aktualizovat sériové číslo. Zvětšete jej, aby slave resolvery věděli, že se zóna RPZ změnila.

Vytvoření více RPZ zón

Někdy možná nebudete chtít, aby se určité záznamy DNS přenášely do podřízených překladačů. Můžete vytvořit samostatnou zónu RPZ. Upravte /etc/named.conf soubor.

sudo nano /etcnamed.conf

Přidejte novou zónu RPZ.

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

Přidejte definici nové zóny na konec tohoto souboru.

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

Uložte a zavřete soubor. Poté musíme vytvořit soubor zóny. Místo vytvoření souboru zóny od začátku můžeme použít soubor šablony zóny. Zkopírujte obsah named.empty do nového souboru.

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

Upravte soubor zóny.

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

Cent OS
  1. Jak nainstalovat DNS server na RHEL 8 / CentOS 8 Linux

  2. Nainstalujte a nakonfigurujte DNS/BIND na Linux/Rhel/CentOS s funkcí Chroot

  3. Jak nastavit nebo změnit název hostitele v CentOS 7 / RHEL 7

  1. Nakonfigurujte DNS na CentOS 5 / RHEL 5 s chrootem

  2. Jak nakonfigurovat server DNS na CentOS 5 / RHEL 5

  3. Jak nastavit DNS (Bind) Server na CentOS/RHEL 7/6/5

  1. Jak nakonfigurovat Slave DNS (BIND) na CentOS 7 / RHEL 7

  2. Jak nastavit soukromé servery DNS s BIND na CentOS 8

  3. Jak nastavit časové pásmo na CentOS 7