1 #!/bin/bash |
1 #!/bin/bash |
2 |
2 |
3 ZONE_DIR="/etc/bind/master" # ordner fuer die einzelnen zonedateiordner |
3 source dnstools.conf |
4 ABL_ZEIT=1440 # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL |
|
5 |
4 |
6 cd $ZONE_DIR |
5 master_dir=$MASTER_DIR # ordner fuer die einzelnen zonedateiordner |
7 for DOMAIN in * |
6 ablauf_zeit=$ABL_ZEIT # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL |
|
7 |
|
8 cd $master_dir |
|
9 for domain in * |
8 do |
10 do |
9 |
11 |
10 if ( find $ZONE_DIR/$DOMAIN -name "index*" -mmin +$ABL_ZEIT >/dev/null ) # prueft die schluesselindexdateien |
12 if ( find $master_dir/$domain -name "index*" -mmin +$ablauf_zeit >/dev/null ) # prueft die schluesselindexdateien |
11 then # auf zeitpunkt der aenderung |
13 then # auf zeitpunkt der aenderung |
12 |
14 |
13 cd $ZONE_DIR/$DOMAIN |
15 cd $master_dir/$domain |
14 INDEX_FILE=`find . -name "index*" -mmin +$ABL_ZEIT` # schreibt eine liste INDEX_FILE aller |
16 INDEX_FILE=`find . -name ".index*" -mmin +$ablauf_zeit` # schreibt eine liste INDEX_FILE aller |
15 # dateien die vor ABL_ZEIT erstellt worden |
17 # dateien die vor ABL_ZEIT erstellt worden |
16 for INDEX in $INDEX_FILE |
18 for INDEX in $INDEX_FILE |
17 do |
19 do |
18 |
20 |
19 if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen |
21 if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen |
20 then |
22 then |
21 INDEX=${INDEX#./} |
23 INDEX=${INDEX#./} |
22 echo aktualisiert $INDEX in $DOMAIN |
24 echo aktualisiert $INDEX in $domain |
23 |
25 |
24 DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem |
26 DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem |
25 # index in die variable DNS_KEY |
27 # index in die variable DNS_KEY |
26 |
28 |
27 echo $DNS_KEY > $ZONE_DIR/$DOMAIN/$INDEX # schreibt nur die variable |
29 echo $DNS_KEY > $master_dir/$domain/$INDEX # schreibt nur die variable |
28 # DNS_KEY in die indexdatei |
30 # DNS_KEY in die indexdatei |
29 |
31 |
30 rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | \ |
32 rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | \ |
31 grep -v "`cat .index.ksk`") 2> /dev/null # loesche alle schluessel die nicht in der indexdatei |
33 grep -v "`cat .index.ksk`") 2> /dev/null # loesche alle schluessel die nicht in der indexdatei |
32 # stehen |
34 # stehen |
33 mv $DOMAIN $DOMAIN.old |
35 mv $domain .$domain |
34 grep -v 'DNSKEY' $DOMAIN.old >> $DOMAIN # erzeugt ein backup und entfernt alle schluessel |
36 grep -v 'DNSKEY' .$domain >> $domain # erzeugt ein backup und entfernt alle schluessel |
35 # aus der zonedatei |
37 # aus der zonedatei |
36 cat K$DOMAIN.*key >>$DOMAIN # schreibt die aktuellen schluessel in die zonedatei |
38 cat K$domain.*key >>$domain # schreibt die aktuellen schluessel in die zonedatei |
37 dnssec-signzone $DOMAIN |
39 |
|
40 key_counter=`< keycounter` |
|
41 dnssec-signzone $domain && echo $[ key_counter + 1 ] > keycounter |
38 fi |
42 fi |
39 |
43 |
40 |
44 |
41 done |
45 done |
42 fi |
46 fi |