Προαπαιτούμενα
Ενημερώστε το σύστημα
Διαμόρφωση του τείχους προστασίας
Εγκαταστήστε και διαμορφώστε το InspIRCd
Εγκατάσταση υπηρεσιών IRC - Atheme
Το Internet Relay Chat (IRC) είναι κάτι που υπάρχει από τις πρώτες μέρες του Διαδικτύου. Σε αυτόν τον οδηγό, θα σας δείξω πώς να ρυθμίσετε έναν διακομιστή IRC με InspIRCd με Atheme για πρόσθετες υπηρεσίες IRC. Ο InspIRCd είναι ένας από τους λίγους διακομιστές IRC που έχουν γραφτεί από την αρχή και ένας από τους λίγους διακομιστές IRC που παρέχουν έναν ρυθμιζόμενο αριθμό λειτουργιών μέσω της χρήσης ενός προηγμένου συστήματος λειτουργικών μονάδων.
Προαπαιτούμενα
Το InspIRCd θα πρέπει να λειτουργεί με οποιοδήποτε μέγεθος παρουσίας. Οι ελάχιστες απαιτήσεις συστήματος είναι μια CPU 700MHz και 300MB RAM.
Ενημερώστε το σύστημα
Όταν συνδέεστε ως χρήστης sudo, μπορείτε να ενημερώσετε το σύστημα στην πιο πρόσφατη σταθερή κατάσταση ως εξής:
apt-get update && apt-get upgrade
Διαμόρφωση του τείχους προστασίας
Πρώτα ας σκληρύνουμε λίγο το VPS. Θα ενεργοποιήσουμε ufwκαι θα προσθέσουμε μερικούς κανόνες. Ας ξεκινήσουμε με τη διαμόρφωση των θυρών:
ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable
Το τείχος προστασίας θα σας ζητήσει ένα παράθυρο διαλόγου για αποδοχή αλλαγών. Απλά πατήστε Yγια ναι.
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Στη συνέχεια μπορούμε να εγκαταστήσουμε το InspIRCd, για το Ubuntu 16.04 αυτό το πακέτο είναι διαθέσιμο μέσω του κύριου αποθετηρίου.
apt-get install inspircd
Μόλις ολοκληρωθεί η εγκατάσταση, μπορούμε να ξεκινήσουμε τη διαμόρφωση της υπηρεσίας. Η κύρια διαμόρφωση βρίσκεται στο /etc/inspircd/inspircd.confαρχείο και έχει τη διάταξη ενός αρχείου XML.
nano /etc/inspircd/inspircd.conf
Πρώτα αναζητήστε την serverετικέτα. Αυτή η ετικέτα είναι όπου εισάγετε τις λεπτομέρειες του διακομιστή/δικτύου σας, οι περισσότερες από αυτές τις ρυθμίσεις είναι ορατές στους χρήστες σας.
name: Όνομα κεντρικού υπολογιστή του διακομιστή σας. Δεν χρειάζεται να επιλυθεί, αλλά πρέπει να είναι η σωστή σύνταξη (π.χ.: sub.example.net).
description: Περιγραφή διακομιστή.
id: Το SID που θα χρησιμοποιηθεί για αυτόν τον διακομιστή. Αυτό δεν πρέπει να μην σχολιάζεται εκτός εάν υπάρχει διένεξη SID. Αυτό πρέπει να αποτελείται από τρεις χαρακτήρες. Ο πρώτος χαρακτήρας πρέπει να είναι ψηφίο [0-9], οι υπόλοιποι δύο χαρακτήρες μπορεί να είναι γράμματα [AZ] ή ψηφία.
network: Όνομα δικτύου που δίνεται κατά τη σύνδεση με πελάτες. Θα πρέπει να είναι το ίδιο σε όλους τους διακομιστές του δικτύου και να μην περιέχει κενά.
Στον οδηγό μας θα χρησιμοποιήσουμε τα εξής:
<server name="irc.example.net"
description="My EXAMPLE.NET server"
id="5AA"
network="ExampleNET">
Αντικαταστήστε την αρχική ετικέτα με την παραπάνω.
Στη συνέχεια, αναζητήστε την adminετικέτα. Αυτές οι ρυθμίσεις είναι οι λεπτομέρειες διαχείρισης του διακομιστή σας. Εμφανίζονται όταν πληκτρολογείτε την /ADMINεντολή.
name: Το πραγματικό του όνομα
nick: Ψευδώνυμο (κατά προτίμηση αυτό που χρησιμοποιείτε στο δίκτυο).
email: διεύθυνση ηλεκτρονικού ταχυδρομείου. Δεν χρειάζεται να είναι έγκυρη, αλλά αυτή η διεύθυνση θα είναι αυτή που θα πρέπει να επικοινωνήσουν μαζί σας οι χρήστες σας σε περίπτωση προβλημάτων.
Ας χρησιμοποιήσουμε τον διαχειριστή Xenial:
<admin name="Xenial Xerius"
nick="xenial"
email="admin@irc.example.net">
Τώρα μεταβείτε στο bind address. Αυτή η ετικέτα χρησιμοποιείται για το άνοιγμα της υπηρεσίας. Από προεπιλογή θα δείτε την IP του localhost ( 127.0.0.1). Αυτό σημαίνει ότι ο εξωτερικός κόσμος δεν μπορεί να επικοινωνήσει με την υπηρεσία. Ας ανοίξουμε την υπηρεσία μας χωρίς να χρησιμοποιούμε καθόλου διεύθυνση. Αυτό θα προκαλέσει τη σύνδεση της υπηρεσίας σε οποιαδήποτε διεπαφή Ethernet που ανήκει το μηχάνημα:
<bind address="" port="6667" type="clients">
Η επόμενη ετικέτα θα είναι η powerετικέτα. Αυτή η ετικέτα ορίζει δύο κωδικούς πρόσβασης.
diepass: Κωδικός πρόσβασης για χρήση από τους χειριστές εάν θέλουν να τερματίσουν τη λειτουργία ενός διακομιστή.
restartpass: Κωδικός πρόσβασης για χρήση από τους χειριστές εάν χρειάζεται να επανεκκινήσουν έναν διακομιστή.
Είναι καλύτερο να αλλάξετε αυτούς τους προεπιλεγμένους κωδικούς πρόσβασης:
<power diepass="die123" restartpass="restart123" pause="2">
Οι τελευταίες ρυθμίσεις που θα αλλάξουμε είναι οι operρυθμίσεις. Αυτά ορίζουν τις συνδέσεις χειριστή.
name: σύνδεση χειριστή που χρησιμοποιείται για τη λειτουργία (Παράδειγμα: /oper name password).
password: μη κατακερματισμένο και απλό κείμενο
host: Ποια ονόματα κεντρικών υπολογιστών/IP επιτρέπεται να λειτουργούν. Πολλαπλές επιλογές μπορούν να διαχωριστούν με κενά και επιτρέπονται τα CIDR. Μπορείτε απλώς να χρησιμοποιήσετε *ή @για αυτήν την ενότητα.
type: Τι τύπος όπερ είναι αυτός. Το παραπάνω μπλοκ θα πρέπει να έχει ήδη καθορισμένες τρεις κλάσεις: NetAdmin, GlobalOpκαι Helper. Αυτό NetAdminείναι που θα χρησιμοποιήσουμε.
Αλλάξτε την operετικέτα χρησιμοποιώντας το ακόλουθο περιεχόμενο. Σημειώστε ότι για το παράδειγμά μας θα χρησιμοποιήσουμε " @" για τον κεντρικό υπολογιστή. Σε ένα περιβάλλον παραγωγής, δεν είναι επιθυμητό να χρησιμοποιήσετε αυτό:
<oper name="xenial"
password="mypassword"
host="*@*"
type="NetAdmin">
Πριν επανεκκινήσουμε την υπηρεσία, επεξεργαστείτε τα αρχεία motdκαι rules:
nano /etc/inspircd/inspircd.motd
Αντικαταστήστε το με το δικό σας, για παράδειγμα:
This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.
Τέλος επεξεργαστείτε τα αρχεία κανόνων.
nano /etc/inspircd/inspircd.rules
Προσθέστε τους δικούς σας κανόνες, για παράδειγμα:
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!
Τώρα που όλα έχουν ρυθμιστεί, επανεκκινήστε την υπηρεσία IRC:
service inspircd restart
Για να επαληθεύσετε ότι όλα εκτελούνται, υποβάλετε ερώτημα στο netstatεργαλείο:
netstat -tulpn | grep -i inspircd
Θα πρέπει να παραθέτει το πρόγραμμα inspircd, ακρόαση στη θύρα 6666:
tcp6 0 0 :::6667 :::* LISTEN 31313/inspircd
udp 0 0 0.0.0.0:39335 0.0.0.0:* 31313/inspircd
Για να ελέγξουμε τον διακομιστή μπορούμε να εγκαταστήσουμε έναν τερματικό πελάτη IRC. Στα Windows μπορείτε να χρησιμοποιήσετε ένα πρόγραμμα όπως το mIRC. Στο παράδειγμά μας θα χρησιμοποιήσουμε το weechat. Αυτός είναι ένας πελάτης IRC που βασίζεται σε κείμενο και μπορεί να χρησιμοποιηθεί σε μια περίοδο λειτουργίας τερματικού.
Εγκαταστήστε την εφαρμογή weechat μέσω των αποθετηρίων:
apt-get install weechat
Μόλις εγκατασταθεί αυτή η εφαρμογή, εκτελέστε αυτό το πρόγραμμα-πελάτη IRC:
weechat
Για να δείτε όλες τις εντολές που έχει να προσφέρει το weechat, μπορείτε να ζητήσετε την εντολή βοήθειας:
/help
Για έξοδο από το weechat, μπορείτε να πληκτρολογήσετε την ακόλουθη εντολή:
/quit
Προσθέστε τον τοπικό μας διακομιστή σε μια σύνδεση στο weechat:
/server add local localhost
Τώρα μπορούμε να συνδεθούμε στο προφίλ σύνδεσης που ονομάζεται "τοπικό":
/connect local
Θα δείτε το motd και τους κανόνες μας να εμφανίζονται στο παράθυρο του τερματικού.
Για να προωθήσετε τον εαυτό σας σε χειριστή, πληκτρολογήστε τα εξής:
/oper xenial mypassword
Αυτό θα μας δείξει μια επιβεβαίωση της επιτυχίας:
22:40:34 local -- | User mode [+o] by irc.example.net
22:40:34 local -- | You are now a NetAdmin
Αυτό είναι για τον IRC διακομιστή μας.
Εγκατάσταση υπηρεσιών IRC - Atheme
Το Atheme είναι ένα σύνολο υπηρεσιών για δίκτυα IRC που έχουν σχεδιαστεί για μεγάλα δίκτυα IRC με υψηλές απαιτήσεις επεκτασιμότητας. Προσθέτει πρόσθετες υπηρεσίες όπως το NickServ (Εγγραφή ψευδωνύμου) στο δίκτυό σας IRC.
Το Atheme μπορεί να βρεθεί στο αποθετήριο του Ubuntu:
apt-get install atheme-services
Μόλις εγκατασταθούν τα δυαδικά αρχεία, εξαγάγετε το παράδειγμα αρχείου ρυθμίσεων και αντιγράψτε το στον athemeφάκελο:
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
Στη συνέχεια, επεξεργαστείτε αυτό το αρχείο διαμόρφωσης:
nano /etc/atheme/atheme.conf
Πρώτα αναζητήστε την loadmoduleεντολή πρωτοκόλλου. Αυτό θα πρέπει να οριστεί ως εξής:
loadmodule "modules/protocol/charybdis";
Αντικαταστήστε charybdisμε το πρωτόκολλο inspircd:
loadmodule "modules/protocol/inspircd12";
Επόμενη αναζήτηση για την υπηρεσία name:
name = "services.int";
Αλλάξτε services.intγια να ταιριάζει με το όνομα τομέα ή τη διεύθυνση IP του διακομιστή IRC:
name = "services.irc.example.net";
Μόλις γίνει αυτό, αναζητήστε τον αριθμητικό:
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;
};
*/
Στη συνέχεια, προσθέστε το δικό μας uplink. Αυτή η ανοδική σύνδεση θα εκτελείται μόνο στην IP του τοπικού μας κεντρικού υπολογιστή και στη θύρα 7001. Καθορίστε έναν εξαιρετικά μυστικό κωδικό πρόσβασης (θα τον χρησιμοποιήσουμε αργότερα):
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;
};
Τέλος, αναζητήστε τους ορισμούς των υπηρεσιών μας. Ξεκινήστε nickservπρώτα με το μπλοκ.
Στο μπλοκ nickserv, αναζητήστε την hostετικέτα και αλλάξτε την σε 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>>...
Αλλάξτε το hostname tagγια όλες τις άλλες υπηρεσίες επίσης:
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
Μόλις γίνει αυτό, αποθηκεύστε και κλείστε το αρχείο διαμόρφωσης.
Για να τα δοκιμάσετε όλα, εκτελέστε το atheme-servicesδυαδικό:
atheme-services
Αυτό θα πρέπει να σας πει ακριβώς αν λειτουργεί ή όχι. Εάν δεν λαμβάνετε έξοδο όπως αυτό που φαίνεται παρακάτω, επιστρέψτε και ελέγξτε για τυχόν σφάλματα στο αρχείο διαμόρφωσης:
[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 /
Τώρα ενεργοποιήστε την υπηρεσία επεξεργάζοντας το αρχείο υπηρεσιών:
nano /etc/default/atheme-services
Αλλάξτε την ENABLEDτιμή:
DAEMON_OPTS=""
ENABLED=1
Τώρα μπορούμε να ξεκινήσουμε την υπηρεσία:
service atheme-services restart
Ελέγξτε την κατάστασή του:
service atheme-services status
Αυτό θα επιστρέψει παρόμοια αποτελέσματα:
● 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.
Πριν τελειώσουμε, πρέπει να προσθέσουμε τις υπηρεσίες Atheme στο InspIRCd:
nano /etc/inspircd/inspircd.conf
Στο τέλος του αρχείου προσθέστε αυτές τις γραμμές:
<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">
Τώρα επανεκκινήστε την υπηρεσία InspIRCd:
service inspircd restart
Βεβαιωθείτε ότι όλα λειτουργούν καλά:
service inspircd status
Τώρα ξεκινήστε ξανά τον πελάτη weechat:
weechat
Συνδεθείτε στον τοπικό μας διακομιστή:
/connect local
Θα δείτε αμέσως μία από τις υπηρεσίες μας Atheme: NickServ. Θα σας υποδεχτεί με πληροφορίες για τον εαυτό του.
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.
Μπορείτε να ρωτήσετε τον NickServ και να μάθετε τις διαθέσιμες εντολές του με τα εξής:
/msg NickServ help