Premessa
In questo documento spiegherà come realizzare un server IRC dotato dei servizi come NickServ ChanServ grazie al software Epona, Un esempio di configurazione reale come questa che effettueremo e la rete IRC di AzzurraNET che è oggi la prima IRC community Italiana. Questo tipo di server così configurato è indispensabile se vogliamo crearci un nostro server IRC pubblico magari abbinato al nostro sito Web per far chattare i notri utenti, oppure interno alla LAN. C’è da dire che da sempre i server IRC sono obbiettivo dei cracker di tutto il modo che si divertono a bucarli per metterci su dei bot da gestire in remoto. Oltre che da cracker, i server IRC sono preda di numerosi virus informatici, quindi se vogliamo rendere visibile il nostro server alla Rete dobbiamo prendere in considerazione la sicurezza sia del server e magari della rete annessa ad esso.
Risorse Hardware e Software
Per il mio scopo ho utilizzato un vecchio pc , composto da un processore Pentium 166MMX, 32MB di RAM, Hard Disk da 2GB ide, scheda di rete pci 3Com 905-b 10/100Mbit., dal lato software ho utilizzato Slackware 9.1, Bahamut e Epona Services
Procuriamoci i pacchetti necessari
Per facilitarvi nell’impresa vi ho messo a disposizione il mio spazio web, da dove potere prelevare i pacchetti necessari senza andare in giro per la rete magari non trovando le versioni utilizzate in questo documento. Di seguito trovate i link per scaricare i pacchetti:
http://www.webalice.it/alepensato/epona-1.4.14.tar.gz
http://www.webalice.it/alepensato/bahamut-1.8.1-release.tar.gz
Compilazione e installazione dei software sorgenti (come root)
Installazione del server IRC Bahamut
Il primo software che installeremo è Bahamut che è il server vero è proprio a cui si connetteranno gli utenti. Per prima cosa occorre scompattare i sorgenti e solo dopo potremmo avviare la configurazione seguita dalla compilazione e l’installazione. Una volta completati queste prime fasi, modificheremo il file ircd.conf che contiene le informazioni che consentono al server di funzionare. Eseguite questi comandi passo passo:
cd /tar # entra nella directory dove ci sono i sorgenti tar zxvf bahamut* # scompatta i file cd bahamut* # entra nella directory di installazione ./configure --prefix=/usr/local/ircd # prepara all'installazione nella directory specificata make && make install # compila ed installa MySQL cd / usr/local/ircd # entra nella directory dov'è installato Bahamut cp template.conf ircd.conf # copia il file di configurazione vi ircd.conf # apre il file ircd.conf che modificheremo
Adesso vedremo come personalizzare il file ircd.conf secondo le nostre esigenze
/* Nome del server ed informazioni amministrative */ global { name irc.home.local; # Nome del Server info "porkyHTTP Intranet IRC Server"; # Breve descrizione admin { "Alessandro Pensato"; # Informazioni sull'Admin "[email protected]"; }; };
/* Opzioni del server */ options { services_name services.home.local; # Nome del server dei servizi (NS/CS/MS/RS) stats_name services.home.local; # Nome del server delle statistiche (OS/SS/HS) network_kline [email protected]; # Indirizzo di provenienza delle mail di un ban
// Se intendi linkare pi๠di 1 server, togli il “#� dalla prossima riga # servtype hub; network_name irc.home.local # Il nome e necessario se non s'intende linkare il server local_kline [email protected]; # Email per informazioni sui ban subiti };
/* Porta TCP utilizzata dal server */ port { port 6667; # Porta di default bind 192.168.0.7; # Indirizzo IP del server };
/* Ulteriori porte utlizzabili dal server */ port { port 6664; bind 192.168.0.7; }; port { port 6668; bind 192.168.0.7; }; port { port 6665; bind 192.168.0.7; }; port { port 6666; bind 192.168.0.7; }; port { port 6668; bind 192.168.0.7; }; port { port 6669; bind 192.168.0.7; }; port { port 7000; bind 192.168.0.7; };
/* Consenti connessioni da host */ allow { host *; # Consente di connettersi da qualsiasi host class users; # Associa le connessioni alla classe users };
/* Specifiche delle connessioni users */ class { name users; # Nome della classe maxusers 100; # Connessioni massime pingfreq 90; # requenza con cui il server effettuerà dei ping sul client maxsendq 100000; # Buffer limite per i send espresso in byte };
/* Specifiche per le connessioni degli operatori */ class { name opers; pingfreq 90; maxsendq 500000; # Buffer limite per i send espresso in byte };
/* Informazioni sull'amministratore del server */ oper { name nick; # Nickname passwd pass; # Password access oARD; # Flag assegnate all'amministratore host *@192.168.0.*; # Informazioni sulla provenienza delle connessioni host *@*intebusiness*; # Altri host class opers; # Classe assegnata };
super { "services.home.local"; # nomi dei server (in caso di link o per i servizi) };
/* Nickname riservati ai servizi */ restrict { type nick; mask "NickServ"; reason "reserved for services"; }; restrict { type nick; mask "ChanServ"; reason "reserved for services"; }; restrict { type nick; mask "MemoServ"; reason "reserved for services"; }; restrict { type nick; mask "RootServ"; reason "reserved for services"; }; restrict { type nick; mask "OperServ"; reason "reserved for services"; }; restrict { type nick; mask "StatServ"; reason "reserved for services"; }; restrict { type nick; mask "HelpServ"; reason "reserved for services"; };
/* Specifiche per le connessioni ad altri server */ class { name hub; pingfreq 120; # Frequenza dei ping connfreq 300; # Prova l'autoconnessione ogni 5 minuti maxsendq 1000000; # Buffer linite per i send maxlinks 1; # Nummero Massimo di link contemporanei };
/* Specifiche per I servizi */ class { name services; pingfreq 60; # Frequenza dei ping maxsendq 5000000; # Buffer linite per i send };
/* Specifiche per I link ad altri server */ #connect { # name hub.name; # host 172.16.4.2; # Indirizzo IP # port 7325; # Porta di connessione 7325 # bind 127.0.0.1; # Indirizzo IP di provenienza della connessione # apasswd secret; # Password per la connessione del server hub # cpasswd secret; # Password di risposta del server principale # flags H; # Impostato come Hub # class hub; # Tipologia di classe #};
/* Specifiche per I servizi */ connect { name services.home.local; host 192.168.0.7; apasswd marpiune; cpasswd marpiune; class services; };
Installazione dei servizi Epona
Questo pacchetto, una volta installato, si occuperà della gestione dei nick e canali, della registrazione degli stessi ed anche le specifiche riguardanti gli utenti come i ban i topic ed i modi dei canali. Appena lanciato il comando ./configure ci verrà richiesto di impostare la cartella dove verranno installati i file di programma e quella per i file di configurazione. Eseguite questi comandi passo passo:
cd /tar # /tar è la directory dove tengo i sources tar zxvf epona # scompatta i file cd epona* # entra nella directory di installazione ./configure # avvia la configurazione, compilazione ed installazione
In what directory do you want the binaries to be installed? Press Return for the default, or enter a new value. [/usr/local/ircd/epona]
Where do you want the data files to be installed? [/usr/local/ircd/epona/etc]
Which group should all Services data files be owned by? (If Services should not force files to be owned by a particular group, just press Return.) []
What should the default umask for data files be (in octal)? (077 = only accessible by owner; 007 = accessible by owner and group) [077]
Which of the following is closest to the type of server on your IRC network? 1) DreamForge 4.6.7 [this is an old IRCd, you should upgrade to Bahamut] 2) Bahamut 1.4.27 or later 3) UnrealIRCd 3.1.1 or later 4) UltimateIRCd 2.8.2 or later 5) Sequana 0.3.0 or later [] 2
Do you want to use the MD5 message-digest algorithm to encrypt passwords? (Selecting "yes" protects your passwords from being stolen if someone gains access to the Services databases, but makes it impossible to recover forgotten passwords.) NOTICE: this should be considered an EXPERIMENTAL feature. [no]
If you are switching from another services package that is listed there, enter its associated number to be able to convert your old databases using the given parameter on the command line the first time you launch Epona. If no conversion is needed, type no. 1) ircservices 4.4.x (using -is44) [no]
Do you want to compile Epona with threading support? If you want to use the proxy detector, you MUST have this. If you encounter problems during compilation, you should disable it anyways. [no] yes
make && make install # compila ed installa Epona cd / usr/local/ircd/epona/etc # entra nella directory dov'è installato Bahamut cp example.conf services.conf # copia il file di configurazione vi services.conf # apre il file services.conf che modificheremo
Adesso vedremo come personalizzare il file ircd.conf secondo le nostre esigenze. Non lo riporterà per intero come quello per Bahamut, riporterà solo le righe che ci interessano strettamente per funzionare con Bahamut
RemoteServer 192.168.0.7 7000 "pass" # Indirizzo ip_server porta password di connessione ServerName "services.home.local" # nome del server dei servizi ServerDesc "Services for IRC Networks" # breve descrizione ServiceUser [email protected] # e-mail di riferimento dei servizi NetworkDomain "home.local" # dominio di rete NetworkName "porkyHTTP Network" # breve descrizione della rete ServicesRoot "porkyHTTP" # utente principale amministratore dei servizi
Avvio di Bahamut ed Epona Services
Adesso è tutto pronto alla prima esecuzione del server IRC e dei servizi. I relativi eseguibili sono ircd nella cartella /usr/local/ircd e services nella cartella /usr/local/ircd/epona, quindi lanciamoli e con il nostro client irc connettiamoci al nostro server locale e cominciamo ad usarlo proprio come se fossimo connessi, per esempio, ad Azzurra, i comandi sono proprio gli stessi :-)