creatkey überarbeitet
authorAndre Suess<andre.suess@pipkin.cc>
Mon, 28 Jun 2010 18:02:04 +0200
changeset 6 920c1a51ba0e
parent 5 960f5e7f78eb
child 7 9cad6f1c5505
creatkey überarbeitet
.hgignore
README
creatkey
dnssec-creatkey
dnssec-killkey
dnssec-ls
dnssec-sign
killkeys
nagios_dnssec/check_dnssec
nagios_dnssec/check_dnssec_expiration
--- 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