# HG changeset patch # User asuess@dns.net.schlittermann.de # Date 1279114647 -7200 # Node ID 5786a8b53c781f8ef5c87390c0e6e9f62e7427a2 # Parent 5509b98ea06414e20517fc9a15303a89ae94cea6 template hinzugefügt | killkey, creatkey angepasst diff -r 5509b98ea064 -r 5786a8b53c78 dnssec-creatkey --- a/dnssec-creatkey Wed Jul 14 12:05:41 2010 +0200 +++ b/dnssec-creatkey Wed Jul 14 15:37:27 2010 +0200 @@ -1,12 +1,14 @@ #!/bin/bash set -e +#import aus der dnstools.conf source dnstools.conf - master_dir=$MASTER_DIR key_counter_end=$KEY_COUNTER_END -function test_zsk_new { # prueft ob es einen ZSK gibt + +# gibt alle zonen ohne zsk in die standard-ausgabe +function test_zsk_new { for zone in $master_dir/* do test -f $zone/${zone##*/}.signed || continue @@ -14,7 +16,9 @@ done } -function test_ksk_new { # prueft ob es einen KSK gibt + +# gibt alle zonen ohne ksk in die standard-ausgabe +function test_ksk_new { for zone in $master_dir/* do test -f $zone/${zone##*/}.signed || continue @@ -22,11 +26,12 @@ done } + +# gibt alle zonen mitabgelaufenen keycounter in die standardausgabe function test_zsk_time { # prueft den keycounter for zone in $master_dir/* do test -f $zone/${zone##*/}.signed || continue - key_counter_end=$1 test -f $zone/keycounter || echo 0 > $zone/keycounter key_counter=`< $zone/keycounter` @@ -37,26 +42,29 @@ done } -#prüft die eingegebnen domains + +#prüft die eingegebnen domains und erstellt eine liste for utf8domain in $@ do domain=$(idn --quiet "$utf8domain") if [ -d $master_dir/$domain ] then - zsk_aenderung="$zsk_aenderung $domain" + zsk_manuell="$zsk_manuell $domain" else echo $domain ist keine verwaltete Zone fi done -zsk_time=`test_zsk_time $key_counter_end` +# übergibt die standard-ausgabe aus den funktionen in listen +zsk_time=`test_zsk_time` zsk_new=`test_zsk_new` ksk_new=`test_ksk_new` -for NEW_ZSK_ZONE in $zsk_time $zsk_aenderung # Erstellt ZSK +# erstellt zsks +for NEW_ZSK_ZONE in $zsk_time $zsk_manuell do cd $master_dir/$NEW_ZSK_ZONE echo "erzeugt zsk fuer" $NEW_ZSK_ZONE @@ -67,7 +75,9 @@ echo 0 > keycounter done -for NEW_KSK_ZONE in $zsk_aenderung # Erstellt KSK + +# erstellt ksks +for NEW_KSK_ZONE in $zsk_manuell do cd $master_dir/$NEW_KSK_ZONE echo "erzeugt ksk fuer" $NEW_KSK_ZONE @@ -77,18 +87,18 @@ done - -for ZONE in $zsk_time $zsk_new $ksk_new $zsk_aenderung +# fuegt die schluessel in die zone-datei +for zone in $zsk_time $zsk_manuell do - cd $master_dir/$ZONE + cd $master_dir/$zone #loescht alle Schluessel die nicht in der indexdatei stehen - rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | grep -v "`cat .index.ksk`") 2> /dev/null + rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | grep -v "`cat .index.ksk`") 2>/dev/null || true #erzeugt ein backup und entfernt alle schluessel aus der zonedatei - mv $ZONE $ZONE.old - grep -v 'DNSKEY' $ZONE.old >> $ZONE + mv $zone .$zone + grep -v 'DNSKEY' .$zone >> $zone #fuegt die existirenden schluessel in die zonedatei ein - cat K$ZONE.*key >> $ZONE + cat K$zone.*key >> $zone done diff -r 5509b98ea064 -r 5786a8b53c78 dnssec-killkey --- a/dnssec-killkey Wed Jul 14 12:05:41 2010 +0200 +++ b/dnssec-killkey Wed Jul 14 15:37:27 2010 +0200 @@ -1,17 +1,19 @@ #!/bin/bash -ZONE_DIR="/etc/bind/master" # ordner fuer die einzelnen zonedateiordner -ABL_ZEIT=1440 # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL +source dnstools.conf -cd $ZONE_DIR -for DOMAIN in * +master_dir=$MASTER_DIR # ordner fuer die einzelnen zonedateiordner +ablauf_zeit=$ABL_ZEIT # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL + +cd $master_dir +for domain in * do - if ( find $ZONE_DIR/$DOMAIN -name "index*" -mmin +$ABL_ZEIT >/dev/null ) # prueft die schluesselindexdateien + if ( find $master_dir/$domain -name "index*" -mmin +$ablauf_zeit >/dev/null ) # prueft die schluesselindexdateien then # auf zeitpunkt der aenderung - cd $ZONE_DIR/$DOMAIN - INDEX_FILE=`find . -name "index*" -mmin +$ABL_ZEIT` # schreibt eine liste INDEX_FILE aller + cd $master_dir/$domain + INDEX_FILE=`find . -name ".index*" -mmin +$ablauf_zeit` # schreibt eine liste INDEX_FILE aller # dateien die vor ABL_ZEIT erstellt worden for INDEX in $INDEX_FILE do @@ -19,22 +21,24 @@ if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen then INDEX=${INDEX#./} - echo aktualisiert $INDEX in $DOMAIN + echo aktualisiert $INDEX in $domain - DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem + DNS_KEY=`tail -n1 $INDEX` # speichert den letzten eintrag aus dem # index in die variable DNS_KEY - echo $DNS_KEY > $ZONE_DIR/$DOMAIN/$INDEX # schreibt nur die variable + echo $DNS_KEY > $master_dir/$domain/$INDEX # schreibt nur die variable # DNS_KEY in die indexdatei rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | \ grep -v "`cat .index.ksk`") 2> /dev/null # loesche alle schluessel die nicht in der indexdatei # stehen - mv $DOMAIN $DOMAIN.old - grep -v 'DNSKEY' $DOMAIN.old >> $DOMAIN # erzeugt ein backup und entfernt alle schluessel + mv $domain .$domain + grep -v 'DNSKEY' .$domain >> $domain # erzeugt ein backup und entfernt alle schluessel # aus der zonedatei - cat K$DOMAIN.*key >>$DOMAIN # schreibt die aktuellen schluessel in die zonedatei - dnssec-signzone $DOMAIN + cat K$domain.*key >>$domain # schreibt die aktuellen schluessel in die zonedatei + + key_counter=`< keycounter` + dnssec-signzone $domain && echo $[ key_counter + 1 ] > keycounter fi diff -r 5509b98ea064 -r 5786a8b53c78 dnssec-sign --- a/dnssec-sign Wed Jul 14 12:05:41 2010 +0200 +++ b/dnssec-sign Wed Jul 14 15:37:27 2010 +0200 @@ -2,6 +2,7 @@ source ./dnstools.conf master_dir=$MASTER_DIR + #prüft die eingegebnen domains for utf8domain in $@ do @@ -15,7 +16,9 @@ fi done -function time_out { #prüft den ablauf der signatur + +#gibt zonen mit abgelaufener signatur in die standardausgabe +function time_out { unowtime=`date +%s` alerttime=`date -d @$[unowtime - $[ 3600 * $SIGN_ALERT_TIME ] ] +%Y%m%d%H` @@ -37,7 +40,9 @@ done } -function new_sign { # prüft nach der ersten signatur + +#gibt zonen mit schluessel aber ohne signatur in die standardausgabe +function new_sign { for zone in $master_dir/* do if [ -f $zone/keycounter ] @@ -50,14 +55,17 @@ done } + +#uebergibt die ausgabe der funktionen in listen zone_new_sign=`new_sign` zone_time_out=`time_out` + +# signiert alle zonen aus den listen for zone in $zone_aenderung $zone_new_sign $zone_time_out do cd $zone domain=${zone##/*/} key_counter=`< keycounter` - dnssec-signzone $domain && echo $[ key_counter + 1 ] > keycounter done diff -r 5509b98ea064 -r 5786a8b53c78 dnstools.conf --- a/dnstools.conf Wed Jul 14 12:05:41 2010 +0200 +++ b/dnstools.conf Wed Jul 14 15:37:27 2010 +0200 @@ -1,3 +1,4 @@ +ABL_ZEIT=1440 # Dauer des Key-Rollover BIND_DIR=/etc/bind SECONDARY=hh.schlittermann.de PRIMARY=pu.schlittermann.de diff -r 5509b98ea064 -r 5786a8b53c78 templates/named.conf.zone --- a/templates/named.conf.zone Wed Jul 14 12:05:41 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -zone "[% domain %]" { -// Start: [% start %] -// Invoice: [% customer %] -// UTF8: [% utf8domain %] - type master; - file "[% file %]"; - allow-transfer { localhost; [% primary_ip %]; [% secondary_ip %]; }; - allow-query { any; }; - also-notify { [% primary_ip %]; }; -}; diff -r 5509b98ea064 -r 5786a8b53c78 templates/named.config --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/named.config Wed Jul 14 15:37:27 2010 +0200 @@ -0,0 +1,10 @@ +zone "[% domain %]" { +// Start: [% start %] +// Invoice: [% customer %] +// UTF8: [% utf8domain %] + type master; + file "[% file %]"; + allow-transfer { localhost; [% primary_ip %]; [% secondary_ip %]; }; + allow-query { any; }; + also-notify { [% primary_ip %]; }; +}; diff -r 5509b98ea064 -r 5786a8b53c78 templates/named.zone --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/templates/named.zone Wed Jul 14 15:37:27 2010 +0200 @@ -0,0 +1,17 @@ +$ORIGIN [% domain %]. +$TTL 1d +@ IN SOA [% primary %]. [% hostmaster %]. ( + [% time %] ; serial + 1d ; refresh + 2h ; retry + 7d ; expire + 1d ; default ttl +) + + IN TXT "invoice: [% customer %]" + IN TXT "start: [% start %]" + IN TXT "utf8: [% utf8domain %]" + + IN NS [% primary %]. + IN NS [% secondary %]. + diff -r 5509b98ea064 -r 5786a8b53c78 zone-mk --- a/zone-mk Wed Jul 14 12:05:41 2010 +0200 +++ b/zone-mk Wed Jul 14 15:37:27 2010 +0200 @@ -72,25 +72,17 @@ test -f $zonefile && { echo "$zonefile exists. Skipping $domain" >&2; continue; } test -f $config && { echo "$config exists. Skipping $domain" >&2; continue; } - cat <$zonefile -\$ORIGIN $domain. -\$TTL 1d -@ IN SOA $primary. $hostmaster. ( - $(date +%Y%m%d00) ; serial - 1d ; refresh - 2h ; retry - 7d ; expire - 1d ; default ttl -) - - IN TXT "invoice: $customer" - IN TXT "start: $start" - IN TXT "utf8: $utf8domain" - - IN NS $primary. - IN NS $secondary. - -xxx + tpage \ + --define start="$start" \ + --define domain="$domain" \ + --define time="$(date +%Y%m%d00)" \ + --define primary="$primary" \ + --define secondary="$secondary" \ + --define hostmaster="$hostmaster" \ + --define customer="$customer" \ + --define utf8domain="$utf8domain" \ + templates/named.zone \ + >$zonefile tpage \ --define domain="$domain" \ @@ -100,7 +92,7 @@ --define file="$master_dir/$domain/$domain" \ --define primary_ip="$primary_ip" \ --define secondary_ip="$secondary_ip" \ - templates/named.conf.zone \ + templates/named.config \ >$config done