PowerDNS Authoritative Server nimeserveri kasutamine

Allikas: Imre kasutab arvutit

Sissejuhatus

PowerDNS https://www.powerdns.com/ on üks populaarsetest vaba tarkvaralistest nn alternatiivsetest DNS serveritest, kuigi 'alternatiivse' kohta väidetavalt teda kasutatakse väga massiliselt DNSSEC jaoks. PowerDNS tarkvara võimaldab pidada täielist DNS infrastruktuuri, sh slave ja master pädevate nimeserverite erinevad konfiguratsioonid. PowerDNS tarkvara komplekti kuuluvad

  • PowerDNS Authoritative Server - pädev nimeserver
  • PowerDNS Recursor - rekursiivne nimeserver
  • dnsdist - koormusjaotur

PowerDNS Authoritative Server tarkvaral on sellised tunnused

  • võimalus kasutada andmete salvestamiseks erinevaid nn backend'isid (nn plain text, sql andmebaas, ldap kataloog jne)
  • väga mugavalt korraldada DNSSEC tsooni pidamist
  • tsoonide käsitlemine (tekitamine, sisu muutmine, eemaldamine) on võimalik üle nn API
  • eksisteerivad mitmesugused veebipõhised tsoonide haldusliidesed (otse baasi ja üle API)
  • ebamugav on kontrollida, kust tsooni kopeeritakse, kuhu notify saadetakse ja kust lubatakse tsooni kopeerida

Haldusliidesed jagunevad kaheks

Järgnevas tekstis öeldakse lühiduse mõttes PowerDNS ja mõeldakse PowerDNS Authoritative Server ehk pädevat komponenti.

Tööpõhimõte

TODO

Tarkvara paigaldamine ja seadistamine

Tarkvara paigaldamiseks on üldiselt kaks võimalust

PowerDNS tarkvara on jaotatud komponentideks

  • üldosa
  • tsoonidega seotud andmete salvesamiseks erinevad backendid (failisüsteem, SQL andembaas jne)

Kui asutakse kasutama SQL backendi, siis enne PowerDNS vastava backendi paigaldamist on otstarbekas baas ise paigaldada ja käivitada. Samas, see baas ei pruugi olla tingimata samas arvutis (üldiselt mugavam on, kuna sel juhul baasi saab lähtestada dbconfig süsteemi abil). Kui kasutatakse DNSSEC'i siis arvestada, et krüptomaterjal asub baasis.

Paigaldamine operatsioonisüsteemi paketihaldusest

Paigaldamiseks sobib öelda, tuleb paigalda üldosa + mingi backend, nt BIND-ühilduvate tsoonifailide käsitlemise komponent (st failisüsteem)

# apt-get install pdns-server pdns-backend-bind

Tulemusena tekib failisüsteemi

  • /etc/powerdns/pdns.conf - peamine seadistusfail

Paigaldamine PowerDNS repositooriumist

PowerDNS repositoorium asub aadressil https://repo.powerdns.com/.

Juhul kui mingil põhjusel andmebaasi ei lähtestata tarkvara paigaldamise käigus, sobib öelda PostgreSQL andmebaasi promptis

# su - postgres
$ psql
..
postgres=# create role pdns login password 'pdnsparool' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
postgres=# create database pdns owner = pdns;

ning seejärel laadida baasi sisu, õieti struktuur

# psql -h 127.0.0.1 -U pdns pdns < /usr/share/doc/pdns-backend-pgsql/schema.pgsql.sql

ning lõpuks kirjeldada PowerDNS backend

# cat /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
# PostgreSQL Configuration
#
# Launch gpgsql backend
launch+=gpgsql

# gpgsql parameters
gpgsql-host=127.0.0.1
gpgsql-port=
gpgsql-dbname=pdns
gpgsql-user=pdns
gpgsql-password=pdnsparool
gpgsql-dnssec=yes

Tarkvara seadistamine

Üldosa sobiks kokkuvõttes seadistada nt nii

