Configurarea unui server IRC InspIRCd pe Ubuntu 16.04 LTS

Internet Relay Chat (IRC) este ceva care a existat încă din primele zile ale internetului. În acest ghid, vă voi arăta cum să configurați un server IRC cu InspIRCd cu Atheme pentru servicii IRC suplimentare. InspIRCd este unul dintre puținele servere IRC scrise de la zero și unul dintre doar câteva servere IRC care oferă un număr reglabil de funcții prin utilizarea unui sistem de module avansat.

Cerințe preliminare

  • O instanță a serverului Ubuntu 16.04 LTS x64.
  • Un utilizator sudo (sau cont root) .
  • (Opțional) Un nume DNS pentru instanța dvs.

InspIRCd ar trebui să funcționeze cu orice dimensiune a instanței. Cerințele sale minime de sistem sunt un procesor de 700 MHz și 300 MB de memorie RAM.

Actualizați sistemul

Când vă conectați ca utilizator sudo, puteți actualiza sistemul la cel mai recent statut stabil, după cum urmează:

apt-get update && apt-get upgrade 

Configurarea firewallului

Mai întâi, să întărim puțin VPS-ul. Vom activa ufwși adăuga câteva reguli. Să începem cu configurarea porturilor:

ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable

Firewall-ul va solicita un dialog pentru a accepta modificările. Doar apăsați Ypentru da.

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Instalați și configurați InspIRCd

În continuare putem instala InspIRCd, pentru Ubuntu 16.04 acest pachet este disponibil prin intermediul depozitului principal.

apt-get install inspircd 

După terminarea instalării, putem începe configurarea serviciului. Configurația principală poate fi găsită în /etc/inspircd/inspircd.conffișier și are aspectul unui fișier XML.

nano /etc/inspircd/inspircd.conf

Prima căutare pentru serveretichetă. Această etichetă este locul în care introduceți detaliile serverului / rețelei dvs., majoritatea acestor setări sunt vizibile pentru utilizatorii dvs.

  • name: Numele gazdă al serverului dvs. Nu trebuie să se rezolve, dar trebuie să fie sintaxa corectă (de exemplu:) sub.example.net.
  • description: Descrierea serverului.
  • id: SID-ul de utilizat pentru acest server. Acest lucru nu ar trebui să fie necomentat decât dacă există un conflict SID. Aceasta trebuie să aibă trei caractere. Primul personaj trebuie să fie o cifră [0-9], celelalte două caractere pot fi litere [AZ] sau cifre.
  • network: Numele rețelei dat pe conectarea la clienți. Ar trebui să fie la fel pe toate serverele din rețea și să nu conțină spații.

În ghidul nostru vom folosi următoarele:

<server name="irc.example.net"
        description="My EXAMPLE.NET server"
        id="5AA"            
        network="ExampleNET">

Înlocuiți eticheta originală cu cea de mai sus.

Apoi, căutați admineticheta. Aceste setări sunt detaliile administrative ale serverului dumneavoastră. Acestea sunt afișate atunci când tastați /ADMINcomanda.

  • name: Nume real
  • nick: Porecla (de preferat ceea ce utilizați în rețea)
  • email: adresa de email. Nu trebuie să fie valabil, dar această adresă va fi cea pe care utilizatorii dvs. ar trebui să vă contacteze în caz de probleme.

Să folosim administratorul Xenial:

<admin name="Xenial Xerius"
   nick="xenial"
   email="[email protected]">

Acum treceți la bind address. Această etichetă este folosită pentru deschiderea serviciului. În mod implicit, veți vedea IP-ul localhost ( 127.0.0.1). Aceasta înseamnă că serviciul nu poate fi contactat de lumea exterioară. Haideți să ne deschidem serviciul, folosind deloc nicio adresă. Acest lucru va determina serviciul să se lege la orice interfață Ethernet pe care o deține mașina:

<bind address="" port="6667" type="clients">

Următoarea etichetă va fi powereticheta. Această etichetă definește două parole.

  • diepass: Parolă pe care operatorii să o folosească dacă doresc să oprească un server.
  • restartpass: Parolă pe care operatorii să o folosească dacă au nevoie de repornirea unui server.

Cel mai bine este să schimbați aceste parole implicite:

<power diepass="die123" restartpass="restart123" pause="2">

Ultimele setări pe care le vom modifica sunt opersetările. Acestea definesc autentificarea operatorilor.

  • name: autentificare operator care este utilizat pentru a opera (Exemplu:) /oper name password.
  • password: text înfășurat și simplu
  • host: Ce nume de gazdă / IP sunt autorizate să funcționeze. Mai multe opțiuni pot fi separate prin spații, iar CIDR-urile sunt permise. Puteți utiliza *sau @pentru această secțiune.
  • type: Ce tip de oper este acesta. Blocul de mai sus ar trebui să aibă trei clase deja definite: NetAdmin, GlobalOpși Helper. Acesta NetAdmineste cel pe care îl vom folosi.

Schimbați opereticheta folosind următorul conținut. Rețineți că, de exemplu, vom folosi " @" pentru gazdă. Într-un mediu de producție, nu este de dorit să folosiți acest lucru:

<oper name="xenial"
   password="mypassword"
   host="*@*"
   type="NetAdmin">

Înainte de a reporni serviciul, editați fișierele motdși rules:

nano /etc/inspircd/inspircd.motd

Înlocuiți-l cu unul propriu, de exemplu:

This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.

În sfârșit, editați fișierele cu reguli.

nano /etc/inspircd/inspircd.rules

Adăugați propriile reguli, de exemplu:

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! 

Acum că totul este configurat, reporniți serviciul IRC:

service inspircd restart

