Poniższy skrypt ma tylko jedno zadanie, skrócić czas dodawania domen do dlv.isc.org, wiadomo przy większej ilości domen człowiek by oszalał :) Zanim przystąpimy do korzystania z tego dobrodziejstwa należy skonfigurować naszego BIND'a do obsługi DNSSEC ale z tym to już odsyłam do klick. Skrypt wykonuje następujące czynności: dodaje domenę do serwisu, generuje niezbędne klucze KSK i ZSK, odsyła KSK do serwisu przy czym pobiera wpis TXT, przenosi klucze w ustalone miejsce, dodaje wpisy KSK/ZSK/TXT do pliku strefy domeny oraz zwiększa jej serial, dodaje dopisek "signed" w ustalonym named.conf* dla danej domeny, generuje plik domenta.tld-update.sh dzięki któremu podpisanie domeny po zmianie zawartości strefy będzie szybkie i przyjemne hmmm i to chyba wszystko :) Po zakończeniu działania skryptu wystarczy przeładować BIND'a ;]
#!/bin/bash
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2009 AfterHours/AHS/Actives.
######################################################
################ USTAWIENIA ##########################
######################################################
# Lista domen oddzielona spacjami
DOMAIN_LIST="zwateam.net 4battle.net"
# Dane logowania do dlv.isc.org
LOGIN=""
PASSWORD=""
# Sciezka dla kluczy
KEYS_DIR="/etc/bind/keys"
# Sciezka do cURL
CURL="/usr/bin/curl"
# Sciezka do plikow strefy
ZONE_DIR="/etc/bind/master"
# Rozszerzenie plikow strefy tj. domena.tld.zone
ZONE_EXT=".zone"
# Sciezka do pliku z strefami
CONF="/etc/bind/named.conf.local"
######################################################
################ Skrypt #########################
######################################################
for DOMAIN in $DOMAIN_LIST;
do
echo -e '****** \e[01;33mPobieram Token Autentycznosci\e[00m'
#---------------------------------------------------------
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
--user-agent Mozilla/4.0 --output output.dat \
https://dlv.isc.org/session/new
AUTH=`cat output.dat | grep name=\"authenticity_token\" \
| awk -F "value=\"" '{print $2}' | awk -F "\"" '{print $1}'`
#---------------------------------------------------------
echo -e '>>> \e[01;36mAuthenticity Token:\e[00m '$AUTH
echo -e '****** \e[01;33mPodejmuje probe zalogowania\e[00m'
#---------------------------------------------------------
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
-F "authenticity_token=$AUTH" \
-F "commit=Log In" \
-F "session[login]=$LOGIN" \
-F "session[password]=$PASSWORD" \
--location \
--output output.dat \
https://dlv.isc.org/session
ID=`cat output.dat | grep "Manage Zones" \
| awk -F "users/" '{print $2}' | awk -F "/" '{print $1}'`
if [ ! -z "$ID" ]; then
#---------------------------------------------------------
echo -e '>>> \e[01;36mZalogowany, ID uzytkownika:\e[00m '$ID
echo -e '****** \e[01;33mDodaje domene: \e[00m'$DOMAIN
#---------------------------------------------------------
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
-F "authenticity_token=$AUTH" \
-F "commit=Add Zone" \
-F "zone[name]=$DOMAIN" \
--location \
--output output.dat \
https://dlv.isc.org/users/$ID/zones
ID_DOMAIN=`cat output.dat | grep id=\"new_dnskey\" \
| awk -F "zones/" '{print $2}' | awk -F "/" '{print $1}'`
if [ ! -z "$ID_DOMAIN" ]; then
#---------------------------------------------------------
echo -e '>>> \e[01;36mDomena zostala dodana, ID: \e[00m'$ID_DOMAIN
echo -e '****** \e[01;33mGeneruje klucze\e[00m'
#---------------------------------------------------------
KSK=`dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -b 2048 -n ZONE $DOMAIN`
ZSK=`dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE $DOMAIN`
#---------------------------------------------------------
echo -e '>>> \e[01;36mWygenerowany klucze: \e[00m'$KSK' '$ZSK
echo -e '****** \e[01;33mWysylam klucz KSK\e[00m'
#---------------------------------------------------------
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
-F "authenticity_token=$AUTH" \
-F "commit=Upload" \
-F "_method=put" \
-F "zone[record_file]=@$KSK.key" \
--location \
--output output.dat \
https://dlv.isc.org/zones/$ID_DOMAIN/upload
mv $KSK* $KEYS_DIR/
mv $ZSK* $KEYS_DIR/
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
--output output.dat \
https://dlv.isc.org/zones/$ID_DOMAIN
#TXT=`cat output.dat | grep "dlv" \
TXT=`cat output.dat | grep "dlv" \
if [ ! -z "$TXT" ]; then
#---------------------------------------------------------
echo -e '>>> \e[01;36mRekord TXT: \e[00m'$TXT
echo -e '****** \e[01;33mWprowadzam zmiany w pliku strefy\e[00m'
#---------------------------------------------------------
sed '$i $include\t\t'$KEYS_DIR'/'$KSK'.key\n$include\t\t'$KEYS_DIR'/'$ZSK'.key\n\ndlv.'$DOMAIN'.\t0\tIN\tTXT\t"'$TXT'"' $ZONE_DIR/$DOMAIN$ZONE_EXT >> /tmp/tmp.zone && rm $ZONE_DIR/$DOMAIN$ZONE_EXT && mv /tmp/tmp.zone $ZONE_DIR/$DOMAIN$ZONE_EXT
SERIAL=`cat $ZONE_DIR/$DOMAIN$ZONE_EXT | grep '\<[0-9]\{10\}\>'`
NEW_SERIAL=$[$SERIAL+1]
sed -i "s/${SERIAL}/\t\t\t${NEW_SERIAL}/" $ZONE_DIR/$DOMAIN$ZONE_EXT
#---------------------------------------------------------
echo -e '****** \e[01;33mWprowadzam zmiany w konfiguracji stref\e[00m'
#---------------------------------------------------------
sed -i 's/'$DOMAIN$ZONE_EXT'/'$DOMAIN$ZONE_EXT'.signed/' $CONF
#---------------------------------------------------------
echo -e '****** \e[01;33mPodpisuje domene\e[00m'
#---------------------------------------------------------
dnssec-signzone -l dlv.isc.org -r /dev/urandom -o $DOMAIN \
-k $KEYS_DIR/$KSK $ZONE_DIR/$DOMAIN$ZONE_EXT $KEYS_DIR/$ZSK
echo "dnssec-signzone -l dlv.isc.org -r /dev/urandom -o $DOMAIN \
-k $KEYS_DIR/$KSK $ZONE_DIR/$DOMAIN$ZONE_EXT $KEYS_DIR/$ZSK" > $ZONE_DIR/$DOMAIN-update.sh && chmod +x $ZONE_DIR/$DOMAIN-update.sh
mv dlvset-* $ZONE_DIR/
mv dsset-* $ZONE_DIR/
mv keyset-* $ZONE_DIR/
ADDED_LIST="$ADDED_LIST $DOMAIN"
else
#---------------------------------------------------------
echo -e '****** \e[01;31mBlad podczas dodawania klucza, usuwam klucze i domene\e[00m'
#---------------------------------------------------------
$CURL --silent --cookie cookies.txt --cookie-jar cookies.txt \
-F "authenticity_token=$AUTH" \
-F "_method=delete" \
--location \
--output output.dat \
https://dlv.isc.org/zones/$ID_DOMAIN
rm $KEYS_DIR/$KSK*
rm $KEYS_DIR/$ZSK*
fi
else
echo -e '****** \e[01;31mBlad podczas dodawania domeny\e[00m'
fi
else
echo -e '****** \e[01;31mBlad logowania\e[00m'
fi
#---------------------------------------------------------
echo -e '****** \e[01;33mUsuwam tymczasowe pliki\e[00m'
#---------------------------------------------------------
[ -f cookies.txt ] && rm -f cookies.txt || :
[ -f output.dat ] && rm -f output.dat || :
echo -e '\n'
done
echo -e '****** \e[01;33mPoprawnie dodane domeny: \e[00m'$ADDED_LIST