# egrep -v "^$|^#" /etc/powerdns/pdns.conf 
allow-axfr-ips=127.0.0.0/8,::1,192.168.1.210
also-notify=192.168.1.210
api=yes
api-key=midagisalajast123
default-soa-mail=hostmaster.moraal.ee.
default-soa-name=ans1.moraal.ee.
include-dir=/etc/powerdns/pdns.d
launch=
master=yes
only-notify=192.168.1.210
security-poll-suffix=
setgid=pdns
setuid=pdns
slave=yes
soa-expire-default=604800
soa-minimum-ttl=3600
soa-refresh-default=10800
soa-retry-default=3600
webserver=yes
webserver-address=192.168.1.248
webserver-allow-from=0.0.0.0/0,::/0,192.168.10.0/24

kus

  • TODO

pdns-backend-bind seadistatakse failist

# egrep -v "^$|^#" /etc/powerdns/pdns.d/bind.conf 
launch+=bind
bind-config=/etc/powerdns/named.conf
bind-supermaster-config=/var/lib/powerdns/supermaster.conf
bind-supermaster-destdir=/var/lib/powerdns/zones.slave.d

kus

  • /etc/powerdns/named.conf - tsoonide nimekiri
  • /var/lib/powerdns/supermaster.conf - lihtsal juhul tühi
  • /var/lib/powerdns/zones.slave.d - BIND formaadis tsoonifailide kataloog

Tsoonide haldamisega tegeleb edasi allpool olev punkt.

pdns-backend-mysql paigaldamine ja seadistamine

Eeldusel, et MySQL baas juba töötab samas arvutis, sobib paigaldamiseks sobib öelda (seejuures kasutades db-config sistemat, mis paigaldamise käigus tekitab create database baasi, kasutaja, sätib privileegid jne)

# apt-get install pdns-backend-mysql
..
Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
dbconfig-common: writing config to /etc/dbconfig-common/pdns-backend-mysql.conf

Creating config file /etc/dbconfig-common/pdns-backend-mysql.conf with new version

Creating config file /etc/powerdns/pdns.d/pdns.local.gmysql.conf with new version
checking privileges on database pdns for pdns@localhost: user creation needed.
granting access to database pdns for pdns@localhost: success.
verifying access for pdns@localhost: success.
creating database pdns: success.
verifying database pdns exists: success.
populating database via sql...  done.
dbconfig-common: flushing administrative password
Processing triggers for libc-bin (2.24-3) ...
Processing triggers for pdns-server (4.0.1-5) ...

Tulemusena

  • tekitatakse MySQL kasutaja pdns
  • tekitatakse MySQL create database pdns

pdns-backend-pgsql paigaldamine ja seadistamine

Eeldusel, et PostgreSQL baas juba töötab samas arvutis, sobib paigaldamiseks sobib öelda (seejuures kasutades db-config sistemat, mis paigaldamise käigus tekitab create database baasi, kasutaja, sätib privileegid jne)

# apt-get install pdns-backend-pgsql
..
dbconfig-common: writing config to /etc/dbconfig-common/pdns-backend-pgsql.conf
Creating config file /etc/dbconfig-common/pdns-backend-pgsql.conf with new version
Creating config file /etc/powerdns/pdns.d/pdns.local.gpgsql.conf with new version
creating postgres user pdns:  success.
verifying creation of user: success.
creating database pdns: success.
verifying database pdns exists: success.
populating database via sql...  done.
dbconfig-common: flushing administrative password
Processing triggers for pdns-server (4.0.1-5) ...

Tulemusena

  • tekitatakse PostgreSQL kasutaja pdns
  • tekitatakse PostgreSQL create database pdns

PowerDNS backendide kasutamine

Tundub, et otsekoheselt failisüsteemis tsoonifaili redigeerimise teel on mõeldav töötada ainult BIND-formaadis backendiga. Muudega tuleks kasutada pdnsutil utiliiti või API liidest.

BIND backend kasutamine

Tsoonide nimekiri kirjeldatakse failis

# cat /etc/powerdns/named.conf
# Debian default: supermaster created zones are written here:
include "/var/lib/powerdns/supermaster.conf";
# Example for a manually configured slave zone:
#
zone "example.net" {
   file "/var/lib/powerdns/zones.slave.d/example.net.zone";
   type master;
   masters { 192.0.2.53; };
};

Tsoon kirjeldatakse failis

