Le script suivant a été développé pour faciliter la mise à jour des familles dans les différents fichiers de conf torrc de nos instances. Le script se base sur les fingerprints présents sur https://nos-oignons.net/.well-known/tor-relay/rsa-fingerprint.txt pour forger le bon paramètre Myfamily pour torrc, le mettre à jour sur le ou les torrc du serveur, lancer etckeeper et redémarrer le service tor.

A date (sept 2023), cela donne la ligne de conf suivante pour torrc :

MyFamily $47EC4211A4A66768224BC18912AF8FB6E880003C,$59F2831A9BEB7AB3D5803445F946EA9FEEEFA217,$042944E139508E6A8495AA1F6F320D1087D84930,$37C984BB069C29573FB8F9F6C610DC14763B5305,$CD1FD2C1F330A3293DA6068E6A23866D063D6DCB,$42E817BE07AB39CA3BD7A442AF08E007FF2E3F5B,$5450CC0E3D08BB001E8229B8990323D11BC63332,$8F13B91FA8380842993E7C36EEF88BEC5D695587,$0DC16FEAA5A5E27A974009CBF7748BB6FAAE6DE1,$C3AACDE1671FF475D872683359777B082C1C77E6,$EEEFC9F693B3BB72C1069EC8CDAF2E6C40FCC47D,$16D3252B519861248FDEABE05A6F3B97BC510557,$9BA84E8C90083676F86C7427C8D105925F13716C,$4B8F0F8BB18F1D9ADC1FE7E54B3D3D605C1919A7,$CBCA0D732C95AF4F6A37DCCC4879105E426B80C9,$324053C8A296BF31A4A908CB407545DA92DF32F8,$4A39E7D2C121F664CFD9B5DF80CE9E70BB8B3C16,$A319D6447B2B4107477E126EE4A2B7C38125149E,$05A48DCB220236FCCA21B432C3D4A1FCE8AFCEEB,$E2DA7E67DFC30B19C50F2957C0AAFD226143D7C8,$CFAB19E23290F5BA1F7FF24494D26FBD4E4DF6CE,$D881FA3C5A642541932ACED4A3C5140742096D11,$5409FECC2C4B59D4573AAE935BE31C5675E81431,$EFF127FA3E850B17BF9A980AFB010A172F6C6FAF,$44D1929690CF1DEF95C5D1F4F66281CF18311618,$578E007E5E4535FBFEF7758D8587B07B4C8C5D06,$90FD830C357A5109AB3C505287713F1AC811174C,$91B7A9659CDB5ACF0DEB46DAA82C122C39CC4ADF,$4F0C498701A41F4D9CA677EA763FD8CA45348E97,$4786418EA43CFD6AA6C7E14B3E74637C6989F658,$19A52F4F5BCB0A9C0314BB2D39C7296ED6F76D4F

La mise à jour se fait donc simplement en modifiant d'abord les fingerprint sur /srv/http/website/.well-known/tor-relay/rsa-fingerprint.txt, puis en lancant le script suivant (disponible pour root sur chaque serveur) :

#/bin/bash
#
# VARIABLES
URL="https://nos-oignons.net/.well-known/tor-relay/rsa-fingerprint.txt"
TOR_DIR="/etc/tor"
RSA_FILE="rsa-fingerprint.txt"
#
#
#Removing old files if exists
if [ -e $RSA_FILE ]; then
        rm $RSA_FILE
fi
#Getting the RSA fingerprints of the family
if wget $URL; then

        tail -n +2 rsa-fingerprint.txt | tr '\n' , > MyFamily

        sed -i 's/.$//' MyFamily

        sed -i 's/,/,$/g' MyFamily

        sed -i '1s/^/MyFamily /' MyFamily

        value=`cat MyFamily`

        echo "Ready to replace family with..."
        echo "$value"

else
        echo "Fingerprints indisponibles"
        exit 1
fi


if [ -d "$TOR_DIR/instances" ]; then

        echo "Serveur tor avec instances multiples"
        for i in $(seq 1 8);
        do
                TARGET="$TOR_DIR/instances/$i/torrc"
                if [ -e $TARGET ];then
                       echo "Mise à jour de $TARGET"
                       sed -i "s/^MyFamily.*/${value}/" $TARGET
                fi
        done
        etckeeper commit -m "MàJ de MyFamily dans tous les torrc"
        systemctl restart tor || echo "ATTENTION Erreur au reboot de tor"


else

        echo "Serveur tor sans instances multiples"
        TARGET="$TOR_DIR/torrc"
        sed -i "s/^MyFamily.*/${value}/" $TARGET
        etckeeper commit -m "MàJ de MyFamily dans torrc"
        systemctl restart tor || echo "ATTENTION Erreur au reboot de tor"

fi