Настройка IRC-сервера InspIRCd в Ubuntu 16.04 LTS

Internet Relay Chat (IRC) - это то, что существует с первых дней существования Интернета. В этом руководстве я покажу вам, как настроить IRC-сервер с InspIRCd с Atheme для дополнительных IRC-сервисов. InspIRCd - это один из немногих IRC-серверов, написанных с нуля, и один из немногих IRC-серверов, обеспечивающих настраиваемое количество функций за счет использования усовершенствованной модульной системы.

Предпосылки

  • Экземпляр сервера Ubuntu 16.04 LTS x64.
  • Пользователь sudo (или root) .
  • (Необязательно) DNS-имя вашего экземпляра.

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

Чтобы выйти из выходного дня, вы можете набрать следующую команду:

/quit    

Добавьте наш локальный сервер к соединению в выходные дни:

/server add local localhost

Теперь мы можем подключиться к профилю подключения с именем «local»:

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

Теперь измените его на значение, отличное от числа, использованного в теге сервера, который использовался ранее.

numeric = "77C";

Как только это будет сделано, давайте настроим имя сети. Искать netname:

netname = "misconfigured network";

Измените это значение на параметр сети в теге сервера.

netname = "ExampleNET";

Измените значение hidehostsuffix:

hidehostsuffix = "users.misconfigured";

Удалить .misconfigured:

hidehostsuffix = "users";

Затем измените имя администратора на то, которое мы использовали ранее:

adminname = "xenial";

Сопоставьте с adminemailсоответствующим адресом электронной почты, использованным ранее:

adminemail = "[email protected]";

Теперь, когда это сделано, нам нужно создать канал связи для наших услуг. Найдите два uplinkблока кода и закомментируйте их все. Добавьте /*перед uplink{командой и */в конце закрывающей скобки.

Это будет выглядеть следующим образом:

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

Затем добавьте наш собственный uplink. Этот uplink будет работать только на IP нашего localhost и на порте 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

Подключитесь к нашему локальному серверу:

/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


Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

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

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

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

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

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

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

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

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