Initial commit
This commit is contained in:
commit
15758b864d
10 changed files with 165 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*.sig
|
10
Makefile
Normal file
10
Makefile
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
sign: $(patsubst %,%.sig,$(wildcard *.zone))
|
||||||
|
|
||||||
|
%.sig: %
|
||||||
|
gpg -o $@ --detach-sign $<
|
||||||
|
|
||||||
|
upload:
|
||||||
|
printf 'put %s\n' *.zone *.sig | sftp dns.parabox.it-syndikat.org:zones/
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.sig
|
16
README
Normal file
16
README
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
ITS DNS Zone Managment
|
||||||
|
======================
|
||||||
|
|
||||||
|
This repo contains the primary copies of all our DNS zones.
|
||||||
|
|
||||||
|
If you have access to our primary DNS server (dns.parabox.it-syndikat.org),
|
||||||
|
deploy them using this command:
|
||||||
|
|
||||||
|
$ make sign upload
|
||||||
|
|
||||||
|
This will sign the zones using gpg using your default key and upload them
|
||||||
|
to the server using sftp. The server has incron running which will detect
|
||||||
|
the upload, verify the gpg signature, copy the zones into knot's zone
|
||||||
|
directory and reload the modified zones.
|
||||||
|
|
||||||
|
Note: Knot handles DNSSEC signing on the server side.
|
35
it-syndik.at.zone
Normal file
35
it-syndik.at.zone
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
; -*- tab-width: 16; indent-tabs-mode: t; -*-
|
||||||
|
|
||||||
|
@ SOA ( ns0.it-syndik.at.
|
||||||
|
hostmaster.it-syndikat.org.
|
||||||
|
1618291833 ; serial
|
||||||
|
3h ; refresh
|
||||||
|
1h ; retry
|
||||||
|
4w ; expire
|
||||||
|
5m ; negcache ttl
|
||||||
|
)
|
||||||
|
|
||||||
|
$TTL 5m ; TODO: decrease when everything works, also negcache above
|
||||||
|
|
||||||
|
@ A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
|
||||||
|
@ NS ns0.it-syndik.at.
|
||||||
|
NS ns6.gandi.net.
|
||||||
|
|
||||||
|
; Remember to update these on gandi under "Glue records"
|
||||||
|
ns0 A 85.10.196.15
|
||||||
|
ns0 AAAA 2a01:4f8:a0:6171:0:ff:fe00:1f
|
||||||
|
|
||||||
|
matrix A 85.10.196.35
|
||||||
|
matrix AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
|
||||||
|
riot A 85.10.196.35
|
||||||
|
riot AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
|
||||||
|
1.riot CNAME riot
|
||||||
|
2.riot CNAME riot
|
||||||
|
3.riot CNAME riot
|
||||||
|
|
||||||
|
synapse A 85.10.196.35
|
||||||
|
synapse AAAA 2a01:4f8:a0:6171:0:ff:fe00:1b
|
50
it-syndikat.org.zone
Normal file
50
it-syndikat.org.zone
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
; -*- tab-width: 16; indent-tabs-mode: t; -*-
|
||||||
|
|
||||||
|
@ SOA ( ns0.it-syndikat.org.
|
||||||
|
hostmaster.it-syndikat.org.
|
||||||
|
1618293434 ; serial
|
||||||
|
3h ; refresh
|
||||||
|
1h ; retry
|
||||||
|
4w ; expire
|
||||||
|
5m ; negcache ttl
|
||||||
|
)
|
||||||
|
|
||||||
|
$TTL 5m
|
||||||
|
|
||||||
|
@ A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
MX 10 mail.it-syndikat.org.
|
||||||
|
TXT "v=spf1 mx -all"
|
||||||
|
NS ns0.it-syndikat.org.
|
||||||
|
NS ns6.gandi.net.
|
||||||
|
|
||||||
|
; Remember to update these on gandi under "Glue records"
|
||||||
|
ns0 A 85.10.196.15
|
||||||
|
ns0 AAAA 2a01:4f8:a0:6171:0:ff:fe00:1f
|
||||||
|
|
||||||
|
|
||||||
|
mail A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:6
|
||||||
|
paramail A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:6
|
||||||
|
|
||||||
|
lux A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
|
||||||
|
mailtrain A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
|
||||||
|
meta A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171:0:ff:fe00:5
|
||||||
|
MX 10 mail.it-syndikat.org.
|
||||||
|
TXT "v=spf1 mx -all"
|
||||||
|
|
||||||
|
turn A 85.10.196.35
|
||||||
|
www CNAME it-syndikat.org.
|
||||||
|
|
||||||
|
parabox A 85.10.196.35
|
||||||
|
AAAA 2a01:4f8:a0:6171::2
|
||||||
|
NS parabox.it-syndikat.org.
|
||||||
|
|
||||||
|
mailtrain MX 10 mailtrain.it-syndikat.org.
|
||||||
|
|
19
server/README
Normal file
19
server/README
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Server side setup
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
As root:
|
||||||
|
|
||||||
|
$ apt-get install incron
|
||||||
|
$ echo <the user on the server> > /etc/incron.allow
|
||||||
|
$ cp zone-admin.sshd_config /etc/ssh/sshd_config.d/zone-admin.conf
|
||||||
|
$ cp zone-admin.sudoers /etc/sudoers.d/zone-admin
|
||||||
|
|
||||||
|
As the user:
|
||||||
|
|
||||||
|
$ sed 's/$USER/<the user on the server>/g' ./incrontab | incrontab -
|
||||||
|
# install knot-gpgv-import into ~/
|
||||||
|
$ mkdir zones/
|
||||||
|
|
||||||
|
# Paste your gpg public key + Ctrl-D
|
||||||
|
$ gpg --no-default-keyring --keyring $HOME/trustedkeys.kbx -a --import
|
||||||
|
|
1
server/incrontab
Normal file
1
server/incrontab
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/home/$USER/zones IN_DELETE,IN_CLOSE_WRITE,IN_MOVED_TO /home/$USER/knot-gpgv-import $@/$#
|
20
server/knot-gpgv-import
Normal file
20
server/knot-gpgv-import
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
file="$1"
|
||||||
|
|
||||||
|
case "$file" in
|
||||||
|
# We don't control the order of the zone/sig upload so just try on both
|
||||||
|
*.zone) ;;
|
||||||
|
*.zone.sig) ;;
|
||||||
|
|
||||||
|
# Ignore everything else
|
||||||
|
*) exit 0 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -f "$file" ] || exit 1
|
||||||
|
[ -f "$file".sig ] || exit 2
|
||||||
|
gpgv --keyring $HOME/trustedkeys.kbx "$file".sig "$file" || exit 3
|
||||||
|
cp -t /var/lib/knot "$file" || exit 4
|
||||||
|
sudo -u knot knotc zone-reload "$(basename "${file%*.zone*}")"
|
11
server/zone-admin.sshd_config
Normal file
11
server/zone-admin.sshd_config
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Match Group zone-admin
|
||||||
|
ChrootDirectory %h
|
||||||
|
ForceCommand internal-sftp
|
||||||
|
AllowTcpForwarding no
|
||||||
|
AllowStreamLocalForwarding no
|
||||||
|
AllowAgentForwarding no
|
||||||
|
AcceptEnv no
|
||||||
|
X11Forwarding no
|
||||||
|
PermitTunnel no
|
||||||
|
PermitUserRC no
|
||||||
|
PasswordAuthentication no
|
2
server/zone-admin.sudoers
Normal file
2
server/zone-admin.sudoers
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Cmnd_Alias ZONE_RELOAD = /usr/sbin/knotc zone-reload *
|
||||||
|
%zone-admin ALL = (knot) NOPASSWD: ZONE_RELOAD
|
Reference in a new issue