Creare server IRC in TOR network

In questo articolo vedremo come creare un server IRC con l’ aiuto di charybdis e atheme passando attraverso la rete di TOR, questo ci permetterà di creare un server anonimo che trasmetterà i dati criptati e gli utenti saranno in perfetto anonimato.

Attualmente oltre al server privato mantengo un canale su freenode dove è possibile trovarmi : #puppa anche da browser.

 

Prima di cominciare però mi piacerebbe parlare del mio approcio a IRC, un vecchio modo di comunicare che resta sempre molto utilizzato (es debian channel list, debian testing è #debian-next on freenode,  #lineageos on freenode, etc), tutto è cominciato con debianizzati quando era su azzurra, il canale non era molto frequentato ma ci si poteva trovare in molti a volte, tanto che all’epoca dell’ e-zine ci si trovava su IRC per decidere tutti insieme.

Un sentito ringraziamento ad un grande amico di IRC che resiste ancora e non molla mai :  ” U571

  1. installare un server IRC
  2. client e configurazioni
  3. sicurezza: Limnoria un bot a guardia
  4. considerazioni finali

Non ricordo bene ma ad un certo punto mi sembra che l’ admin che non era owner/founder del canale #debianizzati decise di muovere la baracca da azzurra su freenode  con un nuovo canale ##::1.

All’inizio si poteva collegarsi con sasl e tor ma a causa di abusi il servizio venne stoppato (ora pare sia ripreso), successivamente per nascondere l’ IP che solitamente viene mostrato quando si accede al canale si decise oltre alla registrazione (che permette di mantenere il proprio nick) di nascondere l’indirizzo con una cloak.

Eravamo rimasti una manciata di utenti e “quello dai mille nick” (da ora nemo) pensò di riportare la connessione ad un livello di sicurezza un po più alto creando un server IRC sulla rete di TOR, i primi test erano positivi e passandomi gli appunti nacque il nostro server privato hostato sul mio raspberry PI B+(256MB), ma il fork di 6 untenti non lascio scampo.

Quanto seguirà è frutto degli insegnamenti di skizzhg con l’aggiunta degli appunti disordinati di nemo, a loro va tutto il merito.

Partiamo dal nostro vecchio raspberryPI dove è installata una rasbian, verificando che siano installati alcuni pacchetti.

su --login
apt-get install build-essential bison flex pkg-config libssl-dev libz-dev

charybdis

Procediamo con l’installazione di charybdis creando da prima un utente dedicato.

#useradd --create-home charybdis --shell /bin/bash
#chmod o-rx ~charybdis
#mkdir /usr/local/charybdis
#chown charybdis:charybdis /usr/local/charybdis

L’ operazione di installazione e la stessa da eseguire quando si vuole aggiornare, occorre creare il file conf la prima volta e successivamente verrà mantenuto quello esistente.

#su --login charybdis
$wget https://github.com/charybdis-ircd/charybdis/archive/charybdis-3.5.6.tar.gz
$tar xf charybdis-3.5.6.tar.gz
$mv charybdis-charybdis-3.5.6 charybdis
$cd charybdis
$./configure --prefix="/usr/local/charybdis" --enable-openssl --enable-small-net
$make
$make install

$chmod o-rx /usr/local/charybdis
$chown -R charybdis:charybdis /usr/local/charybdis/
$cd /usr/local/charybdis
$chmod g+wt {etc,logs}
cp da fare solo la prima volta per creare file conf
$cp etc/ircd.conf.example etc/ircd.conf
$chmod g+r etc/ircd.conf
$exit

Serve ora compiere alcune modifiche al file conf, e prima di fare exit come indicato in precedenza, andiamo a modificare il file ircd.conf con un editor.

Le parti da modificare sono 3

  • serverinfo blocco per configurazione di base
  • admin blocco per contact info
  • connect e service blocchi per servizi IRC

Possiamo anche modificare ircd.motd, per un divertente “message of the day”.

Serverinfo
serverinfo {
          name = "uoppa.yeppa";
          sid = "47X";
          description = "charybdis my server";
          network_name = "StaticBox";
          hub = yes;
};
Admin
admin {
          name = "Lazy admin (lazya)";
          description = "StaticBox client server";
          email = "nobody@127.0.0.1";
};
connect
connect "services.int" {
          host = "127.0.0.1";
          send_password = "server_password";
          accept_password = "client_password";
          class= "server";
          port = 6667;
};
service
service {
name = "services.int";
};

Atheme

Procediamo con atheme installando anche qui un utente dedicato.

#useradd --create-home atheme --shell /bin/bash
#chmod o-rx ~atheme
#mkdir /usr/local/atheme
#chown atheme:atheme /usr/local/atheme

L’ operazione di installazione e la stessa da eseguire quando si vuole aggiornare, occorre creare il file conf la prima volta e successivamente verrà mantenuto quello esistente.

#su --login atheme
$wget https://github.com/atheme/atheme/releases/download/v7.2.10-r2/atheme-v7.2.10-r2.tar.xz
$tar xf atheme-v7.2.10-r2.tar.xz
$mv atheme-v7.2.10-r2 atheme
$cd atheme
optional apt-get install gettext   (not if --disable-nls)
$ git submodule update --init
$ git submodule init
$ git submodule update
$./configure --prefix="/usr/local/atheme" --disable-nls
$make
$make install

$chmod o-rx /usr/local/atheme
$chown -R root:atheme /usr/local/atheme
$cd /usr/local/atheme
$chmod g+wt {etc,var}
cp da fare solo la prima volta per creare file conf
$cp etc/atheme.conf.example etc/atheme.conf
$chmod g+r etc/atheme.conf
$exit

Serve ora compiere alcune modifiche al file conf, e prima di fare exit come indicato in precedenza, andiamo a modificare il file atheme.conf con un editor.

Le parti da modificare sono 2

  • serverinfo per informazioni di base
  • uplink per connettersi al server  IRC
serverinfo
serverinfo {
    name = "uoppa.yeppa";
    desc = "Atheme IRC Services";
    numeric = "01B";
    recontime = 10;
    netname = "Your IRC Network";
    adminname = "superciuk";
    adminemail = "superciuk@uoppa.ltd";
    auth = none;
}
uplink
uplink "uoppa.yeppa" {
    host = "127.0.0.1";
    send_password = "client_password";
    receive_password = "server_password";
    port = 6667;
};

Alcune note:

  • Il valore name in serverinfo deve essere lo stesso di ircd.conf
  • In host il valore 127.0.0.1 assume che charybdis e atheme stanno girando sulla stessa machina
  • Fate attenzione send_password e accept_password che devono essere opposti ai valori in ircd.conf

Il certificato

Generiamo ora il cerificato.

#su --login charybdis
$cd ~charybdis/ircd/etc
$openssl dhparam -out dh.pem 2048
$openssl req -out ssl.pem -newkey rsa:2048 -keyout ssl.key -nodes -sha256 -x509 -days 730
$Country Name (2 letter code) [XX]:.
$Locality Name (eg, city) [Default City]:.
$Organization Name (eg, company) [Default Company Ltd]:.
$Common Name (eg, your name or your server\'s hostname) []:localhost
$chown root:charybdis /usr/local/etc/ dh.pem ssl.pem ssl.key
$chmod 640 /usr/local/charybdis/etc/ dh.pem ssl.pem ssl.key

vediamo il nostro fingerprint

$openssl x509 -noout -fingerprint -in ssl.pem
$SHA1 Fingerprint=9C:CC:28:5B:9D:23:95:5K:4F:96:C3:0F:PF:B1:86:20:P7:53:25:3C

TOR

Installiamo TOR per accedere alla rete anonima e configuriamolo per dare accesso al nostro server.

#apt-get install tor
#cat <<END >> /etc/tor/torrc
HiddenServiceDir /var/lib/tor/irc_hidden_service/
HiddenServicePort 6697 127.0.0.1:6697
END
#systemctl reload tor

IMPORTANTE

conosciamo ora l’indirizzo del nostro server, nel caso vogliamo far collegare un amico sarà necessario comunicarglielo in modo sicuro perché possa connettersi.

cat /var/lib/tor/irc_hidden_service/hostname
m7knz4oal3ce3qj2.onion

Avviare il server

Ora siamo pronti per far partire il server:

#su -l atheme -c /usr/local/atheme/bin/atheme-services
#atheme 7.2.10-r2 is starting up...
#module_locate_symbol(): nickserv/set_core is not loaded.
#module_load(): module /usr/local/atheme/modules/nickserv/list is already loaded [at 0xcc1e78]
#module_load(): module /usr/local/atheme/modules/nickserv/set_core is already loaded [at 0xcc0aa0]
#module_load(): module /usr/local/atheme/modules/groupserv/main is already loaded [at 0xcc4150]
#opensex: grammar version is 1.
#corestorage: data schema version is 12.
#groupserv: opensex data schema version is 4.
#pid 1818
#running in background mode from /usr/local/atheme
#
#su -l charybdis -c /usr/local/charybdis/bin/ircd
  notice: starting charybdis-3.5.6 ...
  notice: libratbox version: 20081213_1-26296 - OpenSSL: compiled 0x1010006f, library OpenSSL 1.1.0f  25 May 2017
  notice: now running in background mode from /usr/local/charybdis as pid 1878
#

Ora dovrebbero esseresi avviati senza problemi, una verifica:

$ ps aux |grep atheme
atheme 18108 0.9 1.8 20472 4244 ? Ss 00:52 0:03 /usr/local/atheme/bin/atheme-services
$ ps aux |grep charybdis
charybd+ 18365 0.7 2.9 19360 6844 ? Ss 01:03 0:00 /usr/local/charybdis/bin/ircd
charybd+ 18369 0.1 2.1 6536 4992 ? S 01:03 0:00 -ircd ssld daemon helper
charybd+ 18370 0.0 1.0 5548 2416 ? S 01:03 0:00 -ircd bandb daemon

Avviamo TOR per far accedere dalla rete i client al nostro server.

#systemctl start tor

Ora passiamo alla connessione sul nostro server.

3 risposte a “Creare server IRC in TOR network”

  1. Grazie per i complimenti.
    Ultimamente le priorità sono cambiate così mi rimane poco tempo per sperimentare e scrivere.

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.