Hobbykeys
Jump to navigation
Jump to search
wat is hobbykeys
Hobbykeys is een script dat via https een tar bestand ophaalt van www.hobby.nl met daarin de ssh keys van de beheerders.
Dit tar bestand wordt vervolgens gecontroleerd met gpg, of het bestand correct en niet aangepast is.
Is alles OK dan zal het script in /root/.ssh een authorized_keys2 file maken met daarin alle ssh keys zodat de hobbynet beheerders kunnen inloggen. Gebruikers van de server kunnen eventueel hun eigen keys plaatsen in /root/.ssh/authorized_keys2.local
voor de gebruiker info
Gebruikers moet gebriefd worden dat ze hun ssh keys kunnen plaatsen in: /root/.ssh/authorized_keys2.local
waar staat het script
https://www.hobby.nl/keys/hobbykeys
hoe voegtoe / verwijder ik keys toe aan key ring
1. log in op monitor 2. wordt root 3. ga naar de directory /disk/site/hobbynet/www/keys 4. voegtoe of verwijder de key (let op key file naam moet altijd beginnen als volgt id_rs.pub. en mag geen punten bevatten) 5. verwijder oude key file door rm hobbykeys.tar hobbykeys.tar.sig 6. maak een nieuw tar file aan als volgt " tar -cf hobbykeys.tar id_rsa.pub.*" 7. draai su - om alle root variable te laden (altijd doen !!!!) 8. gpg --detach-sign hobbykeys.tar (geef het bekende ww in) 9. en klaar is kees
het script
met dank aan BIT
#!/bin/sh
umask 077
PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
SSHDIR="/root/.ssh"
DEFFILE="$SSHDIR/authorized_keys.local"
DEFFILE2="$SSHDIR/authorized_keys2.local"
KEYLOC="https://www.hobby.nl/keys/hobbykeys.tar"
KEYLOCSIG="https://www.hobby.nl/keys/hobbykeys.tar.sig"
GOODSIG="Good signature from \"Hobbynet Beheer <beheer@hobby.nl>"\"
HOBBYSIGID="705BACFF"
HOBBYKEYS="$SSHDIR/hobbykeys.tar"
HOBBYSIG="$SSHDIR/hobbykeys.tar.sig"
HOBBYOLD="$SSHDIR/hobbykeys.tar.old"
HOBBYSIGOLD="$SSHDIR/hobbykeys.sig.old"
GPGKEYSERVER="pgp.surfnet.nl"
GPGKEYSERVER2="pgp.mit.edu"
# Checken of de .ssh dir bestaat en zo niet, aanmaken.
[ ! -d ${SSHDIR} ] && mkdir -p ${SSHDIR}
# chdir naar de sshdir, exit als niet gelukt
cd ${SSHDIR} || exit 1
# Nu ff HOBBYKEYS verplaatsen, exit als niet gelukt
if [ -f ${HOBBYKEYS} ]; then
mv -- ${HOBBYKEYS} ${HOBBYOLD} || exit 1
fi
if [ -f ${HOBBYSIG} ]; then
mv -- ${HOBBYSIG} ${HOBBYSIGOLD} || exit 1
fi
# HOBBY ophalen vanaf $KELOC met wget
cd ${SSHDIR}
wget --quiet -t 20 ${KEYLOC}
if [ ! -f ${HOBBYKEYS} ]; then
if [ -f ${HOBBYOLD} ]; then
echo "Could not retrieve ${KEYLOC}, using old ${HOBBYKEYS}."
mv -- ${HOBBYOLD} ${HOBBYKEYS}
else
echo "Could not retrieve ${KEYLOC}, bailing!"
exit 127
fi
fi
if [ ! -s ${HOBBYKEYS} ]; then
echo "Retrieved ${KEYLOC}, but it's empty, using old ${HOBBYKEYS}."
mv -- ${HOBBYSOLD} ${HOBBYKEYS}
fi
# Nu checken of GnuPG aanwezig is, en zo ja, dan $KEYLOCSIG downloaden
gpg --help 1>/dev/null 2>&1
if [ "$?" = "0" ]; then
cd ${SSHDIR}
wget --quiet -t 20 ${KEYLOCSIG}
if [ ! -f ${HOBBYSIG} ]; then
if [ -f ${HOBBYSIGOLD} ]; then
echo "Could not retrieve ${KEYLOCSIG}, using old ${HOBBYSIG}! " 1>&2
mv -- ${HOBBYSIGOLD} ${HOBBYSIG}
else
echo "Could not retrieve ${KEYLOCSIG}!" 1>&2
exit 127
fi
fi
if [ -f ${HOBBYSIG} -a -f ${HOBBYOLD} ]; then
# controleren of de pub key van HOBBYKEYS@gisnet.nl al aanwezig is
gpg --list-keys ${HOBBYSIGID} 1>/dev/null 2>&1
if [ "$?" = "2" ]; then
# pubkey niet aanwezig
# eerst de key van beheer@hobby.nl downrukken
echo "HOBBYKEYS signature 0x${HOBBYSIGID} not found, now trying to retrieve from $GPGKEYSERVER1 or $GPGKEYSERVER2."
gpg --quiet --keyserver ${GPGKEYSERVER} --recv-keys ${HOBBYSIGID} 1>/dev/null 2>&1
if [ "$?" = "0" ]; then
echo "Succesfuly retrieved key ${HOBBYSIGID} from keyserver. "
else
echo "First attempt to retrieve the key failed. Let's try it one more time at ${GPGKEYSERVER2}."
gpg --quiet --keyserver ${GPGKEYSERVER2} --recv-keys ${HOBBYSIGID} 1>/dev/null 2>&1
if [ "$?" = "0" ]; then
echo "Succesfuly retrieved key ${HOBBYSIGID} from keyserver. "
else
echo "Failed to retrieve key ${HOBBYSIGID} from keyserver(s)! " 1>&2
exit 127
fi
fi
fi
# nu hebben we de GISkeys en de GPG signed sig, en gaan we kijken of deze bij elkaar horen
if ! [ "A$(gpg --quiet --verify ${HOBBYSIG} ${HOBBYKEYS} 2>&1 | grep "${GOODSIG}")" != "A" ]; then
# dat is niet het geval, exiten uit het prog dus
mv -- ${HOBBYKEYS} ${GISKTIKEYS}.BAD
echo "Wrong GPG signed HOBBYKEYS! " 1>&2
echo $GOODSIG
gpg --quiet --verify ${HOBBYSIG} ${HOBBYKEYS}
exit 127
else
# nu hebben we een geldige versie vanHOBBYKEYS.tar
echo ""
echo "${HOBBYKEYS} has been succesfully checked against GPG sig ${HOBBYSIG} "
fi
else
# het is niet gelukt om deHOBBYKEYS.sig ($HOBBYSIG) te vinden en dus kanHOBBYKEYS niet GPG gevalideerd worden
echo "${HOBBYKEYS} was *not* succesfully checked against GPG sig ${HOBBYSIG}! " 1>&2
exit 127
fi
fi
# HOBBYKEYS uitpakken
tar -xf ${HOBBYKEYS}
# ouwe zut dumpen, defaultkeys kopieren
# SSH1
[ -f ${SSHDIR}/authorized_keys ] && rm -- ${SSHDIR}/authorized_keys
[ -f ${DEFFILE} ] && cp -- ${DEFFILE} ${SSHDIR}/authorized_keys
# SSH2
[ -f ${SSHDIR}/authorized_keys2 ] && rm -- ${SSHDIR}/authorized_keys2
[ -f ${DEFFILE2} ] && cp -- ${DEFFILE2} ${SSHDIR}/authorized_keys2
# keys toevoegen die we hebben binnen geslurpt SSH1 SSH2
for i in `ls id_rsa.pub.*` ; do
USER=`cat $i | cut -d" " -f3`
cat ${SSHDIR}/$i >> ${SSHDIR}/authorized_keys2
echo "Added key: ${USER}"
done
# clean up
rm -f -- id_rsa.pub.*