# cat /var/lib/powerdns/zones.slave.d/example.net.zone
$TTL 180
@           IN    SOA     ns1.example.net.      hostmaster.example.net. (
                       2014080705      ; Serial Number (date YYYYMMDD++)
                       86400           ; Refresh (24 hours)
                       1800            ; Retry (1/2 hour)
                       3600000         ; Expire (42 days)
                       21600)          ; Minimum (6 hours)
                       IN      NS      ns1.example.net.
                       IN      NS      ns2.example.net.

@           IN    A       192.168.0.15
            IN    MX   10 mail.example.net.
www         IN    A       192.168.0.15
mail        IN    A       192.168.0.2
ns1         IN    A       10.1.1.171
ns2         IN    A       10.1.1.172
imre        IN    A       10.1.1.173

Muudatuse kehtestamiseks

# pdns_control bind-reload-now example.net
example.net:    parsed into memory at 2016-10-26 20:43:14 +0300

MySQL backend kasutamine

Teoreetliselt võib sodida tsooni sisu muutmiseks üldotstarbelise sql editoriga (nt PgAdmin) ka otse baasis, aga praktilisem on kasutada ehk pdnsutil või api't kasutava tarkvara abil, nt nsedit veebiliides.

PostgreSQL backend kasutamine

Teoreetliselt võib sodida tsooni sisu muutmiseks üldotstarbelise sql editoriga (nt PgAdmin) ka otse baasis, aga praktilisem on kasutada ehk pdnsutil või api't kasutava tarkvara abil, nt nsedit veebiliides.

Veebipõhised haldusliidesed

Veebipõhiste haldusliideste abil saab

  • tekitada ja kustutada tsoone, muuta tsoonide sisu
  • loodetavasti haldusliidese abil jäävad tegemata mingid süntaksivead, mida on kerge teha nn BIND-ühilduvat tsoonifaili tavalise tekstieditoriga otse muutes
  • tsooni sisu halduse saab usaldada mitte-vi/joe/nano ekspertiisiga inimesele

Paistab, et veebipõhiseid haldusliideseid on omajagu, https://github.com/PowerDNS/pdns/wiki/WebFrontends

nsedit

nsedit on PHP rakendus. Märkused

  • Tsoonis tehtud muudatustega kaasneb automaatselt SOA seriali suurenemine
  • Veebiliideses tehtud muudatused ei kajastu alati sama veebiliideses koheselt (nt SOA seriali muutumine, välja ja sisselogimise järel on näha)
  • nsedit esitab muudatuste logi
  • toimib ipv6 jaoks
  • nn õäöü tähti sisaldavaid nimesid sisestada otseselt ei saa
Paigaldamine ja seadistamine

Kopeerida tarkvara, tundub, et 2017 aasta alguses on praktiline võtta git repo viimane ots

# cd /var/www/html
# git clone https://github.com/tuxis-ie/nsedit.git

Tekitada php skriptide jaoks kasutaja:grupp

# groupadd nsedit
# useradd -g nsedit -m -d /opt/nsedit -s /bin/false nsedit

Avades brauseris

  • kontrollitakse vajalike teekide olemasolu
  • moodustatakse sqlite3 andmebaas
# sqlite3 /var/www/html/etc/pdns.users.sqlite3
..
sqlite> .tables
logs   users  zones

nsedit seadistatakse failis /var/www/html/nsedit/includes/config.inc.php

  • ühendust powerdns serveriga üle api juhib sektsioon
# cat /var/www/html/nsedit/includes/config.inc.php | grep '^$api'
$apipass = 'apiparool';           # The PowerDNS API-key
$apiip   = '10.0.9.18';           # The IP of the PowerDNS API
$apiport = '8081';       # The port of the PowerDNS API
$apiproto      = 'http'; # http | https
$apisslverify  = FALSE;  # Verify SSL Certificate if using https for apiproto
  • vaikeväärtuste kasutamiset haldusliideses kontrollib
$defaults['soa_edit']    = 'INCEPTION-INCREMENT';
$defaults['soa_edit_api'] = 'INCEPTION-INCREMENT';
$defaults['defaulttype'] = 'Master';                    # Choose between 'Native' or 'Master'
$defaults['ns'][0] = 'ns1.moraal.ee.';         # The value of the first NS-record
$defaults['ns'][1] = 'ns2.moraal.ee.';       # The value of the second NS-record
$defaults['ttl']   = 3600;                              # Default TTL for records
$defaults['disabled'] = false;                          # Default disabled state

