GNU/Linux >> Znalost Linux >  >> Linux

Jak na to:Autoritativní server DNS BIND9 na CentOS 7:Instalace a konfigurace

Úvod

V tomto článku s návody vás provedeme instalací zabezpečeného autoritativního serveru DNS BIND9 na CentOS 7

Co je BIND?

BIND je software s otevřeným zdrojovým kódem, který implementuje protokoly DNS (Domain Name System) pro Internet. Je to referenční implementace těchto protokolů, ale je to také software produkční úrovně, vhodný pro použití ve velkoobjemových a vysoce spolehlivých aplikacích.
– ISC (Internet Systems Consortium)

Přehled kroků konfigurace

  1. Základní příprava serveru.
  2. Instalace softwarových balíčků BIND.
  3. Konfigurace softwarových balíčků BIND.
  4. Přidání testovací zóny (domény)
  5. Testování serveru DNS

Předpoklady

Než se pustíte do tohoto článku s návody, musíte se nejprve ujistit, že máte splněny tyto předpoklady.

– Server CentOS 7 – Pokud nemáte server k dispozici, můžete jej spustit prostřednictvím naší stránky hostingových služeb VPS.
– Nainstalovaný váš preferovaný textový editor – V tomto tutoriálu budeme používat nano.

.

1 – Základní příprava serveru

Nejprve se ujistěte, že jste přihlášeni jako uživatel root.

sudo su -

Dále se ujistíme, že základní operační systém je plně aktualizován.

yum update -y

Nyní, když je váš systém plně aktualizován, aktualizujeme firewall (ve výchozím nastavení povoleno ), aby DNS (port TCP 53 / UDP port 53) měl přístup k vašemu serveru.

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

2 – Instalace softwarových balíčků BIND DNS

Nyní jsme připraveni nainstalovat softwarové balíčky BIND na váš server.

yum install -y bind bind-utils bind-chroot
  • svázat : Server Berkeley Internet Name Domain (BIND) DNS (Domain Name System)
  • bind-utils : Nástroje pro dotazování názvových serverů DNS
  • bind-chroot : Běhové prostředí chroot pro server DNS ISC BIND

Nyní, když máte nainstalované požadované softwarové balíčky BIND, jsme připraveni spustit služby BIND a nastavit jejich automatické spouštění po restartu serveru.

systemctl start named
systemctl enable named

.

3 – Konfigurace serveru DNS BIND

Po spuštění serveru DNS BIND, balíček chroot automaticky připojí všechny konfigurační soubory do /var/named/chroot adresář vašeho serveru. Když spustíte BIND (nebo jakýkoli jiný proces) v chrootovém jailu, proces jednoduše není schopen vidět žádnou část souborového systému mimo jail.

Pro informaci, základní adresář, ve kterém budete pracovat pro všechny konfigurace BIND, je /var/named/chroot

Nejprve přejděte do tohoto adresáře pro zbývající kroky.

cd /var/named/chroot

Nyní vytvoříme některé adresáře a konfigurační soubor pro váš nový server a nastavíme vlastnictví. Tyto adresáře budou použity k uložení souborů dopředné a zpětné zóny pro váš server DNS.

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

Dále upravíme etc/named.conf konfigurační soubor. Provedeme vás celým nastavením, abyste pochopili, co jednotlivé možnosti pro váš server dělají.

nano etc/named.conf

Při počáteční instalaci bude výchozí konfigurační soubor níže (pokud chcete přejít na finální etc/named.conf , najdete jej níže):

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

Dostupné konfigurační nastavení a možnosti v BIND jsou velmi rozsáhlé. V tomto článku se budeme zabývat pouze možnostmi, jak nastavit váš server jako autoritativní server DNS a zabezpečit váš server před rekurzivními útoky zesilujícími DNS.

Pro podrobnější vysvětlení všech těchto možností doporučujeme lidi na Zytrax.com.

Možnosti poslechu

První možností konfigurace, kterou se chystáme změnit, jsou možnosti naslouchání pro váš server. Ve výchozím nastavení je server nastaven tak, aby naslouchal pouze na adrese místní smyčky (127.0.0.1). Změníme to, abychom naslouchali na všech rozhraních na vašem serveru. Nahraďte následující řádky uvnitř options { } klauzule konfiguračního souboru.

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

ACL (Access Control List)

Nyní do konfigurace přidáme některá pravidla ACL (Access Control List). Tyto seznamy ACL se použijí k rozšíření nastavení zabezpečení pro možnosti vyhledávání dotazů a také možnosti rekurzivního dotazu. První pravidlo – které budeme nazývat „povolené dotazy“ – bude použito k povolení jakékoli zdrojové adresy dotazovat se na váš DNS server. Druhé pravidlo – budeme ho nazývat „povolená rekurze“ – se použije k omezení rekurzivního vyhledávání pouze na adresu localhost.

Přidejte níže uvedená pravidla zásad ACL těsně nad options { } klauzule.

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

Dále změníme konfigurační hodnotu allow-query příkaz k použití nového ACL, který jsme právě vytvořili. allow-query příkaz definuje, kdo (tj. zdrojové sítě) smí dotazovat váš DNS server. Nahraďte následující řádek uvnitř options { } klauzule konfiguračního souboru.

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

