If i host a server as a tor hidden service what happens if that server needs to download an update or something else? Does it all go trough Tor just like it was a client? And the exit relay can see what the server is downloading?
There are three separate questions here :
- Will my server download updates over Tor?
You could configure it either way, but the hidden service setup has nothing to do with the server downloading updates. I believe almost all instructions for setting up hidden services will only discuss the hidden service, not downloading updates over Tor.
- If my server downloads updates over Tor, and runs a hidden service, then can these activities be linked by an exit node?
No, there is no exit node in hidden service circuits, so no attack vector here.
- If my server downloads updates over Tor, then how secure are the downloads?
All depends upon what the update procedure is. I donno if Debian, or other distributions, restrict themselves to https or might ocasionally fall back to ordinary http. All Debian packages should include hashes that prevent tampering.
A question you did not explicitly ask : How do I make my server download updates over Tor?
I'm dubious that servers should ever do OS level transparent proxying. I'd rather run an https proxy like
privoxy and selectively configure tools like
apt-get to use it, thus controlling exactly what connects to the outside world via tor.
If you've basic stuff working over tor, then you should consider enabling
iptables rules build by
ferm or whatever that prevent outbound connections, except from the debian-tor user, or whoever that runs the tor process.
At that point, you could observe clearly what OS services now fail due to the iptables rules. You can go through these individually and choose if they should run over tor or not, depending upon your threat model.
In particular there might be subtleties in configuring NTP securely either over Tor or not over Tor when hosting a hidden service.
All traffic is routed throug tor only if you are using transparent proxying on OS level.
For a the most common setup the webserver will pull updates and such through the regular internet connection.
So unless you have set up the machine for transparent proxying a exit relay cannot see what updates are getting requested.
There is more information about the transparent proxy setup here: