|
1 #!/bin/bash |
|
2 |
|
3 ZONE_DIR="/etc/bind/master" |
|
4 ZSKLIVE=60 # ZSK-Schluessellebensdauer in Tagen |
|
5 |
|
6 function TEST_ZSK { # prueft ob es einen ZSK gibt |
|
7 for DOMAIN in $ZONE_DIR/* |
|
8 do |
|
9 test -f $DOMAIN/index.zsk || echo ${DOMAIN##/*/} |
|
10 done |
|
11 } |
|
12 |
|
13 function TEST_KSK { # prueft ob es einen KSK gibt |
|
14 for DOMAIN in $ZONE_DIR/* |
|
15 do |
|
16 test -f $DOMAIN/index.ksk || echo ${DOMAIN##/*/} |
|
17 done |
|
18 } |
|
19 |
|
20 function TEST_ZSK_TIME { # prueft ob der ZSK abgelaufen ist |
|
21 for DOMAIN in $ZONE_DIR/* |
|
22 do |
|
23 STARTTIME=`ls $DOMAIN/index.zsk -l --time-style=+%s | cut -d' ' -f6 2>/dev/null` |
|
24 ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]] |
|
25 NOWTIME=`date +%s` |
|
26 |
|
27 if [ $ENDTIME -le $NOWTIME ] |
|
28 then |
|
29 echo ${DOMAIN##/*/} |
|
30 fi |
|
31 done |
|
32 } |
|
33 |
|
34 |
|
35 VAR_ZSK_TIME=`TEST_ZSK_TIME` |
|
36 VAR_ZSK=`TEST_ZSK` |
|
37 VAR_KSK=`TEST_KSK` |
|
38 |
|
39 |
|
40 for NEW_ZSK_ZONE in $VAR_ZSK $VAR_ZSK_TIME # Erstellt ZSK |
|
41 do |
|
42 cd $ZONE_DIR/$NEW_ZSK_ZONE |
|
43 echo "erzeugt zsk fuer" $NEW_ZSK_ZONE |
|
44 dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> index.zsk |
|
45 INDEX_ZSK=$( tail -n2 index.zsk ) |
|
46 echo $INDEX_ZSK | fmt -w1 > index.zsk |
|
47 done |
|
48 |
|
49 for NEW_KSK_ZONE in $VAR_KSK # Erstellt KSK |
|
50 do |
|
51 cd $ZONE_DIR/$NEW_KSK_ZONE |
|
52 echo "erzeugt ksk fuer" $NEW_KSK_ZONE |
|
53 dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> index.ksk |
|
54 INDEX_KSK=$( tail -n2 index.ksk ) |
|
55 echo $INDEX_KSK | fmt -w1 > index.ksk |
|
56 done |
|
57 |
|
58 |
|
59 |
|
60 for ZONE in $VAR_ZSK $VAR_KSK $VAR_ZSKTIME |
|
61 do |
|
62 cd $ZONE_DIR/$ZONE |
|
63 |
|
64 #loescht alle Schluessel die nicht in der indexdatei stehen |
|
65 rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null |
|
66 |
|
67 #erzeugt ein backup und entfernt alle schluessel aus der zonedatei |
|
68 mv $ZONE $ZONE.old |
|
69 grep -v 'DNSKEY' $ZONE.old >> $ZONE |
|
70 |
|
71 #fuegt die existirenden schluessel in die zonedatei ein |
|
72 cat K$ZONE.*key >> $ZONE |
|
73 done |