SSブログ

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を更新してくれるはず。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。