:::: MENU ::::

bind9 autopodpis stref DNSSEC

środowisko: ESXi/OpenVZ Debian bind

Regularne podpisywanie plików stref wykorzystujących rozszerzenie DNSSEC można wdrożyć z użyciem prostego skryptu oraz Cron`a

Skrypt podpisuje strefy DNS modyfikując jednocześnie ich seriale w oparciu do datę podpisu strefy w formacie RRRRMMDDLL (Rok Miesiąc Dzień Licznik). Serial strefy jest automatycznie zmieniany na datę podpisu lub jeżeli następuje ponowne podpisanie strefy w tym samym dniu zstaje on inkrementowany. Z racji długości pola LL w jednym dniu możliwe jest 99 krotne podpisanie tej samej strefy.

W wybranym miejscu umieszczamy skrypt podpisujący strefy np. w /usr/sbin

#!/bin/sh
 
#
# This script sign zone file, chceck and set/increment
# zone serial based on current date YYYMMMDDnn. Collects
# salts in separate files.
#
# Author Piotr Najman (Aug 17, 2016 )
# Extend script of Jesin A (Mar 19, 2014)
#
# Usage: zonesigner.sh zone zonefile
# zonesigner.sh example.com example.com.zone
#
 
#
# Set vars
PDIR=`pwd`
ZONEDIR="/var/cache/bind" #location of your zone files
ZONE=$1
ZONEFILE=$2
DNSSERVICE="bind9"
cd $ZONEDIR
SERIAL=`/usr/sbin/named-checkzone $ZONE $ZONEFILE | egrep -ho '[0-9]{10}'`
TODAYSERIAL=`date "+%Y%m%d00"`
DNSSECSIGNER="/usr/sbin/dnssec-signzone"
SERVICE="/usr/sbin/service"
 
#
# Generate new zone serial and update zone file
if [ "$TODAYSERIAL" -gt "$SERIAL" ]; then
    NEWSERIAL=$TODAYSERIAL
else
    NEWSERIAL=$((SERIAL+1))
fi
sed -i 's/'$SERIAL'/'$NEWSERIAL'/' $ZONEFILE
 
#
# Generate salt
SALT=`head -c 1000 /dev/random | sha1sum | cut -b 1-16`
 
#
# Collects salts if you need (uncomment the line below)
#echo $SALT >> salts-$ZONEFILE
 
#
# Sign zone and reload service configuration
$DNSSECSIGNER -A -3 $SALT -N increment -o $1 -t $2
$SERVICE $DNSSERVICE reload
 
cd $PDIR

Następnie dokonujemy modyfikacji crontab`a

crontab -e

dodając wpis aby wywoływał skrypt w określonych odstępach czasu (np co 4 tygodnie)

* * */28 * * /usr/sbin/zonesigner.sh mojadomena.pl mojadomena.pl.zone

gotowe.