Omezení rekurze

Nyní musíme zajistit oprávnění k vyhledávání rekurze na vašem serveru. Rekurze je technika, při které se server DNS dotazuje na jiné servery DNS jménem žádajícího klienta, aby plně přeložil název, a poté odešle odpověď zpět klientovi. Útočníci mohou tuto techniku ​​použít k tomu, aby se servery DNS s povolenou otevřenou rekurzí nevědomky účastnily útoku DDoS (Distributed Denial of Service). Pokud tedy DNS server ve vaší síti není určen k přijímání rekurzivních dotazů, měla by být rekurze na tomto serveru zakázána nebo zabezpečena tak, aby nedovolila neoprávněným zdrojům používat tuto techniku.

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

Nyní přidáme příkaz include do konfiguračního souboru. Tento příkaz bude použit k zahrnutí autoritativních zónových dat (domén), na které bude váš server konfigurován tak, aby na ně odpovídal. Přidejte následující řádek pod konec možnosti option { } klauzule, hned za posledním příkazem include.

include "/etc/zones.conf";

Nyní jsme dokončili změny konfigurace v etc/named.conf konfigurační soubor. Nyní můžete uložit a ukončit své změny.

.

Nový soubor named.conf

Ke kontrole váš etc/named.conf konfigurační soubor by nyní měl vypadat takto:

//
// 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 – Přidání první zóny (domény)

Nyní přidáme vaši první zónu, pro kterou bude váš server DNS autoritativní. Budeme používat testovací doménu (example.tld ) pro tento krok jako příklad.

Nejprve vytvoříme nový soubor v adresáři var/named/fwd-zones které jsme vytvořili dříve.

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

Dále přidáme ukázková data záznamu zóny pro tuto doménu. Upravte nový soubor, který jsme právě vytvořili, a přidejte data zóny do konfiguračního souboru.

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

Data zón

; 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

Jakmile provedete všechny změny, které je třeba provést, uložte je a ukončete.

Nyní upravíme etc/zones.conf konfigurační soubor, aby zahrnoval novou doménu, kterou jsme právě vytvořili.

nano etc/zones.conf

Nyní přidejte níže uvedené parametry do konfiguračního souboru.

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

Po dokončení uložte a ukončete tento soubor.

Nyní jsme připraveni restartovat vaše služby DNS, aby se načetly všechny nové konfigurace.

systemctl restart named

Pokud se vše úspěšně restartovalo bez jakýchkoli chyb, měli byste obdržet následující odpověď:

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

.

5 – Testování vašeho serveru DNS

Nyní jsme připraveni otestovat funkčnost vašeho nového DNS serveru. Nejprve potvrdíme, že váš server DNS odpovídá pro zónu (doménu), kterou jsme právě vytvořili. Spusťte následující příkaz:

dig example.tld -t ANY @localhost

Měli byste vidět níže podobný výstup odpovědi z vašeho serveru. Klíčové hodnoty odezvy, které je třeba hledat, jsou ;; ANSWER SECTION: hodnoty. Tento výstup vám dá vědět, že server odpověděl na váš požadavek daty záznamu, které jste zadali v předchozích krocích.

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

Druhý test, který uděláme, je zkontrolovat, zda váš server odpovídá na rekurzivní vyhledávání z localhost. Pro zahájení testu spusťte níže uvedený příkaz:

dig google.com -t ANY @localhost

Pokud je server nastaven podle očekávání, měli byste obdržet podobný rekurzivní ;; ANSWER SECTION: odpověď.

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

Poslední test, který provedeme, je ověřit, že váš server NE otevřené útoku na zesílení DNS. Lidé z openresolver.com nastavili jednoduchý test, který můžete použít s dig :

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)

Odpověď "open-resolver-detected" označuje, že máte povolenou rekurzi. Žádná odpověď je v tomto případě dobrá věc .

Web openresolver.com má také k dispozici nástroj založený na prohlížeči pro testování této chyby zabezpečení.

Při testování s vaší veřejnou IP adresou byste měli obdržet následující podobnou odpověď:

Úspěšný otevřený rekurzivní test DNS Resolver

Blahopřejeme!

Nyní máte nakonfigurován a spuštěn autoritativní server DNS. Děkuji za přečtení! Podívejte se na některé ze souvisejících článků níže a děkujeme, že jste vyzkoušeli naše spolehlivá hostingová řešení VPS na Atlantic.Net.


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

  2. Jak nainstalovat Redis na CentOS 7

  3. Jak migrovat server DNS BIND na nový hardware?

  1. Jak zkontrolovat konfigurační soubory bind9 (DNS Server).

  2. Jak nainstalovat DenyHost na CentOS 6.7

  3. Jak nainstalovat PostgreSQL Server na CentOS 8

  1. Jak nainstalovat ClickHouse na CentOS 7

  2. Jak nainstalovat Minecraft Server na CentOS 7

  3. Jak nastavit DNS Server (Bind) na CentOS 8 / RHEL8