Requisits previs
Actualitzar el sistema
Configuració del tallafoc
Instal·leu i configureu InspIRCd
Instal·lació de serveis IRC - Atheme
Internet Relay Chat (IRC) és una cosa que existeix des dels primers dies d'Internet. En aquesta guia, us mostraré com configurar un servidor IRC amb InspIRCd amb Atheme per a serveis IRC addicionals. InspIRCd és un dels pocs servidors IRC escrits des de zero i un dels pocs servidors IRC que ofereix un nombre ajustable de funcions mitjançant l'ús d'un sistema de mòduls avançat.
Requisits previs
- Una instància de servidor Ubuntu 16.04 LTS x64.
- Un usuari sudo (o compte root) .
- (Opcional) Un nom DNS per a la vostra instància.
InspIRCd hauria de funcionar amb qualsevol mida d'instància. Els seus requisits mínims del sistema són una CPU de 700 MHz i 300 MB de RAM.
Actualitzar el sistema
Quan inicieu sessió com a usuari sudo, podeu actualitzar el sistema a l'estat estable més recent de la següent manera:
apt-get update && apt-get upgrade
Configuració del tallafoc
Primer, endurim una mica el VPS. Habilitarem ufwi afegirem unes quantes regles. Comencem amb la configuració dels ports:
ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable
El tallafoc demanarà un diàleg per acceptar els canvis. Només cal que premeu el Ysí.
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
A continuació podem instal·lar InspIRCd, per a Ubuntu 16.04 aquest paquet està disponible a través del repositori principal.
apt-get install inspircd
Un cop feta la instal·lació, podem començar a configurar el servei. La configuració principal es pot trobar al /etc/inspircd/inspircd.conffitxer i té el disseny d'un fitxer XML.
nano /etc/inspircd/inspircd.conf
Primer cerca l' serveretiqueta. Aquesta etiqueta és on introduïu els detalls del vostre servidor/xarxa, la majoria d'aquestes configuracions són visibles per als vostres usuaris.
name: Nom d'amfitrió del vostre servidor. No cal que es resolgui, però sí que ha de ser la sintaxi correcta (p. ex.: sub.example.net).
description: descripció del servidor.
id: el SID que cal utilitzar per a aquest servidor. Això no s'ha de deixar de comentar tret que hi hagi un conflicte SID. Ha de tenir tres caràcters. El primer caràcter ha de ser un dígit [0-9], els dos caràcters restants poden ser lletres [AZ] o dígits.
network: nom de xarxa donat en connectar-se als clients. Hauria de ser el mateix en tots els servidors de la xarxa i no contenir espais.
A la nostra guia farem servir el següent:
<server name="irc.example.net"
description="My EXAMPLE.NET server"
id="5AA"
network="ExampleNET">
Substituïu l'etiqueta original per la de dalt.
A continuació, cerqueu l' adminetiqueta. Aquests paràmetres són els detalls administratius del vostre servidor. Es mostren quan escriviu l' /ADMINordre.
name: Nom real
nick: Àlies (preferiblement el que utilitzeu a la xarxa).
email: correu electrònic. No ha de ser vàlida, però aquesta adreça serà la que els usuaris haurien de contactar amb tu en cas de problemes.
Utilitzem l'administrador Xenial:
<admin name="Xenial Xerius"
nick="xenial"
email="admin@irc.example.net">
Ara passa a bind address. Aquesta etiqueta s'utilitza per obrir el servei. Per defecte veureu l'IP localhost ( 127.0.0.1). Això vol dir que el món exterior no pot contactar amb el servei. Obrim el nostre servei sense utilitzar cap adreça. Això farà que el servei s'uneixi a qualsevol interfície ethernet que posseeixi la màquina:
<bind address="" port="6667" type="clients">
La següent etiqueta serà l' poweretiqueta. Aquesta etiqueta defineix dues contrasenyes.
diepass: Contrasenya que els operadors poden utilitzar si volen tancar un servidor.
restartpass: Contrasenya que els operadors poden utilitzar si necessiten reiniciar un servidor.
El millor és canviar aquestes contrasenyes predeterminades:
<power diepass="die123" restartpass="restart123" pause="2">
Els últims paràmetres que canviarem són els operparàmetres. Aquests defineixen els inicis de sessió de l'operador.
name: inici de sessió de l'operador que s'utilitza per operar (Exemple: /oper name password).
password: text sense tallar i sense taules
host: Quins noms d'amfitrió/IP poden funcionar. Es poden separar diverses opcions per espais i es permeten els CIDR. Només podeu utilitzar *o @per a aquesta secció.
type: Quin tipus d'opera és aquest. El bloc anterior hauria de tenir tres classes ja definides: NetAdmin, GlobalOpi Helper. L' NetAdminés el que utilitzarem.
Canvieu l' operetiqueta amb el contingut següent. Tingueu en compte que per al nostre exemple farem servir " @" per a l'amfitrió. En un entorn de producció, no és desitjable utilitzar això:
<oper name="xenial"
password="mypassword"
host="*@*"
type="NetAdmin">
Abans de reiniciar el servei, editeu els fitxers motdi rules:
nano /etc/inspircd/inspircd.motd
Substituïu-lo pel vostre, per exemple:
This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.
Finalment editeu els fitxers de regles.
nano /etc/inspircd/inspircd.rules
Afegiu les vostres pròpies regles, per exemple:
The first rule of Fight Club is: You do not talk about Fight Club. The second rule of Fight Club is: You DO NOT TALK ABOUT FIGHT CLUB!
Ara que tot està configurat, reinicieu el servei IRC:
service inspircd restart
Per verificar que tot s'està executant, consulteu l' netstateina:
netstat -tulpn | grep -i inspircd
Hauria d'enumerar el programa inspircd, escoltant al port 6666:
tcp6 0 0 :::6667 :::* LISTEN 31313/inspircd
udp 0 0 0.0.0.0:39335 0.0.0.0:* 31313/inspircd
Per provar el servidor podem instal·lar un client IRC terminal. A Windows podeu utilitzar un programa com mIRC. En el nostre exemple farem servir weechat. Aquest és un client IRC basat en text que es pot utilitzar en una sessió de terminal.
Instal·leu l'aplicació weechat a través dels repositoris:
apt-get install weechat
Un cop instal·lada aquesta aplicació, executeu aquest client IRC:
weechat
Per veure totes les ordres que weechat ofereix, podeu sol·licitar l'ordre d'ajuda:
/help
Per sortir de weechat podeu escriure l'ordre següent:
/quit
Afegiu el nostre servidor local a una connexió a weechat:
/server add local localhost
Ara ens podem connectar al perfil de connexió anomenat 'local':
/connect local
Veureu el nostre motd i les nostres regles emergents a la finestra del terminal.
Per promocionar-se a un operador, escriviu el següent:
/oper xenial mypassword
Això ens mostrarà una confirmació de l'èxit:
22:40:34 local -- | User mode [+o] by irc.example.net
22:40:34 local -- | You are now a NetAdmin
Això és tot per al nostre servidor IRC.
Instal·lació de serveis IRC - Atheme
Atheme és un conjunt de serveis per a xarxes IRC dissenyats per a grans xarxes IRC amb requisits d'escalabilitat elevats. Afegeix serveis addicionals com NickServ (Registre de sobrenoms) a la vostra xarxa IRC.
Atheme es pot trobar al repositori d'Ubuntu:
apt-get install atheme-services
Un cop instal·lats els binaris, extreu el fitxer de configuració d'exemple i copieu-lo a la athemecarpeta:
gunzip /usr/share/doc/atheme-services/examples/atheme.conf.example.gz
cp /usr/share/doc/atheme-services/examples/atheme.conf.example /etc/atheme/atheme.conf
A continuació, editeu aquest fitxer de configuració:
nano /etc/atheme/atheme.conf
Primer cerqueu l' loadmoduleordre de protocol. Això s'hauria de definir de la següent manera:
loadmodule "modules/protocol/charybdis";
Substituïu charybdispel protocol de inspircd:
loadmodule "modules/protocol/inspircd12";
Pròxima cerca del servei name:
name = "services.int";
Canvieu services.intperquè coincideixi amb el nom de domini o l'adreça IP del vostre servidor IRC:
name = "services.irc.example.net";
Un cop fet això, cerqueu el numèric:
numeric = "00A";
Now change it to a value different than the numeric used in the server tag used before.
numeric = "77C";
Once this is done, let's configure the network name. Search for netname:
netname = "misconfigured network";
Change this value to the network parameter in the server tag.
netname = "ExampleNET";
Change the value of the hidehostsuffix:
hidehostsuffix = "users.misconfigured";
Remove the .misconfigured:
hidehostsuffix = "users";
Next change the admin name to the one we used before:
adminname = "xenial";
Match the adminemail to the associated email used before:
adminemail = "admin@irc.example.net";
Now that this is done, we need to create an uplink for our services.
Find the two uplink code blocks and comment them all out.
Add /* before the uplink{ command and */ at the end of the closing brace.
It will look like the following:
/* this is an example for using an IPv6 address as an uplink */
/*
uplink "irc6.example.net" {
host = "::1";
password = "linkage";
port = 6667;
};
*/
A continuació, afegiu el nostre propi enllaç ascendent. Aquest enllaç ascendent només s'executarà a la IP del nostre host local i al port 7001. Especifiqueu una contrasenya supersecreta (la farem servir més endavant):
uplink "services.irc.example.net" {
host = "127.0.0.1";
// password
// If you want to have same send_password and accept_password, you
// can specify both using 'password' instead of individually.
password = "SuperSecret123456";
port = 7001;
};
Finalment, cerqueu les nostres definicions de servei. Comenceu nickservprimer amb el bloc.
Al bloc nickserv, cerqueu l' hostetiqueta i canvieu-la a ExampleNet/services/NickServ:
nickserv {
...<<truncated>>...
/* (*)host
* The hostname we want NickServ to have.
*/
host = "ExampleNet/services/NickServ";
/* (*)real
* The realname (gecos) information we want NickServ to have.
*/
real = "Nickname Services";
...<<truncated>>...
Canvieu també hostname tagper a tots els altres serveis:
nickserv: ExampleNet/services/NickServ
chanserv: ExampleNet/services/ChanServ
global: ExampleNet/services/Global
infoserv: ExampleNet/services/InfoServ
operserv: ExampleNet/services/OperServ
saslserv: ExampleNet/services/SaslServ
memoserv: ExampleNet/services/MemoServ
gameserv: ExampleNet/services/GameServ
botserv: ExampleNet/services/BotServ
groupserv: ExampleNet/services/GroupServ
hostserv: ExampleNet/services/HostServ
helpserv: ExampleNet/services/HelpServ
alis: ExampleNet/services/ALIS
Un cop fet això, deseu i sortiu del fitxer de configuració.
Per provar-ho tot, executeu el atheme-servicesbinari:
atheme-services
Això us hauria de dir exactament si funciona o no. Si no rebeu una sortida com la que es mostra a continuació, torneu enrere i comproveu si hi ha errors al fitxer de configuració:
[19/02/2018 23:06:24] db-open-read: database '/var/lib/atheme/services.db' does not yet exist; a new one will be created.
[19/02/2018 23:06:24] pid 1929
[19/02/2018 23:06:24] running in background mode from /
Ara activeu el servei editant el fitxer de serveis:
nano /etc/default/atheme-services
Canvia el ENABLEDvalor:
DAEMON_OPTS=""
ENABLED=1
Ara podem iniciar el servei:
service atheme-services restart
Comproveu el seu estat:
service atheme-services status
Això retornarà resultats similars:
● atheme-services.service - LSB: Atheme-services daemon init.d script
Loaded: loaded (/etc/init.d/atheme-services; bad; vendor preset: enabled)
Active: active (running) since Wed 2018-02-19 23:45:05 UTC; 8s ago
Docs: man:systemd-sysv-generator(8)
Feb 19 23:45:05 vultr.guest atheme-services[2810]: Starting Atheme IRC Services: atheme-service
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] atheme 6.0.11 is start
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] Module operserv/sgline
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] module_load(): module
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] /etc/atheme/atheme.con
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] db-open-read: database
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] pid 2824
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] running in background
Feb 19 23:45:05 vultr.guest atheme-services[2810]: .
Feb 19 23:45:05 vultr.guest systemd[1]: Started LSB: Atheme-services daemon init.d script.
Abans d'haver acabat, hem d'afegir els nostres serveis Atheme a InspIRCd:
nano /etc/inspircd/inspircd.conf
Al final del fitxer afegiu aquestes línies:
<bind address="127.0.0.1" port="7001" type="servers">
<uline server="services.irc.example.net">
<link name="services.irc.example.net"
ipaddr="127.0.0.1"
port="7001"
allowmask="127.0.0.1"
sendpass="SuperSecret123456"
recvpass="SuperSecret123456">
<chanprotect noservices="no"
qprefix="~"
aprefix="&">
# Modules needed for services to function
<module name="m_chanprotect.so">
<module name="m_halfop.so">
<module name="m_services_account.so">
<module name="m_deaf.so">
<module name="m_spanningtree.so">
<module name="m_globops.so">
<module name="m_cban.so">
<module name="m_svshold.so">
<module name="m_hidechans.so">
<module name="m_servprotect.so">
<module name="m_chghost.so">
<module name="m_namesx.so">
<module name="m_uhnames.so">
Ara reinicieu el servei InspIRCd:
service inspircd restart
Assegureu-vos que tot funcioni bé:
service inspircd status
Ara torneu a iniciar el nostre client de weechat:
weechat
Connecteu-vos al nostre servidor local:
/connect local
Veureu que un dels nostres serveis Atheme apareix immediatament: NickServ. Et rebrà amb informació sobre si mateix.
23:12:48 local -- | NickServ (NickServ@ExampleNet/services/NickServ): Welcome to ExampleNet,
| root! Here on ExampleNet, we provide services to enable the registration of
| nicknames and channels! For details, type /msg NickServ help and /msg
| ChanServ help.
Podeu consultar NickServ i esbrinar les seves ordres disponibles amb el següent:
/msg NickServ help