Setting up the Nefarious IRC Server Software (ircd)

ssh into your server.

Before we continue, we'd like to make sure you have the packages needed for a successful install. So be sure you have the packages below installed on your box:

openssl
libssl-dev (for enabling ssl -- openssl-devel on redhat)
autoconf   (to avoid errors when running make)
automake
flex
libpcre3-dev
byacc
gawk

The named packages above can be fetched (on a Debian based system) with apt-get:

sudo apt-get install git openssl libssl-dev autoconf automake flex libpcre3-dev byacc gawk

Note: The names of the packages above may vary, depending on your distribution.

run:

git clone https://github.com/evilnet/nefarious2.git

The system will begin to download the latest version of the nefarious ircu.

With that said, we now move on to getting the server up and running.

cd nefarious2

For your own convenience, we recommend using one centralized directory when running the configure script (it's up to you though). ssl is enabled now by default. The following will install everything into $HOME/ircd/

./configure --libdir=$HOME/ircd --mandir=$HOME/ircd --bindir=$HOME/ircd

Once that is done, run:

make

Then:

make install

If everything runs smoothly you should now have an ircd directory:

cd /home/user/ircd

Then fetch the ircd.conf to the ircd directory:

wget -O ircd.conf http://www.afternet.org/downloads/ircd.conf

You'll have to edit the configuration file a bit (for simplicity, nano is used in this example):

nano -w ircd.conf

Change the options in the General and Admin sections.

Where YourNumeric will be changed to a number we give you before you link.

You might also want to give yourself an oper block, otherwise you can't oper up. Now save the file.

You are now ready to start your IRC server, run:

./ircd

That will start the ircd. Test it by connecting to your server. Installing the cronjobs needed Cron is the system scheduled jobs manager. We generally run 3 jobs to help maintain the ircd. To edit the cron list, login with the account on which you want the scheduled jobs to run under, and run:

crontab -e

The syntax of the file is as follows:

  # Min Hour  Day   Month   DOW
  */5   *       *       *          *      /path/to/program.sh

read the unix manual to crontab for more information.

Install iauthd.pl

iauthd provides for DNSBL blocking to protect us from drones. This script is include in the source nefarious2 was created when cloning the git repository to your server.

Requirements:

You will need to install some perl dependencies for this script to run.

Debian/Ubuntu/Mint:

 sudo apt-get install libpoe-perl libpoe-component-client-dns-perl libterm-readkey-perl libfile-slurp-perl libtime-duration-perl

Fedora/Redhat/Centos:

 yum install perl-POE perl-POE-Component-Client-DNS perl-TermReadKey perl-slurp perl-Time-Duration

Freebsd:

ports dns/p5-POE-Component-Client-DNS devel/p5-Time-Duration devel/p5-File-Slurp devel/p5-Term-ReadKey

CPAN:

cpan install Term::ReadKey POE::Component::Client::DNS File::Slurp Time::Duration

Installation:

Simply copy the script from the /nefarious2/tools/iauthd.pl into the same directory as your ircd.conf file resides in order to make configuration easier.

 Example: cp tools/iauthd.pl /home/your_ircd/ircd/lib/

Now edit your ircd.conf file and add the following block:

 IAuth {
     program = "/usr/bin/perl" "iauthd.pl" "-v" "-d" "-c" "ircd.conf";
 };
 

Now, save the file and /rehash. I all goes well you can verify that the script is functional by running the following command:

 /stats iauth
 

This should show something similar to this:

 iauthd.pl :Up since Thu Jun 25 06:06:34 2015 (20 hours and 47 minutes)
 iauthd.pl :Cache size: 837/2048
 iauthd.pl :Total Passed: 197
 iauthd.pl :Total Rejected: 14
 iauthd.pl :dnsbl.sorbs.net (2,3,4,5,6,7,9): 3
 iauthd.pl :dnsbl.dronebl.org (2,3,5,6,7,8,9,10,13,14,15): 5
 iauthd.pl :rbl.efnetrbl.org (4): 17
 iauthd.pl :rbl.efnetrbl.org (1,2,3,5): 0
 iauthd.pl :dnsbl-2.uceprotect.net (2): 0
 iauthd.pl :6667.173.122.134.230.173.ip-port.exitlist.torproject.org (2): 0
 iauthd.pl :80.204.128.107.97.ip-port.exitlist.torproject.org (2): 10
 iauthd.pl :443.204.128.107.97.ip-port.exitlist.torproject.org (2): 10
 iauth: End of /STATS report         

If you would like to learn more about iauth please visit our GitHub Wiki

Please install the following cron jobs:

gitsync

gitsync updates your server every hour with the latest k: lines, features, and server connection info. It is required. There is a copy in nefarious2/tools/linesync/gitsync.sh it is best to symlink this to your ircd.conf directory, for example: ln -s /home/your/nefarious2/tools/linesync/gitsync.sh /home/your/ircd/gitsync.sh so it is easy to run and keep up to date.

You must have an SSH key setup for the user that runs ircd. This is normally in ~/.ssh/id_rsa.pub if not, run ssh-keygen and configure a key with empty password. Then, get an admin a copy of id_rsa.pub contents so he can add it to authorized access list of gitsync repository.

Once you have been given access, you must initialize the repository: ./gitsync.sh -i gitolite@afternet.org:gitsync

If that works, you'll have our server list and additions added to your ircd.conf, and a new certificate (.pem) file.

0 0 * * * /home/user/ircd/gitsync.sh -s /home/user/.ssh/id_rsa -c yourserver.afternet.org-cert /home/user/ircd/ircd.conf /home/user/ircd/ircd.pid

checkircd.sh

This gem checks if the irc server is running, and if it isnt, starts it up. This will keep the ircd up after reboots, or in the case of a crash. Create the file using a text editor, pasting this code in:

#!/bin/sh
# don't start the server if it is already running
procs=`ps x`
if echo "$procs" | grep /home/user/ircd/ircd > /dev/null; then
   exit
fi
/home/user/ircd/ircd

(be careful to use the right kind of `` ticks!)

Make the script executable:

chmod a+x checkircd.sh

And add a cron job:

*/5 * * * * /home/user/checkircd.sh

With these cronjobs installed, you are now ready to link your server to the network.