--- a/.hgignore Mon Jun 21 13:32:52 2010 +0200
+++ b/.hgignore Mon Jun 28 18:02:04 2010 +0200
@@ -1,1 +1,2 @@
creatksk.old
+creatkey.old
--- a/README Mon Jun 21 13:32:52 2010 +0200
+++ b/README Mon Jun 28 18:02:04 2010 +0200
@@ -1,8 +1,7 @@
zonedatei erstellen
- mkdomain kundenname domainname
-- creatkey domainname
-- creatkey -k domainname
+- creatkey domainname # Ab bind 9.6 NSEC3RSASHA1 statt RSASHA1 zum erstellen der keys benutzen
- mkready
@@ -20,11 +19,11 @@
# ausfuehren
neuen ZSK erstellen
-- creatzsk domainname
-- spaeter oder per cron killkeys ausfuehren
+- creatkey
+- killkeys
neuen KSK erstellen
-- creatksk -k domainname
-- spaeter oder per cron killkeys ausfuehren
+- creatkey
+- killkeys
--- a/creatkey Mon Jun 21 13:32:52 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-#!/bin/bash
-
-while getopts ":k" opt
-do
- case $opt in
- k ) K_OPTION="1";;
- \? ) echo "SYNOPSIS: creatkey [-k] zonename"
- exit 1
- esac # prueft ob -k als option angegeben wurde
- shift
-done
-
-test $# -lt 1 && echo "SYNOPSIS: creatkey [-k] zonename" && exit 1
- # prueft ob die eingabe stimmt
-
-for DOMAIN in $@ # durchgang fuer jede eingabe
-do
- ZONE_DIR=/etc/bind/master # konfiguration
- ZONE_NAME=`idn --quiet $DOMAIN`
-
- if [ -d $ZONE_DIR/$ZONE_NAME ] # prueft die existens des zoneordners
- then
- cd $ZONE_DIR/$ZONE_NAME/
-
- test -f index.ksk || touch index.ksk
- test -f index.zsk || touch index.zsk
-
- if test $K_OPTION # erzeugt die schluessel und erstelt eine indexdatei
- then
- echo "erzeugt ksk fuer" $DOMAIN
- dnssec-keygen -a RSASHA1 -b 2048 -n ZONE -f KSK $ZONE_NAME >> index.ksk
- INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk
- else
- echo "erzeugt zsk fuer" $DOMAIN
- dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk
- INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk
- fi
-
- #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
-
- #erzeugt ein backup und entfernt alle schluessel aus der zonedatei
- mv $ZONE_NAME $ZONE_NAME.old
- grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME
-
- #fuegt die existirenden schluessel in die zonedatei ein
- cat K$ZONE_NAME.*key >>$ZONE_NAME
-
- #signiert die zonedatei - erzeugt zone.signed
- dnssec-signzone $ZONE_NAME
- else
- echo "zone $ZONE_NAME nicht gefunden"
- fi
-
-done
-
-exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dnssec-creatkey Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+ZONE_DIR="/etc/bind/master"
+ZSKLIVE=60 # ZSK-Schluessellebensdauer in Tagen
+
+function TEST_ZSK { # prueft ob es einen ZSK gibt
+ for DOMAIN in $ZONE_DIR/*
+ do
+ test -f $DOMAIN/index.zsk || echo ${DOMAIN##/*/}
+ done
+}
+
+function TEST_KSK { # prueft ob es einen KSK gibt
+ for DOMAIN in $ZONE_DIR/*
+ do
+ test -f $DOMAIN/index.ksk || echo ${DOMAIN##/*/}
+ done
+}
+
+function TEST_ZSK_TIME { # prueft ob der ZSK abgelaufen ist
+ for DOMAIN in $ZONE_DIR/*
+ do
+ STARTTIME=`ls $DOMAIN/index.zsk -l --time-style=+%s | cut -d' ' -f6 2>/dev/null`
+ ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]]
+ NOWTIME=`date +%s`
+
+ if [ $ENDTIME -le $NOWTIME ]
+ then
+ echo ${DOMAIN##/*/}
+ fi
+ done
+}
+
+
+VAR_ZSK_TIME=`TEST_ZSK_TIME`
+VAR_ZSK=`TEST_ZSK`
+VAR_KSK=`TEST_KSK`
+
+
+for NEW_ZSK_ZONE in $VAR_ZSK $VAR_ZSK_TIME # Erstellt ZSK
+do
+ cd $ZONE_DIR/$NEW_ZSK_ZONE
+ echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
+ dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> index.zsk
+ INDEX_ZSK=$( tail -n2 index.zsk )
+ echo $INDEX_ZSK | fmt -w1 > index.zsk
+done
+
+for NEW_KSK_ZONE in $VAR_KSK # Erstellt KSK
+do
+ cd $ZONE_DIR/$NEW_KSK_ZONE
+ echo "erzeugt ksk fuer" $NEW_KSK_ZONE
+ dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> index.ksk
+ INDEX_KSK=$( tail -n2 index.ksk )
+ echo $INDEX_KSK | fmt -w1 > index.ksk
+done
+
+
+
+for ZONE in $VAR_ZSK $VAR_KSK $VAR_ZSKTIME
+do
+ cd $ZONE_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
+
+ #erzeugt ein backup und entfernt alle schluessel aus der zonedatei
+ mv $ZONE $ZONE.old
+ grep -v 'DNSKEY' $ZONE.old >> $ZONE
+
+ #fuegt die existirenden schluessel in die zonedatei ein
+ cat K$ZONE.*key >> $ZONE
+done
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dnssec-killkey Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,43 @@
+#!/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
+
+cd $ZONE_DIR
+for DOMAIN in *
+do
+
+ if ( find $ZONE_DIR/$DOMAIN -name "index*" -mmin +$ABL_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
+ # dateien die vor ABL_ZEIT erstellt worden
+ for INDEX in $INDEX_FILE
+ do
+
+ if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen
+ then
+ INDEX=${INDEX#./}
+ echo aktualisiert $INDEX in $DOMAIN
+
+ 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
+ # 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
+ # aus der zonedatei
+ cat K$DOMAIN.*key >>$DOMAIN # schreibt die aktuellen schluessel in die zonedatei
+ dnssec-signzone $DOMAIN
+ fi
+
+
+ done
+ fi
+done
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dnssec-ls Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+ZONE_DIR="/etc/bind/master"
+ZSKLIVE=60 # ZSK-Schluessellebensdauer in Tagen
+KSKLIVE=360 # KSK-Schluessellebensdauer in Tagen
+
+
+for DOMAIN in $ZONE_DIR/*
+do
+
+ STARTTIME=`ls $DOMAIN/index.zsk -l --time-style=+%s | cut -d' ' -f6`
+ Z_ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]]
+ echo ${DOMAIN##/*/} index.zsk `date -d @$Z_ENDTIME +%d.%m.%Y` | tr ' ' '\t'
+
+ STARTTIME=`ls $DOMAIN/index.ksk -l --time-style=+%s | cut -d' ' -f6`
+ K_ENDTIME=$[STARTTIME + $[KSKLIVE * 86400]]
+ echo ${DOMAIN##/*/} index.ksk `date -d @$K_ENDTIME +%d.%m.%Y` | tr ' ' '\t'
+done
+
+
+ #echo Ablauf $INDEX `date -d @$ENDTIME +%Y%m%d000000`
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dnssec-sign Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+ZONE_DIR="/etc/bind/master"
+ZSKLIVE=60
+
+function AENDERUNG {
+ for DOMAIN in $ZONE_DIR/*
+ do
+ find $DOMAIN -name "*.signed" -mmin -1440 >/dev/null && echo $DOMAIN
+ done
+}
+
+AENDERUNG
+
+for ZONE in `AENDERUNG`
+do
+ cd $ZONE
+
+ DOMAIN=${ZONE##/*/}
+
+ STARTTIME=`ls index.zsk -l --time-style=+%s | cut -d' ' -f6`
+ ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]]
+
+ dnssec-signzone -e `date -d @$ENDTIME +%Y%m%d000000` $DOMAIN
+
+done
--- a/killkeys Mon Jun 21 13:32:52 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-#!/bin/bash
-
-ZONE_DIR="/etc/bind/master" # ordner fuer die einzelnen zonedateiordner
-ABL_ZEIT=30 # zeit in minuten waehrend der 2 keys verwendet werden / ungefaehr doppelte TTL
-
-cd $ZONE_DIR
-for DOMAIN in *
-do
-
- if ( find $ZONE_DIR/$DOMAIN -name "index*" -mmin +$ABL_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
- # dateien die vor ABL_ZEIT erstellt worden
- for INDEX in $INDEX_FILE
- do
-
- if ( wc -l $INDEX | grep ^2 > /dev/null ) # prueft die indexdatei auf anzahl an eintraegen
- then
- INDEX=${INDEX#./}
- echo aktualisiert $INDEX in $DOMAIN
-
- 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
- # 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
- # aus der zonedatei
- cat K$DOMAIN.*key >>$DOMAIN # schreibt die aktuellen schluessel in die zonedatei
- dnssec-signzone $DOMAIN
- fi
-
-
- done
- fi
-done
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/nagios_dnssec/check_dnssec Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+DOMAIN="eins.lan dreizehn.lan sieben.lan xn--fnf-hoa.lan zehn.lan acht.lan"
+RETURN=0
+TESTX=6
+
+for DOM in $DOMAIN
+do
+
+
+ /etc/bind/bin/nagios_dnssec/check_dnssec_expiration -H 127.0.0.1 -D $DOM -w 2d >/dev/null
+ STATUS=$?
+
+ case $STATUS in
+ 1) WARNING="$WARNING $DOM ";;
+ 2) CRITICAL="$CRITICAL $DOM "
+ esac
+
+done
+
+if [ "$CRITICAL" ]
+then
+ echo "CRITICAL: $CRITICAL"
+ exit 2
+else
+ if [ "$WARNING" ]
+ then
+ echo "WARNING: $WARNING"
+ exit 1
+ else
+ echo "OK:"
+ exit 0
+ fi
+fi
+
Binary file nagios_dnssec/check_dnssec_expiration has changed