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.*