Configuring a Free Always On IRC Client

Internet Relay Chat (IRC) has been around for a long time now. It’s a protocol for group chat on a client/server network model. What’s important is that it’s the de facto standard for communication among the Grey Hat Group, the cybersecurity interest group I’m in at school.

In my Army days, I actually spent a large portion of my deployment on IRC. I communicated with different units and coordinated missions using mIRC, a proprietary Windows-only client. mIRC is responsible for creating the infamous “trout slap.” At home I was using XChat for a while. It’s cross-platform, it’s (kinda) free, and it was bundled with at least one of my Ubuntu installs. It worked well enough, but it’s become abandonware over the past few years. I then moved to HexChat, a truly free and actively maintained fork of XChat.

All of these clients are functional. I can connect to a server, join a channel with any of the above, and start chatting without a hiccup with any one of them. The problem arises when I invariably shutdown my laptop or it loses network connectivity. We use IRC because we want to be able to talk to each other in real time, and I don’t want to miss a thing. If my IRC client goes offline, then I miss out on the conversation. I also lose operator status on the channels I help maintain. (We don’t have services, not my fault.)

Nowadays I’ve moved my IRC client to a remote server from Amazon Web Services. AWS is a collection of remote computing resources. Since my server is always running, my client is always running. I just connect to the server from wherever I am to jump back into chat. I’m going to run through how to get a free EC2 instance, install a good IRC client, and access it remotely.

Getting a Free Server

To get started, you’re going to need an AWS account. Load up the front page and click the big Create a Free Account button. You can use an existing Amazon account, or create a new one. Keep clicking through and filling out forms. You need to provide your billing information, but I assure you that your first year will be free.

Choosing a Support PlaneYou also need to confirm your phone number. Once your information is entered and verified, you have to select a support plan. Select the Basic (Free) option and click Continue.

Welcome to AWSClick on the Launch Management Console button and log in with your brand new AWS credentials. Your account may take a moment to configure, so if you are having trouble logging in just wait for a few minutes.

AWS Management ConsoleAWS offers a lot of services, but the one we care about is called Elastic Compute Cloud (EC2) which provides scalable virtual machines for serving your stuff. Click on the EC2 link in the upper left. This will bring up the EC2 Management Console.

EC2 Management Console
Now click on the Launch Instance button.

Choose an Amazon Machine Image

Check Free tier only on the left. Then find the Ubuntu Server 14.04 LTS (PV), SSD Volume Type option. In the future, versions and options may change. In that case, choose whichever Ubuntu option includes LTS and PV. Choose the 64-bit option if given a choice and click Select.

Choose an Instance Type

Ensure that a Micro instance is selected and that the selected option shows a Free tier eligible tag. Click Review and Launch.

Review Instance Launch

Amazon will scold you for not limiting the IP addresses that can access your server. Ignore this. We will establish our own security once we get it running. Now you get to click Launch.

Now we are going to create a key pair to get access to our machine. Give your key pair a name and click Download Key Pair. Once you have downloaded your key, go ahead and click Launch Instances. On the next page, click View Instances to jump back to the EC2 Management Console.

EC2 Management Console

This page will show you all the information about your new instance. Click Connect for a walkthrough of how to log in to your new server.

Connect to Your Instance

Now we’re going to connect to the instance with Secure Shell (ssh). I’ll explain logging in with Linux and OS X first, then with Windows.

Connecting to Your Server

Using Linux (or OS X)

Open up a terminal emulator and enter in the following command. Replace example.pem with your key and 54.69.189.249 with your IP address.

$ ssh -i example.pem ubuntu@54.69.189.249

Type yes when prompted. If you get a permissions error run the following command substituting your key’s name. Then try again.

$ chmod 400 example.pem

Now you’re logged in! You can tell because your prompt will have changed to something like ubuntu@ip-54-69-189-249:~$. Next we’ll set up our own key. Skip this if you already have ssh keys set up. Open another terminal window and enter the following command. Make sure you’re doing this in a new terminal window; we want to run this locally.

$ ssh-keygen -t rsa

Enter a good, memorable password. When finished, your key fingerprint will be displayed. Enter to following command to view your public key.

$ cat id_rsa.pub

Copy the whole thing and switch back to your other terminal window. On your server enter the following command to authorize your key on the server.

$ vim .ssh/authorized_keys

Press the I to enter insert mode and arrow to the end of the file. Paste (shift-control-V) your key onto a new line. Press escape to exit insert mode, type :wq for write and quit, and hit enter. Now that your key is authorized on the server, you can connect with the following command substituting your server’s IP address.

ssh ubuntu@54.69.189.249

Using Windows

On a Windows system, we’ll need PuTTY and PuTTYgen. The easiest way to install is by selecting A Windows installer for everything except PuTTYtel from the download page. Once installed, open PuTTYgen. In the Parameters section, select SSH-2 RSA for the Type of key to generate.

Click Load to open the key we downloaded.

From the drop down menu, change the selection from PuTTY Private Key File (*.ppk) to All Files (*.*).

Navigate to and select your key and click Open. Click OK in the dialog box.

Click Save private key. Click Yes to dismiss the password warning.

Be sure to save this key with the same file name (exluding the file extension). Now your key is formatted for use with PuTTY.

To connect open PuTTY. Select Session from the Category pane on the left and enter the following values.

  • Host Name: ubuntu@54.69.189.249 (substituting your server’s IP address)
  • Port: 22
  • Connection Type: SSH

Select Connection > SSH > Auth from the Category pane on the left. Select Browse…, select the converted (.ppk) key file, and click Open.

Select Session from the Category pane on the left. Enter a name for these settings in Saved Sessions and click Save. From now on, you can just load these settings instead of setting them all manually.

Click Open then Yes in the dialog box to connect.

Installing Your Software

Now that we know how to connect to our server, we need to configure it. The first thing to do is ensure that all the software on it is up to date. Run the following command to check for updates.

$ sudo apt-get update

Next run the following command to download and install the updates. Enter y when prompted. This may take a couple minutes.

$ sudo apt-get upgrade

We’re going to be using Irssi as our IRC client and GNU Screen to keep it running all the time. Enter the following command to install them.

$ sudo apt-get install irssi screen

Getting Started

Screen is a very powerful utility that multiplexes virtual consoles. It does way more than we’re using it for here. We’re using so that even though we are starting a new log in session every time we log in to our server, we can keep the same IRC session. Enter the following command to create a new Screen session called irc.

$ screen -S irc

Your screen will clear, but otherwise it won’t be obvious that you’ve entered Screen. This is a link to a good reference of Screen commands. Enter the command below to start up Irssi in the Screen session.

$ irssi

irssi

Since Irssi is a command-line client, there is a bit of a learning curve to get comfortable. To get started use /connect <server> to log on to a server, /join <channel> to join a channel, and /nick <name> to set your username. Use alt-← and alt-→ to scroll through different windows. Check out the documentation to learn more.

Reconnecting

When you’re done poking around on IRC, press control-A followed D to exit Screen. To close your ssh connection press control-D. Or you could just close the terminal. Screen will keep Irssi running for when you log back in. To get back on, reconnect to your server with ssh and enter to following command.

$ screen -r irc

Now you can get on and jump into channel whenever without missing anything. There is a bunch more you can learn or play with. Check out these resources to dig deeper.

Advertisements

Tags: , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: