Налаштування IRC-сервера InspIRCd на Ubuntu 16.04 LTS

Internet Relay Chat (IRC) – це те, що існує з перших днів Інтернету. У цьому посібнику я покажу вам, як налаштувати IRC-сервер з InspIRCd за допомогою Atheme для додаткових послуг IRC. InspIRCd — це один із небагатьох серверів IRC, написаних з нуля, і один із небагатьох серверів IRC, який забезпечує настроювану кількість функцій за допомогою розширеної модульної системи.

Передумови

InspIRCd повинен працювати з будь-яким розміром екземпляра. Мінімальні системні вимоги: процесор 700 МГц і 300 МБ оперативної пам’яті.

Оновіть систему

Увійшовши в систему як користувач 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

Далі ми можемо встановити 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="[email protected]">

Тепер перейдіть до bind address. Цей тег використовується для відкриття сервісу. За замовчуванням ви побачите IP-адресу локального хоста ( 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 = "[email protected]";

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

Далі додайте нашу власну висхідну лінію. Цей висхідний канал працюватиме лише на 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

Встановіть Plesk на CentOS 7

Встановіть Plesk на CentOS 7

Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних

Установіть Lets Encrypt SSL у програму WordPress одним клацанням миші

Установіть Lets Encrypt SSL у програму WordPress одним клацанням миші

Вступ Lets Encrypt — це служба центру сертифікації, яка пропонує безкоштовні сертифікати TLS/SSL. Certbot спрощує процес встановлення,

Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Використання іншої системи? Що таке Tekkit Classic? Tekkit Classic — це модпак для гри, яку всі знають і люблять; Майнкрафт. Він містить деякі з вер

Як встановити та налаштувати PHP 7.0 або PHP 7.1 на Ubuntu 16.04

Як встановити та налаштувати PHP 7.0 або PHP 7.1 на Ubuntu 16.04

PHP та пов’язані з ним пакети є найбільш часто використовуваними компонентами під час розгортання веб-сервера. У цій статті ми дізнаємося, як налаштувати PHP 7.0 або PHP 7.1 o

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Вступ Lighttpd — це форк Apache, який має набагато меншу ресурсомісткість. Він легкий, звідси його назва, і досить простий у використанні. Встановити

Три безкоштовні панелі керування сервером (швидке встановлення)

Три безкоштовні панелі керування сервером (швидке встановлення)

1. Virtualmin/Webmin Virtualmin — це потужна та гнучка панель керування веб-хостингом для систем Linux та UNIX на основі відомої веб-бази з відкритим вихідним кодом.

Налаштування програми Yii на Ubuntu 14.04

Налаштування програми Yii на Ubuntu 14.04

Yii — це PHP-фреймворк, який дозволяє розробляти програми швидше та легше. Установка Yii на Ubuntu проста, як ви дізнаєтеся

Використання Screen в Ubuntu 14.04

Використання Screen в Ubuntu 14.04

Screen — це програма, яка дозволяє багаторазово використовувати термінальні сеанси в одному вікні. Це дозволяє моделювати декілька вікон терміналу, де це ma

Використання Logrotate для керування файлами журналу

Використання Logrotate для керування файлами журналу

Вступ Logrotate — це утиліта для Linux, яка спрощує адміністрування файлів журналів. Зазвичай він запускається раз на день через завдання cron і керує базою журналів

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Як встановити Vanilla Forum на Ubuntu 16.04

Як встановити Vanilla Forum на Ubuntu 16.04

Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд

Як встановити Kanboard на Ubuntu 18.04 LTS

Як встановити Kanboard на Ubuntu 18.04 LTS

Використання іншої системи? Вступ Kanboard — це безкоштовна програма з відкритим вихідним кодом для управління проектами, яка призначена для полегшення та візуалізації

Як встановити Gitea на Ubuntu 18.04

Як встановити Gitea на Ubuntu 18.04

Використання іншої системи? Gitea — це альтернативна система контролю версій із відкритим вихідним кодом, яка працює на базі git. Gitea написана на Голанг і є

Встановлення Docker CE на Ubuntu 16.04

Встановлення Docker CE на Ubuntu 16.04

Використання іншої системи? Docker — це програма, яка дозволяє розгортати програми, які запускаються як контейнери. Це було написано в популярному програмі Go

Виправлення експлойту Dirty Cow на CentOS

Виправлення експлойту Dirty Cow на CentOS

Що таке Dirty Cow (CVE-2016-5195)? Уразливість Dirty Cow використовується через те, як Linux обробляє код. Це дозволяє непривілейованому користувачеві використовувати gai

Налаштуйте користувача без права root за допомогою Sudo Access в Ubuntu

Налаштуйте користувача без права root за допомогою Sudo Access в Ubuntu

Наявність лише одного користувача, який є root, може бути небезпечним. Тож давайте це виправимо. Vultr надає нам свободу робити з нашими користувачами та нашими серверами, що нам заманеться

Встановіть Adminer на Debian/Ubuntu

Встановіть Adminer на Debian/Ubuntu

Adminer — це легка альтернатива phpMyAdmin. Для порівняння, його загальний розмір пакета становить 400 КБ проти 4,2 МБ phpMyAdmin. На відміну від phpMyAdmin, який

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію HTTP для веб-сервера Nginx, що працює на CentOS 7. Вимоги Щоб почати, вам знадобиться

Як встановити Nextcloud на Ubuntu 17.04

Як встановити Nextcloud на Ubuntu 17.04

У цьому посібнику ви навчитеся інсталювати програмне забезпечення NextCloud. Ми будемо використовувати Caddy для потреб нашого веб-сервера, оскільки це спрощує налаштування

Як встановити GoAccess на Ubuntu 16.04

Як встановити GoAccess на Ubuntu 16.04

Використання іншої системи? GoAccess — це аналізатор веб-журналів з відкритим вихідним кодом. Ви можете використовувати його для аналізу журналів у режимі реального часу в терміналі або

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше