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