Pentru a verifica dacă totul funcționează, interogați netstatinstrumentul:

netstat -tulpn | grep -i inspircd

Ar trebui să enumere programul inspircd, ascultând în port 6666:

tcp6       0      0 :::6667                 :::*                    LISTEN      31313/inspircd
udp        0      0 0.0.0.0:39335           0.0.0.0:*                           31313/inspircd

Pentru a testa serverul putem instala un client IRC terminal. Pe Windows puteți utiliza un program, cum ar fi mIRC. În exemplul nostru vom folosi Weechat. Acesta este un client IRC bazat pe text care poate fi utilizat într-o sesiune de terminal.

Instalați aplicația weechat prin intermediul depozitelor:

apt-get install weechat 

După instalarea acestei aplicații, rulați acest client IRC:

weechat

Pentru a vedea toate comenzile pe care trebuie să le oferim, puteți solicita comanda de ajutor:

/help

Pentru a ieși din Weechat, puteți introduce următoarea comandă:

/quit    

Adăugați serverul nostru local la o conexiune în weechat:

/server add local localhost

Acum ne putem conecta la profilul de conexiune numit „local”:

/connect local

Veți vedea motd-ul nostru și regulile apar în fereastra terminalului.

Pentru a vă promova în fața unui operator, introduceți următoarele:

/oper xenial mypassword

Aceasta ne va arăta o confirmare a succesului:

22:40:34   local  -- | User mode [+o] by irc.example.net
22:40:34   local  -- | You are now a NetAdmin

Asta e pentru serverul nostru IRC.

Instalarea serviciilor IRC - Atheme

Atheme este un set de servicii pentru rețele IRC concepute pentru rețele IRC mari, cu cerințe de scalabilitate ridicate. Acesta adaugă servicii suplimentare, cum ar fi NickServ (Nickname Registration) la rețeaua dvs. IRC.

Atheme pot fi găsite în depozitul Ubuntu:

apt-get install atheme-services

După instalarea binarelor, extrageți fișierul de configurare de exemplu și copiați-l în athemefolder:

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

Apoi, editați acest fișier de configurare:

nano /etc/atheme/atheme.conf

Mai întâi căutați loadmodulecomanda protocolului. Aceasta trebuie definită după cum urmează:

loadmodule "modules/protocol/charybdis";

Înlocuiți charybdiscu protocolul de inspircd:

loadmodule "modules/protocol/inspircd12";

Următoarea căutare a serviciului name:

name = "services.int";

Modificare services.intpentru a se potrivi cu numele de domeniu sau adresa IP a serverului dvs. IRC:

name = "services.irc.example.net";

După ce se face acest lucru, se caută numeric:

numeric = "00A";

Acum schimbați-o pe o valoare diferită de cea numerică folosită în eticheta serverului folosită înainte.

numeric = "77C";

Odată făcut acest lucru, să configuram numele rețelei. Caută netname:

netname = "misconfigured network";

Modificați această valoare în parametrul de rețea din eticheta serverului.

netname = "ExampleNET";

Modificați valoarea hidehostsuffix:

hidehostsuffix = "users.misconfigured";

Eliminați .misconfigured:

hidehostsuffix = "users";

Următoarea schimbare a numelui de admin la cel folosit anterior:

adminname = "xenial";

Potriviți cu adminemaile-mailul asociat folosit înainte:

adminemail = "[email protected]";

Acum că s-a făcut acest lucru, trebuie să creăm un link ascendent pentru serviciile noastre. Găsiți cele două uplinkblocuri de coduri și comentați-le pe toate. Adăugați /*înainte de uplink{comandă și */la sfârșitul barei de închidere.

Va arăta astfel:

/* this is an example for using an IPv6 address as an uplink */
/*
uplink "irc6.example.net" {
        host = "::1";
        password = "linkage";
        port = 6667;
};
*/

Apoi, adăugați propriul nostru link ascendent. Acest link ascendent va rula doar pe IP-ul localhost-ului nostru și pe port 7001. Specificați o parolă super secretă (o vom folosi ulterior):

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;
 };

În sfârșit, căutați definițiile serviciului nostru. Începeți mai nickservîntâi cu blocul.

În blocul nickserv, căutați hosteticheta și schimbați-o în 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>>...

Modificați și hostname tagtoate celelalte servicii:

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

După ce faceți acest lucru, salvați și ieșiți din fișierul de configurare.

Pentru a testa totul, rulați atheme-servicesbinarul:

atheme-services

Acest lucru ar trebui să vă spună exact dacă funcționează sau nu. Dacă nu primiți ieșire precum cea prezentată mai jos, mergeți înapoi și verificați dacă există erori în fișierul de configurare:

[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 /

Acum activați serviciul prin editarea fișierului de servicii:

nano /etc/default/atheme-services

Modificați ENABLEDvaloarea:

DAEMON_OPTS=""
ENABLED=1

Acum putem începe serviciul:

service atheme-services restart

Verificați starea acestuia:

service atheme-services status

Aceasta va întoarce rezultate similare:

● 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.

Înainte de a termina, trebuie să adăugăm serviciile Atheme la InspIRCd:

nano /etc/inspircd/inspircd.conf

La sfârșitul fișierului adăugați aceste linii:

<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">    

Acum reporniți serviciul InspIRCd:

service inspircd restart

Asigurați-vă că totul funcționează bine:

service inspircd status

Acum începe din nou clientul weechat:

weechat

Conectați-vă la serverul nostru local:

/connect local

Veți vedea unul dintre serviciile noastre Atheme pop up imediat: NickServ. Te va saluta cu informații despre sine.

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.

Puteți interoga pe NickServ și aflați comenzile disponibile cu următoarele:

/msg NickServ help


Leave a Comment

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe