Install Tor on Ubuntu 20.04

  1. First, we need to install Tor on our system. Open a terminal and type the following command to install it:
    $ sudo apt install tor


  2. By default, Tor runs on port 9050. You can confirm that Tor is up and running correctly by using the ss command in the terminal:

    $ ss -nlt
    State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
    LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
    LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
    LISTEN 0 4096 127.0.0.1:9050 0.0.0.0:*

    Another quick way to check if Tor is installed and see what version you’re running is with this command:

    $ tor --version
    Tor version 0.4.2.7.


Tor network connection test

  1. Let’s see Tor in action and make sure it’s functioning how it’s supposed to. We’ll do this by obtaining an external IP address from the Tor network. First, check what your current IP address is:

    $ wget -qO - https://api.ipify.org; echo
    147.232.135.100

  2. Then, we’ll run the same command but preface it with torsocks. This way, the command is run through our Tor client instead.
    $ torsocks wget -qO - https://api.ipify.org; echo
    162.247.74.200
    You should see a different IP address now. That means our request was routed through the Tor network successfully.

How to “torify” your shell

  1. Prefacing every network-related command with torsocks will get old quickly. If you want to use the Tor network by default for shell commands, you can torify your shell with this command:
    $ source torsocks on
    Tor mode activated. Every command will be torified for this shell.
    
  2. To make sure it worked, try retrieving your IP address without using the torsocks command prefix:
    $ wget -qO - https://api.ipify.org; echo
    162.247.74.200

  3. The torified shell will only persist for the current session. If you open new terminals or reboot your PC, the shell will go back to the default to your ordinary connection. To turn torsocks on permanently for all new shell sessions and after reboot, use this command:
    $ echo ". torsocks on" >> ~/.bashrc
    
  4. If you need to toggle torsocks mode off again, enter:
    $ source torsocks off
    Tor mode deactivated. Command will NOT go through Tor anymore.

Enable the Tor control port

To interact with the Tor installation on our system, we need to enable Tor’s control port. Once enabled, Tor will accept connections on the control port and allow you to control the Tor process through various commands.

  1. To start, we will password-protect the Tor connection with the following command. We’re using my-tor-password in this example.
    $ torpass=$(tor --hash-password "my-tor-password")
    
  2. Next, use this command to enable the Tor control port and insert our previously hashed password:
    $ printf "HashedControlPassword $torpass\nControlPort 9051\n" | sudo tee -a /etc/tor/torrc

  3. You can check the contents of your /etc/tor/torrc configuration file to confirm that the hash password settings have been correctly included.
    $ tail -2 /etc/tor/torrc
    HashedControlPassword 16:5D13CF3C7511D9FC60161179F8FFA1083C99601A5257CDC622E161839B
    ControlPort 9051
    
  4. Restart Tor to apply the changes:
    $ sudo systemctl restart tor
    
  5. Now, you should be able to see the Tor service running on both ports 9050 and 9051:

    ss -nlt
    State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
    LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
    LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
    LISTEN 0 4096 127.0.0.1:9050 0.0.0.0:*
    LISTEN 0 4096 127.0.0.1:9051 0.0.0.0:*
 

Connect to the Tor control port

  1. Now, we can connect to the Tor control port to communicate with Tor and issue commands. For example, here we use the telnet command to request a new Tor circuit and clear cache:

    $ telnet 127.0.0.1 9051
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    AUTHENTICATE "my-tor-password"
    250 OK
    SIGNAL NEWNYM
    250 OK
    SIGNAL CLEARDNSCACHE
    250 OK
    quit
    250 closing connection
    Connection closed by foreign host.


    On Line 5 we have entered AUTHENTICATE command and our Tor password. On Lines 7 and 9 we asked Tor for a new circuit and clean cache. You need to know a few commands to get much use out of the control port, which is why we linked to a list of commands above.

  2. Communication with the Tor control port can also be shell-scripted. Consider the following example, which will request a new circuit (IP address) from Tor:

    $ source torsocks off
    Tor mode deactivated. Command will NOT go through Tor anymore.
    $ torsocks wget -qO - https://api.ipify.org; echo
    103.1.206.100
    $ echo -e 'AUTHENTICATE "my-tor-password"\r\nsignal NEWNYM\r\nQUIT' | nc 127.0.0.1 9051
    250 OK
    250 OK
    250 closing connection
    $ torsocks wget -qO - https://api.ipify.org; echo
    185.100.87.206

    The magic happens on Line 5, where multiple Tor commands are strung together. The wget commands show how our connection’s IP address has changed after requesting a clean circuit. This script can be executed any time you need to obtain a new circuit.
 

Was this answer helpful? 0 Users Found This Useful (0 Votes)