Kasutajaliides paistab välja selline

Pdns-1.gif

kus

  • TODO

Kui rakendus töötab, muuta rakenduse failide omanik:grupp ära

# chown -R nsedit:nsedit /var/www/html/nsedit
Kasutamine
  • Kasutajate lisamine, valida (ning märkida linnuke admin user jaoks), tulemusena on nsedit logid paremad
Users -> Add new user 
  • Uue tsooni lisamine, valida
Add new zone

ning sisestada Domain lahtrisse domeeninimi, lõpetades punktiga, nt

test-1.ee.

Kõik muud valikud jätta vaikimisi

Account - admin
Type - master
Template - None

Kuna pdns serveri seadistusfailisis on näidatus SOA kirje väärtused ja nsedit seadisusfailis on kirjeldatud nimeserverid, siis tekib vaikimisi kastutatav tulemus.

Kasulikud lisamaterjalid

Poweradmin

Märkus: tõenäoliselt ei ole Poweradmin tarvkara kasutamine hea mõte kuna rakendus sodib otse PowerDNS andmebaasis ja 2016 aasta sügisel on hakanud tekkima paremaid alternatiive, nt nsedit.

Poweradmin kasutamiseks peab PowerDNS kasutama SQL andmebaasi ja Poweradmin peab töötama vastu sama andmebaasi. Tundub, et Poweradmin töötab paremini MySQL + PHP5 keskkonnas. Kui Poweradmin PHP rakendus töötab teises arvutis kui MySQL baas, sobib baasis öelda

mysql> grant all privileges on pdns.* to 'pdns'@'%' identified by 'dbconfig sisestatud parool';
mysql> grant all privileges on pdns.* to 'pdns'@'localhost' identified by 'dbconfig sisestatud parool';
mysql> flush privileges;
# pdns_control retrieve moraal.ee
Added retrieval request for 'moraal.ee.' from master 192.168.1.247

Kasulikud lisamaterjalid

DNSSEC tsooni esmane juurutamine

Tundub, et uuemal ajal saab DNSSEC juures kasatada CSK (Combined Signing Key) võtit ja seda kasutab PowerDNS vaikimisi, kuid samas CSK võtmeid registripidajad eriti ei toeta. Ja PowerDNS toetab ka nö klassikalist KSK+ZSK komplekti kasutamist.

KSK ja ZSK võtmete kasutamine

Võtmete tsooniga seostamiseks sobib öelda

# pdnsutil add-zone-key moraal.ee ksk 2048 active rsasha256
# pdnsutil add-zone-key moraal.ee zsk 1024 active rsasha256
# pdnsutil set-nsec3 moraal.ee '1 0 5 abcdefgh01234567'
# pdnsutil set-meta moraal.ee SOA-EDIT-API INCEPTION-INCREMENT
# pdnsutil set-meta moraal.ee SOA-EDIT INCEPTION-INCREMENT
# pdnsutil increase-serial moraal.ee
# pdnsutil rectify-zone moraal.ee
# pdnsutil show-zone moraal.ee

mis

  • tekitab võtmed
  • võtab kasutusele nsec3 hash'ide arvutamiseks vajaliku materjali (ab...67 on 16-elemendiline juhuslik hex järgnevus)
  • INCEPTION-INCREMENT rida seadistab selliselt, et kui automaaselt tsooni andmed resigneeritakse, siis suurendatakse ka seriali (muidu ei toimu notify ja andmed ei jõua avalikesse pädevatesse nimeserveritesse)
  • rectify tuleb põhimõtteliselt öelda peale iga tsooni muudatust, et olla täiesti kindel tsooni toimimises

ning tsooni andmed paistavad

# pdnsutil show-zone moraal.ee
Nov 06 23:49:44 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
This is a Master zone
Last SOA serial number we notified: 2016103003 == 2016103003 (serial in the database)
Metadata items: 
       SOA-EDIT        INCEPTION-INCREMENT
       SOA-EDIT-API    INCEPTION-INCREMENT
Zone has NSEC3 semantics, configuration: 1 0 1 ab
keys: 
ID = 11 (ZSK), flags = 256, tag = 26589, algo = 8, bits = 1024    Active ( RSASHA256 ) 
ID = 10 (KSK), flags = 257, tag = 53461, algo = 8, bits = 2048    Active ( RSASHA256 ) 
KSK DNSKEY = moraal.ee. IN DNSKEY 257 3 8  AwEAAcn... TQcnQstT+tU= ; ( RSASHA256 )
DS = moraal.ee. IN DS 53461 8 1 6c123b39076072da... c66f62b1e3c388b86b7f ; ( SHA1 digest )
DS = moraal.ee. IN DS 53461 8 2 b85dee98efa6e3bb... 57ce193f728f6b2b1d0dd262 ; ( SHA256 digest )
DS = moraal.ee. IN DS 53461 8 3 1359b0b2b97e60b2... 844b207e84bf5c109eb2e151 ; ( GOST R 34.11-94 digest )
DS = moraal.ee. IN DS 53461 8 4 6d735926cd5cf68b... 9ca2af1f72b3b8f67900bb32a94c ; ( SHA-384 digest )

kus

  • kaks võtit, ID väärtustega 10 ja 11

Tulemuse kontrollimine

Kui kõik juba töötab (ja on vist on vajalik, et kasutada on mõni dnssec-võimeline rekursiivne nimeserver), saab tulemust kontrollida nt nii

$ ldns-rrsig moraal.ee a
moraal.ee RRSIG(a):  Thu Oct 27 00:00:00 2016 - Thu Nov 17 00:00:00 2016

Märkused

  • DNSSEC RRSIG signatuure arvutatakse iga 2 nädala tagant üle selleks, et piirata replay attack võimalusi. Põhimõtteliselt saab pahalane päringule vastuseks saata mõne varasemalt võrgus olnud vastuse (st RRSet + RRSIG komplekti) eeldusel, et ta kontrollib kasutaja võrguliiklust. Tänu RRSIG piiratud kehtivusajale (nt 2 nädalat) saab ta seda teha mitte vanemate kui 2 nädalat andmetega, lisaks ta on piiratud saatma mitte suvalisi vastuseid, vaid viimase kahe nädala jooksul kasutuses olnud vastuseid.

Kasulikud lisamaterjalid

CSK võtme kasutamine

Märkus 2016 lõpus: tundub, et see CSK on mingi tulevikutehnoloogia.

Olemasoleva tsooni jaoks DNSSEC sisselülitamiseks sobib öelda

# pdnsutil secure-zone moraal.ee
# pdnsutil set-nsec3 moraal.ee '1 0 1 ab'
# pdnsutil rectify-zone moraal.ee
# pdnsutil set-meta moraal.ee SOA-EDIT-API INCEPTION-INCREMENT
# pdnsutil increase-serial moraal.ee
# pdnsutil show-zone moraal.ee

Seejärel tuleb registripidajale öelda DS väärtus.

Tulemuse saab kontrollida nt aadressil http://dnsviz.net/d/moraal.ee/dnssec/.

DNSSEC eemaldamiseks tuleb

  • esmalt eemaldada registripidaja juurest DS kirje
  • tsoonis dnssec väljalülitamiseks sobib öelda
# pdnsutil disable-dnssec moraal.ee

Misc

  • tagasi nsec peale viimiseks
# pdnsutil unset-nsec3 moraal.ee

DNSSEC tsooni seostamine DS sissekande abil ülevalpool oleva tsooniga

zone.ee keskkonnas

Logida sisse oma kasutajaga ja valida vasakult paneelist 'Teenuste ülevaade', kõnelaluse tsooni juures pressida rohelist + märki DNSSEC tulbas. Avanenud uuel eraanil vajutada üleval sinist nuppu Aktiveeri (muutub roheliseks), vajutada võtmete nimekirjas + märki ja täita lahtrid

Pdns-3.gif

kus

  • võtme silt - (antud juhul 53461), selle saab teada päringu väjundist
$ dig @ns.auul.pri.ee moraal.ee dnskey rrsig | grep DNSKEY
moraal.ee.              10800   IN      RRSIG   DNSKEY 8 2 10800 20161208000000 20161117000000 53461 moraal.ee. rVy+HAzSKkTRv6...
  • võtme tüüp - KSK
  • algoritm - 8 (RSA-SHA256)
  • avalik võti, selle saab teada päringu väljundist, alates Aw kuni tU= (võib sisaldada tühikuid nagu päringu vastuses on)
$ dig @ns.auul.pri.ee moraal.ee dnskey | grep 257
moraal.ee. 3600 IN DNSKEY 257 3 8 AwEAAcnmmnnOlkRfK9NDYEI6F ... SD6 TQcnQstT+tU=

Vajutada all nuppu Kinnita, muudatus kehtestub peaaegu koheselt, aga kasutajaliideses öeldakse

DNSSEC kaitse domeenil MORAAL.EE
Hetkestaatus: DNSSEC on aktiveerimata
Eesootavad muutused: DNSSEC aktiveeritakse

Teha braurise refresh ja peab olema domeenide nimekirjas DNSSEC tulbas + asemel kilbi kujutis. Kontrolliks maksab küsida tld nimeserverilt ds kirjet

$ dig +short @ns.tld.ee moraal.ee ds
30607 8 2 EAC8A17DD2128573F08EE76C18B4AB01734467CD4A376768F5358B0C A2B9463F

GoDaddy keskkonnas

TODO

DNSSEC võtmete asendamine

ZSK

KSK

Kasulikud lisamaterjalid

Mitmesugused haldusprotseduurid

tsooni backend muutmine

TODO

tsooni toomine PowerDNS kontrolli alla

Tsooni migreerimiseks suvalisest AXFR-võimelisest nimeserverist sobib

  • kirjeldada PowerDNS peal slave
# pdnsutil create-slave-zone moraal.ee 10.0.6.15
Feb 21 22:09:52 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
Creating slave zone 'moraal.ee', with master(s) '10.0.6.15:53'
  • kopeerida andmed axfr abil üle, kopeerimist kiirendab
# pdns_control retrieve moraal.ee
  • muuta PowerDNS tsooni jaoks masteriks, öeldes
SQL> UPDATE domains set type='MASTER' where type='SLAVE';

Kasulikud lisamaterjalid

pdns-control utiliidi kasutamine

PowerDNS kus on master tsoon saadab notify oma slavedele (nagu on tsoonifaili NS kirjetes kirjas)

# pdns_control notify <domain>

või näidatud ip aadressile

# pdns_control notify-host <domain> <ip-address>

pdnsutil utiliidi kasutamine

Uue tühja tsooni tekitamine (sisaldab SOA kirjet), seejärel tuleb vähemalt NS kirje tekitada (nb! nii tekib Naive tüüpi tsoon)

# pdnsutil create-zone moraal.ee

Tsooni Native -> Master teisendus

# pdnsutil set-kind moraal.ee master

Tsooni sisu esitamiseks

# pdnsutil list-zone moraal.ee.

Sisu muutmiseks, sh muuta käsitsi SOA serial

# pdnsutil edit-zone moraal.ee

utiliidiga seriali suurendamiseks

# pdnsutil increase-serial moraal.ee

Notify käsitsi välja saatmiseks

# pdns_control notify moraal.ee
Added to queue

Kirje lisamine (lisaks tuleb increase serial öelda)

# pdnsutil add-record moraal.ee imre5 A 300 "127.0.0.5"
Feb 21 10:20:54 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
New rrset:
imre5.moraal.ee. IN A 300 127.0.0.5

TSIG kasutamine

Nimeserverite vahelise tsooniedastuse juures TSIG juurutamiseks tuleb esmalt tekitada võti

# pdnsutil generate-tsig-key from_dns_to_itm hmac-sha256
Generating new key with 64 bytes (this can take a while)
Nov 26 13:10:37 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
Create new TSIG key from_dns_to_itm hmac-sha256 WLuS4o6CX35+yGerdHpl2h3+PDKt76rgam9rqkRg8N+fTP6cGtC6H17rDidKl7FzEu0fukg3apxnZUxdDRDhkQ==

kus

  • TODO

ning seejärel võti ühe või enama tsooniedastusega seostada

# pdnsutil activate-tsig-key moraal.ee from_dns_to_itm master

Tulemus paistab nii

# pdnsutil show-zone moraal.ee
Nov 26 14:09:44 [bindbackend] Done parsing domains, 0 rejected, 0 new, 0 removed
This is a Master zone
Last SOA serial number we notified: 2016112602 == 2016112602 (serial in the database)
Zone is not actively secured
Zone has following allowed TSIG key(s): from_dns_to_itm
Metadata items: 
        SOA-EDIT-API    DEFAULT
        TSIG-ALLOW-AXFR from_dns_to_itm
No keys for zone 'moraal.ee'.

kontrolliks sobib kopeerida öeldes

$ dig @192.168.1.248 moraal.ee axfr -y "hmac-sha256:from_dns_to_itm:WLuS4o6CX35+yGerdHpl2h3+PDKt76rgam9rqkRg8N+fTP6cGtC6H17rDidKl7FzEu0fukg3apxnZUxdDRDhkQ=="

kusjuures vastuses on üks preudokirje lisaks

..
from_dns_to_itm.        0       ANY     TSIG    hmac-sha256. 1480164029 300 32 t96WhnpNiAiL5KHXa8UzNthM6/p3ciQptF3Br2ZfhFk= 3538 NOERROR 0
...

Väited

  • Sama TSIG võtit saab kasutada mitme tsooni jaoks ja nii on mugavam nt NSD patternit kasutada
  • tundub, et tsooni jaoks TSIG juurutamisega kaasneb, et tsooni kopeerimise ip piirang enam ei kehti (lubatud ip pealt pöördudes ei ole võtme esitamine vajalik)
  • kui tsooni juures on tsig sisse lülitatud, siis see mõjub nii notify kui xfr jaoks

API kasutamine

Üle API muudatuse tegemiseks peab eelnevalt PowerDNS serveris lülitama API sisse ning sisemise webserver käivitama

# cat /etc/powerdns/pdns.conf
..
api=yes
api-key=apiparool
webserver=yes
webserver-address=192.168.1.248
webserver-allow-from=0.0.0.0/0,::/0,192.168.10.0/24
...

ja kasutama nt sellist skripti (töökohaarvutis on seejuures abil kasutada nt jq utiliiti)

# cat pdns-api.sh
curl -X PATCH --data \
'{"rrsets": 
  [{ "name": "www.moraal.ee.",
      "records": [{ "content": "192.168.254.5", "disabled": false }],
      "ttl": 86000,
      "type": "A",
      "changetype": "REPLACE"
  }]
}' -H 'X-API-Key: midagisalajast123' http://192.168.1.248:8081/api/v1/servers/localhost/zones/moraal.ee. | jq .

kus

  • TODO

kas käivitamiseks öelda

$ sh pdns-api.sh

API'ga tutvumiseks võib olla hea mõte kuulata pealt mingi olemasoleva API-rakenduse ja serveri vahelist liiklust ja siis seda Wireshark abil uurida.

Kasulikud lisamaterjalid

PowerDNS kasutusstatistika

PowerDNS sisaldab sisemist veebiserverit, mille käest saab küsida teenuse kasutusstatistikat, TODO.

PowerDNS kasutamine varjatud-master süsteemis

Kuna PowerDNS kasutab SQL backendi, siis avaliku pädeva DNS teenuse pakkumise juures tekitab see vähemalt esmapilgul kahtlusi. Võib olla on hea mõte tekitada varjatud masteriga lahendus

     ans1 (NSD)                                   ans2 (NSD)
     _____                                        _____
    |     |                                      |     |
    |     |                                      |     |
    |_____| port 8952                            |_____| port 8952
       |                                            |
       |                                            |
   ----|---------------------|----------------------|----
                             |
                           __|__
                          |     | nimetaja (PowerDNS)
                          |     |
                          |_____|

kus

  • ans1, ans2 - avalikud pädevad nimeserverid, tehniliselt slave'id
  • nimetaja - varjatud pädev nimeserver, tehniliselt master

Logimine

Tundub, et vaikimisi logitakse syslog'i.

Varundamine ja taaste

TODO

Kasulikud lisamaterjalid