В тази статия ще се демонстрира наличието на два DNS сървъра. Единия ще е master, а другия slave. Двата сървъра ще имат публично IP. Ще се използва dnssec за повишаване на защитните свойства на домейна. IPv6 няма да се ползва. - master DNS server IP: 109.160.80.230 - slave DNS server IP: 185.163.245.186 - zone: tlan.net
apt install bind9 dnsutils -y
Сега създаваме директория за файлове-ключове на зоната.
mkdir /etc/bind/keys
nano /etc/bind/named.conf.options options { directory "/var/cache/bind"; allow-query { any; }; version "DNS TLan.NET"; allow-recursion { none; }; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; listen-on-v6 { any; }; };
allow-query { any; }; - отговаря на всички DNS запитвания version «DNS TLan.NET»; - име на сървъра allow-recursion { none; }; - изключваме на рекурсивните запитвания dnssec-enable yes; - включваме dnssec в DNS сървъра dnssec-validation yes; - проверка за вярност на отговорите dnssec-lookaside auto; - разрешаване използването на странични DNSSEC
nano /etc/bind/named.conf.local zone "tlan.net" IN { type master; file "/etc/bind/tlan.net"; allow-transfer {185.163.245.186;}; allow-update {185.163.245.186;}; notify yes; };
zone «tlan.net» IN - име на зоната за обслужване type master - тип на записите в сървъра, в случая са master file «/etc/bind/tlan.net» - пър до файла за дефиниране на зоната allow-transfer {185.163.245.186;} - разрешаваме предаване на зоните на slave сървъра с IP:185.163.245.186 allow-update {185.163.245.186;} - разрешаваме обновяване на зоните към slave сървтра notify yes; - автоматично обновяване на подчинения (slave) DNS сървър Дефинираме и самата зона.
nano /etc/bind/tlan.net $TTL 3600 tlan.net. IN SOA mail.tlan.net. root.tlan.net. ( 2024052301 600 3600 1w 300 ) IN NS mail.tlan.net. IN NS post.tlan.net. IN A 109.160.80.230 mail IN A 109.160.80.230 post IN A 185.163.245.186 www IN A 109.160.80.230
$TTL 3600 — время жизни tlan.net. IN SOA mail.tlan.net. root.tlan.net. - зона, която обслужва текущия сървър 2024052301 ; - сериен номер на DNS записа 600 ; - време за обърщение към подчинения DNS сървър за следене на изменения на master сървъра 3600 ; - колко време slave сървъра да поддържа записа преди наново да направи нова заявка към master сървъра 1w ; - срок на живот на записа (1 седмица) 300 ; - минимален срок на живота на записа (5 мин.) IN NS mail.tlan.net. ; - NS сървър обслужващ текущата зона IN A 109.160.80.230; - А запис tlan.net Сменяме правата върху файла:
chown -R bind:bind /var/lib/bind/
Съхраняваме файла и рестартираме BIND
systemctl restart bind9.service
Проверяваме конфигурационните файлове.
named-checkconf -z /etc/bind/named.conf
До тук всичко е наред. Продължаваме с DNSSEC. За начало преминаваме в папката където ще се намират ключовете.
cd /etc/bind/keys/tlan.net/
Генерираме master ключа.
dnssec-keygen -f KSK -a RSASHA1 -b 2048 -n ZONE -r /dev/urandom tlan.net
-f KSK - флаг указващ формиране на master ключ -a RSASHA1 - използват алгоритъм за шифроване -b 2048 - размер на ключа в битове -n ZONE - за DNS зони -r /dev/urandom - път към файла със случайни данни. В различните дистрибуции пътя може да се различава. Примерно ако се ползва този път при CentOS, процеса ще зависне. При Debian тази опция не трябва да съществува tlan.net - домейн, за когото се отнася ключа След това генерираме ключа за зони.
dnssec-keygen -a RSASHA1 -b 2048 -n ZONE -r /dev/urandom tlan.net
На практика командите няма да тръгнат поради опцията -r /dev/urandom При Debian 12 реалните команди трябва да са:
dnssec-keygen -f KSK -a RSASHA1 -b 2048 -n ZONE tlan.net dnssec-keygen -a RSASHA1 -b 2048 -n ZONE tlan.net
Сменяме собственика на файловия ключ.
chown -R bind:bind /etc/bind/keys chown -R bind:bind /etc/bind/keys/tlan.net
Сега да редактираме зоновия конфигурационен файл.
nano /etc/bind/named.conf.local zone "tlan.net" IN { type master; file "/etc/bind/tlan.net"; key-directory "/etc/bind/keys/tlan.net"; auto-dnssec maintain; inline-signing yes; allow-transfer {185.163.245.186;}; allow-update {185.163.245.186;}; notify yes; };
Добавихме: key-directory «/etc/bind/keys»; - директория с нашите ключове auto-dnssec maintain; - активиране включването на dnssec ключове inline-signing yes; - включва режима на прозрачно формиране на подписа, не трябва да се внасят изменения непосредствено в зоновите файлове Презареждаме конфигурацията на BIND.
rndc reload
dig DNSKEY tlan.net. @localhost +multiline ; <<>> DiG 9.16.33-Debian <<>> DNSKEY tlan.net. @localhost +multiline ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32269 ;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 7ac0fa8ed75a363d010000006613cb12aa8ac326ea754179 (good) ;; QUESTION SECTION: ;tlan.net. IN DNSKEY ;; AUTHORITY SECTION: tlan.net. 3600 IN SOA mail.tlan.net. root.tlan.net. ( 2024040201 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Apr 08 13:46:42 EEST 2024 ;; MSG SIZE rcvd: 111 dig A tlan.net. @localhost +noadditional +dnssec +multiline ; <<>> DiG 9.16.33-Debian <<>> A tlan.net. @localhost +noadditional +dnssec +multiline ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5983 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 1232 ; COOKIE: 400051ac0f6c2d2c010000006613cb9c76d6c4a727865cb4 (good) ;; QUESTION SECTION: ;tlan.net. IN A ;; ANSWER SECTION: tlan.net. 3600 IN A 109.160.80.230 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Apr 08 13:49:00 EEST 2024 ;; MSG SIZE rcvd: 81
Записите RRSIG означават, че записите имат цифров подпис. Всичко работи. Остана да получим DS записи за регистъра на демона и да ги подпишем.
dig @127.0.0.1 dnskey angald.ru | sudo dnssec-dsfromkey -f - angald.ru bla bla bla
За пояснение трябва да кажем, че тега - това е число 50707. Следват: 8 - това е алгоритъм, 1 или 2 - тип подпис (1 - SHA1, 2 - SHA-256). След като сме добавили DS запис в регистъра, след определено време може да се провери дали всичко работи правилно. Това може да се провери на: https://dnssec-analyzer.verisignlabs.com.
Няма много обяснения направо се захващаме за работа. Първо инсталираме.
apt install bind9 dnsutils -y
Сменяме собственика на BIND.
chown -R bind:bind /var/lib/bind/
Общи настройки на BIND
nano /etc/bind/named.conf.options options { directory "/var/cache/bind"; allow-query { any; }; version "DNS Tlan.NET"; allow-recursion { none; }; dnssec-validation auto; listen-on-v6 { any; }; };
Добавяме нашата зона.
nano /etc/bind/named.conf.local zone "tlan.net" IN { type slave; file "/etc/bind/tlan.net"; masters { 109.160.80.230; }; allow-transfer {"none";}; };
zone «tlan.net» IN - име на зоната за обслужване type slave - тип на сървъра, в случая е slave (подчинен) file "/etc/bind/tlan.net" - път до файла с дефиниране на зоните master { 109.160.80.230; } - IP адреса на master сървъра Презапускаме DNS сървъра
systemctl restart bind9.service
dig DNSKEY tlan.net. @localhost +multiline dig A tlan.net. @localhost +noadditional +dnssec +multiline
Използвани материали: https://www.angald.ru/ustanovka-i-nastrojka-bind-na-debian/ https://lyalyuev.info https://www.dmosk.ru https://howitmake.ru