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”
- installare un server IRC
- client e configurazioni
- sicurezza: Limnoria un bot a guardia
- 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 baseadmin
blocco per contact infoconnect
eservice
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 baseuplink
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
inserverinfo
deve essere lo stesso diircd.conf
- In
host
il valore127.0.0.1
assume checharybdis
eatheme
stanno girando sulla stessa machina - Fate attenzione
send_password
eaccept_password
che devono essere opposti ai valori inircd.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.
complimenti Ottima guida
Questo sito è stupendo, peccato che non è aggiornato.
Grazie per i complimenti.
Ultimamente le priorità sono cambiate così mi rimane poco tempo per sperimentare e scrivere.