Forutsetninger
Oppdater systemet
Konfigurere brannmuren
Installer og konfigurer InspIRCd
Installere IRC-tjenester - Atheme
Internet Relay Chat (IRC) er noe som har eksistert siden de første dagene av internett. I denne guiden vil jeg vise deg hvordan du setter opp en IRC-server med InspIRCd med Atheme for ytterligere IRC-tjenester. InspIRCd er en av få IRC-servere skrevet fra bunnen av og en av bare noen få IRC-servere som tilbyr et avstemt antall funksjoner gjennom bruk av et avansert modulsystem.
Forutsetninger
InspIRCd skal fungere med alle forekomststørrelser. Minimum systemkrav er en 700MHz CPU og 300MB RAM.
Oppdater systemet
Når du logger inn som sudo-bruker, kan du oppdatere systemet til siste stabile status som følger:
apt-get update && apt-get upgrade
Konfigurere brannmuren
La oss først herde VPS-en litt. Vi vil aktivere ufwog legge til noen få regler. La oss starte med å konfigurere porter:
ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable
Brannmuren vil be en dialogboks for å godta endringer. Bare trykk Yfor ja.
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Deretter kan vi installere InspIRCd, for Ubuntu 16.04 er denne pakken tilgjengelig gjennom hovedlageret.
apt-get install inspircd
Når installasjonen er fullført, kan vi begynne å konfigurere tjenesten. Hovedkonfigurasjonen finnes i /etc/inspircd/inspircd.conffilen og har utformingen av en XML-fil.
nano /etc/inspircd/inspircd.conf
Søk først etter servertaggen. Denne taggen er der du skriver inn detaljene for serveren/nettverket, de fleste av disse innstillingene er synlige for brukerne dine.
name: Vertsnavn på serveren din. Det trenger ikke løses, men det må være riktig syntaks (f.eks.: sub.example.net).
description: Serverbeskrivelse.
id: SID-en som skal brukes for denne serveren. Dette skal ikke være ukommentert med mindre det er en SID-konflikt. Dette må være tre tegn langt. Det første tegnet må være et siffer [0-9], de resterende to tegnene kan være bokstaver [AZ] eller sifre.
network: Nettverksnavn gitt ved tilkobling til klienter. Bør være lik på alle servere på nettverket og ikke inneholde mellomrom.
I vår guide vil vi bruke følgende:
<server name="irc.example.net"
description="My EXAMPLE.NET server"
id="5AA"
network="ExampleNET">
Bytt ut den originale taggen med den ovenfor.
Søk deretter etter admintaggen. Disse innstillingene er de administrative detaljene til serveren din. De vises når du skriver /ADMINkommandoen.
name: Virkelige navn
nick: Kallenavn (helst det du bruker på nettverket).
email: epostadresse. Trenger ikke å være gyldig, men denne adressen vil være den brukerne dine bør kontakte deg i tilfelle problemer.
La oss bruke administratoren Xenial:
<admin name="Xenial Xerius"
nick="xenial"
email="admin@irc.example.net">
Gå nå til bind address. Denne taggen brukes til å åpne tjenesten. Som standard vil du se localhost IP ( 127.0.0.1). Det betyr at tjenesten ikke kan kontaktes av omverdenen. La oss åpne opp tjenesten vår ved å ikke bruke noen adresse i det hele tatt. Dette vil føre til at tjenesten binder seg til ethvert Ethernet-grensesnitt maskinen eier:
<bind address="" port="6667" type="clients">
Den neste taggen vil være powertaggen. Denne taggen definerer to passord.
diepass: Passord for operatører å bruke hvis de ønsker å stenge en server.
restartpass: Passord som operatører kan bruke hvis de trenger å starte en server på nytt.
Det er best å endre disse standardpassordene:
<power diepass="die123" restartpass="restart123" pause="2">
De siste innstillingene vi skal endre er operinnstillingene. Disse definerer operatørpåloggingene.
name: operatørpålogging som brukes til å åpne (eksempel: /oper name password).
password: uhashed og ren tekst
host: Hvilke vertsnavn/IP-er har lov til å fungere. Flere alternativer kan skilles med mellomrom, og CIDR-er er tillatt. Du kan bare bruke *eller @for denne delen.
type: Hvilken operasjonstype er dette. Blokken ovenfor bør ha tre klasser allerede definert: NetAdmin, GlobalOpog Helper. Det NetAdminer den vi skal bruke.
Endre opertaggen ved å bruke følgende innhold. Merk at for vårt eksempel vil vi bruke " @" for verten. I et produksjonsmiljø er det ikke ønskelig å bruke dette:
<oper name="xenial"
password="mypassword"
host="*@*"
type="NetAdmin">
Før vi starter tjenesten, redigere motdog rulesfiler:
nano /etc/inspircd/inspircd.motd
Erstatt den med din egen, for eksempel:
This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.
Rediger til slutt regelfilene.
nano /etc/inspircd/inspircd.rules
Legg til dine egne regler, for eksempel:
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!
Nå som alt er satt opp, start IRC-tjenesten på nytt:
service inspircd restart
For å bekrefte at alt kjører, spør netstatverktøyet:
netstat -tulpn | grep -i inspircd
Den skal liste programmet inspircd, lytter på port 6666:
tcp6 0 0 :::6667 :::* LISTEN 31313/inspircd
udp 0 0 0.0.0.0:39335 0.0.0.0:* 31313/inspircd
For å teste serveren kan vi installere en terminal IRC-klient. På Windows kan du bruke et program som mIRC. I vårt eksempel vil vi bruke weechat. Dette er en tekstbasert IRC-klient som kan brukes i en terminaløkt.
Installer weechat-applikasjonen gjennom repositoriene:
apt-get install weechat
Når denne applikasjonen er installert, kjør denne IRC-klienten:
weechat
For å se alle kommandoene weechat har å tilby, kan du be om hjelpekommandoen:
/help
For å avslutte weechat kan du skrive inn følgende kommando:
/quit
Legg til vår lokale server til en tilkobling i weechat:
/server add local localhost
Nå kan vi koble til tilkoblingsprofilen kalt 'lokal':
/connect local
Du vil se vår motd og regler dukker opp i terminalvinduet.
For å markedsføre deg selv til en operatør, skriv inn følgende:
/oper xenial mypassword
Dette vil vise oss en bekreftelse på suksess:
22:40:34 local -- | User mode [+o] by irc.example.net
22:40:34 local -- | You are now a NetAdmin
Det er det for vår IRC-server.
Installere IRC-tjenester - Atheme
Atheme er et sett med tjenester for IRC-nettverk designet for store IRC-nettverk med høye skalerbarhetskrav. Den legger til tilleggstjenester som NickServ (Kallenavnregistrering) til ditt IRC-nettverk.
Atheme kan bli funnet i Ubuntu-depotet:
apt-get install atheme-services
Når binærfilene er installert, pakk ut eksempelkonfigurasjonsfilen og kopier den til athememappen:
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
Deretter redigerer du denne konfigurasjonsfilen:
nano /etc/atheme/atheme.conf
Søk først etter loadmoduleprotokollkommandoen. Dette bør defineres som følger:
loadmodule "modules/protocol/charybdis";
Erstatt charybdismed protokollen til inspircd:
loadmodule "modules/protocol/inspircd12";
Neste søk etter tjenesten name:
name = "services.int";
Endre for services.intå matche domenenavnet eller IP-adressen til IRC-serveren din:
name = "services.irc.example.net";
Når dette er gjort, søk etter det numeriske:
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;
};
*/
Deretter legger du til vår egen oppkobling. Denne oppkoblingen vil bare kjøre på vår lokale verts IP og på port 7001. Angi et superhemmelig passord (vi vil bruke det senere):
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;
};
Søk til slutt etter tjenestedefinisjonene våre. Start med nickservblokken først.
I nickserv-blokken, søk etter hosttaggen og endre den til 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>>...
Endre hostname tagfor alle de andre tjenestene også:
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
Når dette er gjort, lagre og avslutt konfigurasjonsfilen.
For å teste alt ut, kjør atheme-servicesbinæren:
atheme-services
Dette bør fortelle deg nøyaktig om det fungerer eller ikke. Hvis du ikke mottar utdata som det som er vist nedenfor, gå tilbake og se etter eventuelle feil i konfigurasjonsfilen:
[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 /
Aktiver nå tjenesten ved å redigere tjenestefilen:
nano /etc/default/atheme-services
Endre ENABLEDverdien:
DAEMON_OPTS=""
ENABLED=1
Nå kan vi starte tjenesten:
service atheme-services restart
Sjekk statusen:
service atheme-services status
Dette vil gi lignende resultater:
● 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.
Før vi er ferdige, må vi legge til Atheme-tjenestene våre til InspIRCd:
nano /etc/inspircd/inspircd.conf
På slutten av filen legger du til disse linjene:
<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">
Start nå InspIRCd-tjenesten på nytt:
service inspircd restart
Sørg for at alt fungerer som det skal:
service inspircd status
Start nå vår weechat-klient igjen:
weechat
Koble til vår lokale server:
/connect local
Du vil se en av våre Atheme-tjenester dukke opp umiddelbart: NickServ. Den vil hilse deg med informasjon om seg selv.
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.
Du kan spørre NickServ og finne ut tilgjengelige kommandoer med følgende:
/msg NickServ help