Tor: use CookieAuthentication (#2095)

This commit is contained in:
openoms 2021-03-23 11:17:51 +00:00 committed by GitHub
parent bdd7bdc23e
commit 543d2448d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 53 deletions

View File

@ -293,20 +293,6 @@ EOF
sed -i "s/^masterPassword:.*/masterPassword: '${newPassword}'/g" /mnt/hdd/app-data/thunderhub/thubConfig.yaml
fi
# Tor
if [ "${runBehindTor}" == "on" ]; then
echo "# changing the password for Tor"
hashedPassword=$(sudo -u debian-tor tor --hash-password "${newPassword}")
sed -i "s/^HashedControlPassword .*/HashedControlPassword ${hashedPassword}/g" /etc/tor/torrc 2>/dev/null
sed -i "s/^torpassword=.*/torpassword=${newPassword}/g" /mnt/hdd/${network}/${network}.conf 2>/dev/null
sed -i "s/^torpassword=.*/torpassword=${newPassword}/g" /home/admin/.${network}/${network}.conf 2>/dev/null
sed -i "s/^tor.password=.*/tor.password=${newPassword}/g" /mnt/hdd/lnd/lnd.conf 2>/dev/null
sed -i "s/^tor.password=.*/tor.password=${newPassword}/g" /home/admin/.lnd/lnd.conf 2>/dev/null
fi
echo "# OK -> RPC Password B changed"
echo "# Reboot is needed"
exit 0

View File

@ -12,7 +12,7 @@
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "script to switch TOR on or off"
echo "script to switch Tor on or off"
echo "internet.tor.sh [status|on|off|btcconf-on|btcconf-off|lndconf-on|update]"
exit 1
fi
@ -29,16 +29,18 @@ activateBitcoinOverTOR()
# make sure all is turned off and removed and then activate fresh (so that also old settings get removed)
deactivateBitcoinOverTOR
echo "Addding TOR config ..."
echo "# Make sure the user bitcoin is in the debian-tor group"
sudo usermod -a -G debian-tor bitcoin
sudo chmod 777 /home/bitcoin/.${network}/${network}.conf
echo "Adding Tor config to the the ${network}.conf ..."
# deprecate 'torpassword='
sudo sed -i "s/^torpassword=.*//g" /home/bitcoin/.${network}/${network}.conf
echo "onlynet=onion" >> /home/bitcoin/.${network}/${network}.conf
echo "proxy=127.0.0.1:9050" >> /home/bitcoin/.${network}/${network}.conf
echo "main.bind=127.0.0.1" >> /home/bitcoin/.${network}/${network}.conf
echo "test.bind=127.0.0.1" >> /home/bitcoin/.${network}/${network}.conf
echo "dnsseed=0" >> /home/bitcoin/.${network}/${network}.conf
echo "dns=0" >> /home/bitcoin/.${network}/${network}.conf
PASSWORD_B=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
echo "torpassword=$PASSWORD_B" >> /home/bitcoin/.${network}/${network}.conf
if [ "${network}" = "bitcoin" ]; then
# adding some bitcoin onion nodes to connect to to make connection easier
echo "main.addnode=ira7kqcbff52wofoong2dieh2xlvmw4e7ya3znsqn7wivn6armetvrqd.onion" >> /home/bitcoin/.${network}/${network}.conf
@ -48,6 +50,8 @@ activateBitcoinOverTOR()
echo "main.addnode=ldvhlpsrvspquqnl3gutz7grfu5lb3m2dgnezpl3tlkxgpoiw2g5mzid.onion" >> /home/bitcoin/.${network}/${network}.conf
echo "main.addnode=gliovxxzyy2rkwaoz25khf6oa64c3csqzjn3t6dodsjuf34w6a6ktsyd.onion" >> /home/bitcoin/.${network}/${network}.conf
fi
# remove empty lines
sudo sed -i '/^ *$/d' /home/bitcoin/.${network}/${network}.conf
sudo chmod 444 /home/bitcoin/.${network}/${network}.conf
# copy new bitcoin.conf to admin user for cli access
@ -57,14 +61,12 @@ activateBitcoinOverTOR()
else
echo "BTC config does not found (yet) - try with 'internet.tor.sh btcconf-on' again later"
fi
}
deactivateBitcoinOverTOR()
{
# always make sure also to remove old settings
sudo sed -i "s/^onlynet=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^torpassword=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^main.addnode=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^test.addnode=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^proxy=.*//g" /home/bitcoin/.${network}/${network}.conf
@ -72,6 +74,7 @@ deactivateBitcoinOverTOR()
sudo sed -i "s/^test.bind=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^dnsseed=.*//g" /home/bitcoin/.${network}/${network}.conf
sudo sed -i "s/^dns=.*//g" /home/bitcoin/.${network}/${network}.conf
# remove empty lines
sudo sed -i '/^ *$/d' /home/bitcoin/.${network}/${network}.conf
sudo cp /home/bitcoin/.${network}/${network}.conf /home/admin/.${network}/${network}.conf
sudo chown admin:admin /home/admin/.${network}/${network}.conf
@ -79,11 +82,17 @@ deactivateBitcoinOverTOR()
activateLndOverTOR()
{
echo "*** Putting LND behind TOR ***"
echo "*** Putting LND behind Tor ***"
lndExists=$(sudo ls /etc/systemd/system/lnd.service | grep -c "lnd.service")
if [ ${lndExists} -gt 0 ]; then
echo "# Make sure the user bitcoin is in the debian-tor group"
sudo usermod -a -G debian-tor bitcoin
# deprecate 'torpassword='
sudo sed -i '/\[Tor\]*/d' /mnt/hdd/lnd/lnd.conf
sudo sed -i '/^tor.password=*/d' /mnt/hdd/lnd/lnd.conf
# modify LND service
echo "Make sure LND is disabled"
sudo systemctl disable lnd 2>/dev/null
@ -91,17 +100,6 @@ activateLndOverTOR()
echo "editing /etc/systemd/system/lnd.service"
sudo sed -i "s/^ExecStart=\/usr\/local\/bin\/lnd.*/ExecStart=\/usr\/local\/bin\/lnd --tor\.active --tor\.streamisolation --tor\.v3 --listen=127\.0\.0\.1\:9735 \${lndExtraParameter}/g" /etc/systemd/system/lnd.service
# check if "tor.password" exists
valueExists=$(sudo cat /mnt/hdd/lnd/lnd.conf | grep -c 'tor.password=')
if [ ${valueExists} -eq 0 ]; then
echo "Adding tor config defaults to /mnt/hdd/lnd/lnd.conf"
PASSWORD_B=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
sudo -u bitcoin tee -a /mnt/hdd/lnd/lnd.conf >/dev/null <<EOF
[Tor]
tor.password=$PASSWORD_B
EOF
fi
echo "Enable LND again"
sudo systemctl enable lnd
echo "OK"
@ -110,7 +108,6 @@ EOF
else
echo "LND service not found (yet) - try with 'internet.tor.sh lndconf-on' again later"
fi
}
# check and load raspiblitz config
@ -174,11 +171,11 @@ fi
# switch on
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
echo "# switching the TOR ON"
echo "# switching Tor ON"
# make sure the network was set (by sourcing raspiblitz.conf)
if [ ${#network} -eq 0 ]; then
echo "!! FAIL - unknwon network due to missing /mnt/hdd/raspiblitz.conf"
echo "!! FAIL - unknown network due to missing /mnt/hdd/raspiblitz.conf"
echo "# switching Tor config on for RaspiBlitz services is just possible after basic hdd/ssd setup"
echo "# but with new 'Tor by default' basic Tor socks will already be available from the start"
exit 1
@ -187,17 +184,17 @@ if [ "$1" = "1" ] || [ "$1" = "on" ]; then
# setting value in raspi blitz config
sudo sed -i "s/^runBehindTor=.*/runBehindTor=on/g" /mnt/hdd/raspiblitz.conf
# check if TOR was already installed and is funtional
# check if Tor was already installed and is funtional
echo ""
echo "*** Check if TOR service is functional ***"
echo "*** Check if Tor service is functional ***"
torRunning=$(curl --connect-timeout 10 --socks5-hostname 127.0.0.1:9050 https://check.torproject.org 2>/dev/null | grep "Congratulations. This browser is configured to use Tor." -c)
if [ ${torRunning} -gt 0 ]; then
clear
echo "You are all good - TOR is already running."
echo "You are all good - Tor is already running."
echo ""
exit 0
else
echo "TOR not running ... proceed with switching to TOR."
echo "Tor not running ... proceed with switching to Tor."
echo ""
fi
@ -240,18 +237,25 @@ RunAsDaemon 1
ControlPort 9051
SocksPort 9050
ExitRelay 0
HashedControlPassword $HASHED_PASSWORD
CookieAuthentication 1
# Hidden Service for WEB ADMIN INTERFACE
HiddenServiceDir /mnt/hdd/tor/web80/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:80
# Hidden Service for BITCOIN
# Hidden Service for BITCOIN RPC
HiddenServiceDir /mnt/hdd/tor/bitcoin8332/
HiddenServiceVersion 3
HiddenServicePort 8332 127.0.0.1:8332
# NOTE: since Bitcoin Core v0.21.0 sets up a v3 Tor service automatically
# see /mnt/hdd/bitcoin for the onion private key - delete and restart bitcoind to reset
# Hidden Service for BITCOIN P2P (v2FallBack for Bisq)
HiddenServiceDir /mnt/hdd/tor/bitcoin8333
HiddenServiceVersion 2
HiddenServicePort 8333 127.0.0.1:8333
# Hidden Service for LND (incoming connections)
HiddenServiceDir /mnt/hdd/tor/lnd9735
@ -277,8 +281,6 @@ HiddenServicePort 8080 127.0.0.1:8080
HiddenServiceDir /mnt/hdd/tor/lndrest8080fallback/
HiddenServiceVersion 2
HiddenServicePort 8080 127.0.0.1:8080
# NOTE: bitcoind get tor service automatically - see /mnt/hdd/bitcoin for onion key
EOF
sudo rm $torrc
sudo mv ./torrc $torrc
@ -288,7 +290,7 @@ EOF
sudo mkdir -p /etc/systemd/system/tor@default.service.d
sudo tee /etc/systemd/system/tor@default.service.d/raspiblitz.conf >/dev/null <<EOF
# DO NOT EDIT! This file is generate by raspiblitz and will be overwritten
# DO NOT EDIT! This file is generated by raspiblitz and will be overwritten
[Service]
ReadWriteDirectories=-/mnt/hdd/tor
[Unit]
@ -300,7 +302,7 @@ EOF
fi
# ACTIVATE TOR SERVICE
echo "*** Enable TOR Service ***"
echo "*** Enable Tor Service ***"
sudo systemctl daemon-reload
sudo systemctl enable tor@default
echo ""
@ -367,20 +369,20 @@ EOF
sudo systemctl restart tor@default
echo "OK - TOR is now ON"
echo "OK - Tor is now ON"
echo "needs reboot to activate new setting"
exit 0
fi
# switch off
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
echo "# switching TOR OFF"
echo "# switching Tor OFF"
# setting value in raspi blitz config
sudo sed -i "s/^runBehindTor=.*/runBehindTor=off/g" /mnt/hdd/raspiblitz.conf
# disable TOR service
echo "# *** Disable TOR service ***"
echo "# *** Disable Tor service ***"
sudo systemctl disable tor@default
echo ""
@ -388,12 +390,10 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
deactivateBitcoinOverTOR
echo ""
echo "# *** Removing TOR from LND ***"
echo "# *** Removing Tor from LND ***"
sudo systemctl disable lnd
echo "# editing /etc/systemd/system/lnd.service"
sudo sed -i "s/^ExecStart=\/usr\/local\/bin\/lnd.*/ExecStart=\/usr\/local\/bin\/lnd --externalip=\${publicIP}:\${lndPort} \${lndExtraParameter}/g" /etc/systemd/system/lnd.service
sudo sed -i '/\[Tor\]*/d' /mnt/hdd/lnd/lnd.conf
sudo sed -i '/^tor.password=*/d' /mnt/hdd/lnd/lnd.conf
sudo /home/admin/config.scripts/internet.sh update-publicip
@ -401,7 +401,7 @@ if [ "$1" = "0" ] || [ "$1" = "off" ]; then
echo "# OK"
echo ""
echo "# *** Stop TOR service ***"
echo "# *** Stop Tor service ***"
sudo systemctl stop tor@default
echo ""