Internet Relay Chat, or IRC, will be one of the most well-known chat protocols on the internet. This specific technology can be connected to the Tor network in order to create an anonymous along with secure chatroom, without the use of public IP addresses.
IRC servers allow one to create along with manage rooms, users, along with automated functions, among various other tools, in order to administer an instant messaging environment. IRC’s roots began in 1988 when Jarkko Oikarinen decided to attempt to implement a brand new chat protocol for users at the University of Oulu, Finland. Since then, of which’s been widely adopted along with used as a lightweight means of communication.
This specific chat protocol has proven especially well-known in tech communities, with channels for software user groups, support along with help, along with discussion areas for developers along with programmers. This specific user base eventually expanded to include hackers along with security activists, many of whom enjoyed the protocol however found of which lacked certain elements of privacy.
For hackers, along with anyone else who desires anonymity, combining IRC using a proxying system such as Tor proved to be a valuable solution. Learning to join along with create Tor-connected IRC channels allows one to form private communication platforms, for those interested in protecting their identity.
Combining Tor along with IRC will be more complicated than simply downloading the Tor Browser Bundle, so we will explain how to configure a local IRC server, connect This specific server to the Tor network, along with connect to the server as a client.
Step 1: Gather the Prerequisites
An IRC server will be easiest to combine with Tor on a Linux system, along with will be more secure on a distribution intended for server usage. Some well-known choices for server operating systems are Debian, Ubuntu Server, or CentOS. Any Linux distribution will be technically suitable, along with while Kali will be used in This specific example, of which will be not necessarily the best option for a secure server.
The Linux installation used to host the server may be on a remote Virtual Private Server (VPS), a Raspberry Pi, or even just a personal server on your local network.
With our server itself selected, the first piece of software we’ll need in order to host an IRC server will be InspiRCd. This specific will manage the entirety of the IRC component of our server. We’ll also need to install Tor. For the server, of which must be able to be called as a service, so of which’s best to install the Tor variation available on Linux repositories.
On Debian-based distros, we can install can update our repositories using apt. On various other systems, the modules are available via their respective websites. We can do This specific by opening a terminal window along with typing the following.
sudo apt-get update
After our repositories are updated, we can install the necessary software by typing the command below.
sudo apt-get install inspircd tor
Step 2: Configure InspIRCd
Once our IRC server daemon will be installed, we can begin to configure of which to meet our needs. The configuration file will be available on Linux systems at /etc/inspircd/inspircd.conf. We can edit This specific file using Nano by running the following command.
sudo nano /etc/inspircd/inspircd.conf
If IndspIRCd was installed correctly, the file which opens should appear similar to the one below.
There are quite a few configuration parameters which we should review along with edit to suit our purposes. First, we’ll want to look at the “server” parameter section seen below.
description=”Local IRC Server”
We can change This specific to whatever we would certainly like to name our IRC channel, however the “name” option must be formed in a similar format to “irc.website.com.” While for most servers This specific would certainly be important as of which could be relevant to the URL which resolves to the IRC server’s IP, however as we are going to instead make our server available over Tor, we can leave of which whatever we choose. just for This specific tutorial, I left these at the default “Local” settings.
Next, we should update the “admin” settings.
<admin name=”Root Penguin”
The “name” along with “nick” should be changed to the preferred identification for your server admin. In order to make identifying these slightly more simple, I changed them both to “admin.” I left the email setting as of which was, as of which does not need to be a valid email address.
In most cases, we’d want to change the “bind” value as well, however as all of our connections are going to be made through Tor, we can leave the address as 127.0.0.1 along with the port at 6667 or the port of our choice.
<bind address=”127.0.0.1″ port=”6667″ type=”clients”>
One important field to update will be the “power” section. This specific provides two passwords which could be used by yourself or channel operators to restart or turn off the server. Make sure to set them to something more secure than the default password or “password.”
<power diepass=”password” restartpass=”password”>
The last sections of This specific configuration file we’ll want to modify are the “oper” or operators section, as well as the “files” section. inside the operators section, we’ll want to update the operator credentials to provide server authority to the users we wish. The most important part to update will be the “password” field. Be sure to change the password to something more secure.
Lastly, we’ll want to define the location of the Message of the Day along with Rules files.
If these files are already set to an appropriate location, you can simply directly edit them to update these files in nano. These files will be displayed inside the channel when a user requests either of them by running /mord or /rules.
We can further update This specific configuration file by referencing the InspIRCd Wiki. Save the file by pressing Ctrl+O in Nano, along with then press Ctrl+X to exit. Once the configuration file will be complete, we can test our server locally.
Step 3: Test the Local IRC Server
First, we can start the server daemon using systemd by typing the following in terminal.
sudo service inspircd start
If the command succeeds, we can confirm of which’s status using the systemd status parameter.
sudo service inspircd status
We can currently test connect to our server using the IRC client of our choice. I used Irssi. Irssi will be in most Linux repositories, along with on Debian-based systems of which can also be installed using apt, as seen below.
sudo apt-get install irssi
Irssi can be launched directly via the command line just by using its name.
Within Irssi, we can connect to our server with the connect command.
This specific command will connect us to our server. You should see something like the image below.
Once the IRC client has successfully connected to the local IRC server, of which can be administered inside the same way as a server which will be connected to the internet. The test server will be connected only to the machine which of which will be running, so the only users which could connect to the server must be on the local machine as well.
After the local IRC server connection will be verified, along with any IRC configurations are changed, we can disconnect via the local server along with connect of which to the Tor network. If you’re using the Irssi IRC client, you can disconnect with /quit.
Step 4: Connect the IRC Server to Tor
The Tor-routing of our IRC server will be configured inside the torrc file. To find This specific file along with confirm our Tor installation, we can use whereis as inside the example below.
This specific returns several locations which Tor uses for configuration. The “torrc” file we’re looking for will be most likely in /etc/tor. We can open of which with the following command.
Once opened, you should see something similar to below.
The section we need to edit will be after the following banner.
############### This specific section will be just for location-hidden services ###
To skip directly to This specific section, press Ctrl+W, type “location-hidden” along with press enter. In order specify our hidden service location to Tor, we’ll want to un-comment the following two lines.
HiddenServicePort 80 127.0.0.1:80
To do This specific, remove the “#” symbols at the beginning of these lines. We’ll also want to edit one of the lines to specify our IRC port instead of port 80. When you’re done, the line should look like This specific.
HiddenServicePort 6667 127.0.0.1:6667
Write these alterations to the file with Ctrl+O, along with exit Nano with Ctrl+X.
currently of which our Tor service will be configured, we can launch of which with systemctl by running the following command.
service tor start
Once the Tor service will be running, an onion address should be generated along with placed in /var/lib/tor/hidden_service/hostname. We can retrieve This specific address with the cat command, seen below.
If needed, of which’s also possible to customize This specific onion address using tools like Eschalot.
If cat returns an onion address, your IRC server will be currently available over Tor!
Step 5: Connect to an IRC Server Over Tor
currently of which your server will be connected to Tor, of which’s available for anyone with the address to connect to of which. As such, in order to test our server connectivity, of which’s best to do of which via a different device than the one on which the server will be running. If you’ve installed your server on a VPS or virtual machine, just switch back to using the device you configured of which with.
In order to test connecting to my server, I used an IRC client I already had installed, HexChat. of which’s also available in most Linux repositories, along with on Debian-based systems, can be installed with apt as seen below.
sudo apt-get install hexchat
After launching HexChat, set your preferred nickname choices, along with then select “Add” inside the networks section.
Assign a name to your brand new network, along with then right-click on of which along with hit “Edit.”
Within This specific edit window, update the address shown inside the Servers box to be the onion address which was assigned to of which by Tor inside the previous step.
Close This specific window, along with then select “Connect.” The connection will not immediately be established, as we need to change our network settings to resolve the onion address. To do This specific, click on “Preferences” under the “Settings” menu on top of the brand new window which has opened.
Within the Preferences window, select “Network Settings” under the Network category inside the left menu. On This specific page, under Proxy Server change the Hostname to 127.0.0.1, the Port to 9050, along with select “Socks5” for the Type.
This specific utilizes Tor as a proxy server for the client along with allows onion address resolution. Keep in mind of which This specific will only work on devices were Tor can be called as a service on port 9050. On Linux systems, the Tor service can be started off inside the same way as if of which were a server, by using systemctl. To do so, type the command below.
service tor start
Once the network configuration will be updated, hit “OK.” HexChat should attempt to reconnect to the onion address provided. This specific time, of which should work.
If the Welcome message appears, you’ve successfully created a Tor-connected IRC server!
You may notice of which after the onion address will be looked up, the IP provided will be the localhost address on the server itself, 127.0.0.1. This specific will be because Tor routes connecting clients to the server along with does not at any point disclose the server’s public IP, so clients connecting to of which see the server almost as if of which were on their local network, rather than at a secret IP hidden by an onion address.
currently of which your server will be running, you can customize of which like any various other IRC server along with begin inviting more users to interact with its channels.
Thanks for reading, along with if you have any questions, you can ask them inside the comments below or on Twitter @tahkion.
Screenshots by Takhion/Null Byte