NSEC3PARAMをCRON(8)で更新する(DNSSECネタ)
ネタ的には「auto-dnssec maintain; を試してみる」あたりの設定が前提です。
まず、以下のようなスクリプトを作ります。なるべく通常インストールされてそうなコマンドに限定して書いたつもり。
スクリプトは
言うまでもないですが
まず、以下のようなスクリプトを作ります。なるべく通常インストールされてそうなコマンドに限定して書いたつもり。
$ su -
# cd /var/named
# mkdir bin
# chown -R named:named bin
# su - named --shell=/bin/bash
$ cd bin
$ cat > update-nsec3param.sh
#!/bin/sh
RETVAL=0
usage () {
echo $"Usage: $0 -s server_ip_address -d zone_name" 1>&2
RETVAL=1
}
OPT=""
DOMAIN=""
SERVER=""
while getopts s:d: OPT
do
case $OPT in
d) DOMAIN=$OPTARG
;;
s) SERVER=$OPTARG
;;
\?) usage
exit $RETVAL
;;
esac
done
shift `expr $OPTIND - 1`
if [ -z "$DOMAIN" ]; then
usage
exit $RETVAL
fi
if [ -z "$SERVER" ]; then
usage
exit $RETVAL
fi
ITER=$((RANDOM % 6 + 5))
LEN=$((RANDOM % 16 + 3))
HASH=`/usr/bin/openssl rand $LEN | /usr/bin/hexdump -e '1/1 "%02x"'`
cat << UFILE
server $SERVER
update delete $DOMAIN. IN NSEC3PARAM
update add $DOMAIN. 0 IN NSEC3PARAM 1 0 $ITER $HASH
send
UFILE
exit 0
スクリプトは
openssl(1)
とhexdump(1)
がインストールされていることを前提にしてます。salt
の長さやiterations
の回数は適当です。まあ、長すぎず短すぎない程度にした感じ。nsupdate(1)
を受け付けてくれるIPアドレスを192.0.2.2
、更新対象のゾーンをexample.jp
と仮にでもしておきます。crontab -e
とかして以下のような行を追加します。10 3 1,11,21 * * /var/named/bin/update-nsec3param.sh \
-s 192.0.2.2 -d example.jp \
| /usr/bin/nsupdate \
-k /var/named/chroot/var/run/named/session.key \
> /dev/null 2>&1
言うまでもないですが
\
は継続行の意味です。これで毎月1日11日21日の3時10分頃にNSEC3PARAM
を更新してくれるはず。
コメント 0