Configurando um servidor IRC do InspIRCd no Ubuntu 16.04 LTS

O Internet Relay Chat (IRC) é algo que existe desde os primeiros dias da Internet. Neste guia, mostrarei como configurar um servidor de IRC com o InspIRCd with Atheme para serviços adicionais de IRC. O InspIRCd é um dos poucos servidores de IRC criados a partir do zero e um dos poucos servidores de IRC a fornecer um número ajustável de recursos através do uso de um sistema de módulo avançado.

Pré-requisitos

O InspIRCd deve funcionar com qualquer tamanho de instância. Os requisitos mínimos do sistema são uma CPU de 700 MHz e 300 MB de RAM.

Atualize o sistema

Ao efetuar login como usuário sudo, você pode atualizar o sistema para o status estável mais recente da seguinte maneira:

apt-get update && apt-get upgrade 

Configurando o firewall

Primeiro, vamos fortalecer um pouco o VPS. Vamos ativar ufwe adicionar algumas regras. Vamos começar com a configuração de portas:

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

O firewall solicitará uma caixa de diálogo para aceitar alterações. Basta pressionar Ypara sim.

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

Instale e configure o InspIRCd

Em seguida, podemos instalar o InspIRCd, para o Ubuntu 16.04 este pacote está disponível no repositório principal.

apt-get install inspircd 

Depois que a instalação estiver concluída, podemos começar a configurar o serviço. A configuração principal pode ser encontrada no /etc/inspircd/inspircd.confarquivo e possui o layout de um arquivo XML.

nano /etc/inspircd/inspircd.conf

Primeira pesquisa pela servertag. Essa tag é onde você insere os detalhes do seu servidor / rede; a maioria dessas configurações é visível para seus usuários.

  • name: Nome do host do seu servidor. Não precisa resolver, mas precisa ser a sintaxe correta (por exemplo sub.example.net:).
  • description: Descrição do servidor.
  • id: O SID a ser usado para este servidor. Isso não deve ser descomentado, a menos que haja um conflito de SID. Deve ter três caracteres. O primeiro caractere deve ser um dígito [0-9], os dois caracteres restantes podem ser letras [AZ] ou dígitos.
  • network: Nome da rede fornecido na conexão com os clientes. Deve ser o mesmo em todos os servidores da rede e não deve conter espaços.

Em nosso guia, usaremos o seguinte:

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

Substitua a etiqueta original pela etiqueta acima.

Em seguida, procure a admintag. Essas configurações são os detalhes administrativos do seu servidor. Eles são mostrados quando você digita o /ADMINcomando.

  • name: Nome real
  • nick: Apelido (de preferência o que você usa na rede).
  • email: endereço de e-mail. Não precisa ser válido, mas esse endereço será o que seus usuários devem contatar em caso de problemas.

Vamos usar o administrador Xenial:

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

Agora vá para o bind address. Essa tag é usada para abrir o serviço. Por padrão, você verá o IP do host local ( 127.0.0.1). Isso significa que o serviço não pode ser contatado pelo mundo exterior. Vamos abrir nosso serviço usando nenhum endereço. Isso fará com que o serviço se ligue a qualquer interface Ethernet que a máquina possua:

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

A próxima tag será a powertag. Essa tag define duas senhas.

  • diepass: Senha para os operadores usarem se quiserem desligar um servidor.
  • restartpass: Senha para os operadores usarem se precisarem reiniciar um servidor.

É melhor alterar essas senhas padrão:

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

As últimas configurações que iremos alterar são as operconfigurações. Eles definem os logins do operador.

  • name: login do operador usado para operar (exemplo:) /oper name password.
  • password: texto sem pregos e sem formatação
  • host: Quais nomes de host / IPs podem operar. Múltiplas opções podem ser separadas por espaços, e CIDRs são permitidos. Você pode apenas usar *ou @para esta seção.
  • type: Que tipo de operação é esse. O bloco acima deve ter três classes já definidas: NetAdmin, GlobalOpe Helper. Esse NetAdminé o que iremos usar.

Altere a opertag usando o seguinte conteúdo. Observe que, no nosso exemplo, estaremos usando " @" para o host. Em um ambiente de produção, não é desejável usar isso:

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

Antes de reiniciar o serviço, edite os arquivos motde rules:

nano /etc/inspircd/inspircd.motd

Substitua-o pelo seu, por exemplo:

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

Finalmente edite os arquivos de regras.

nano /etc/inspircd/inspircd.rules

Adicione suas próprias regras, por exemplo:

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! 

Agora que tudo está configurado, reinicie o serviço IRC:

service inspircd restart

Para verificar se tudo está em execução, consulte a netstatferramenta:

netstat -tulpn | grep -i inspircd

Ele deve listar o programa inspircd, ouvindo na porta 6666:

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

Para testar o servidor, podemos instalar um cliente de IRC do terminal. No Windows, você pode usar um programa como o mIRC. No nosso exemplo, estaremos usando o weechat. Este é um cliente de IRC baseado em texto que pode ser usado em uma sessão de terminal.

Instale o aplicativo weechat através dos repositórios:

apt-get install weechat 

Depois que esse aplicativo estiver instalado, execute este cliente de IRC:

weechat

Para visualizar todos os comandos que temos a oferecer, você pode solicitar o comando help:

/help

Para sair do weechat, você pode digitar o seguinte comando:

/quit    

Adicione nosso servidor local a uma conexão no weechat:

/server add local localhost

Agora podemos nos conectar ao perfil de conexão chamado 'local':

/connect local

Você verá nosso motd e regras aparecerem na janela do terminal.

Para promover-se a um operador, digite o seguinte:

/oper xenial mypassword

Isso nos mostrará uma confirmação sobre o sucesso:

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

É isso para o nosso servidor de IRC.

Instalando serviços de IRC - Atheme

Atheme é um conjunto de serviços para redes de IRC projetadas para grandes redes de IRC com requisitos de alta escalabilidade. Ele adiciona serviços adicionais, como NickServ (Registro de apelidos) à sua rede de IRC.

O Atheme pode ser encontrado no repositório Ubuntu:

apt-get install atheme-services

Depois que os binários estiverem instalados, extraia o arquivo de configuração de exemplo e copie-o para a athemepasta:

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

Em seguida, edite este arquivo de configuração:

nano /etc/atheme/atheme.conf

Primeiro procure o loadmodulecomando protocol. Isso deve ser definido da seguinte maneira:

loadmodule "modules/protocol/charybdis";

Substitua charybdispelo protocolo de inspircd:

loadmodule "modules/protocol/inspircd12";

Próxima pesquisa pelo serviço name:

name = "services.int";

Altere services.intpara corresponder ao nome de domínio ou endereço IP do seu servidor de IRC:

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

Feito isso, procure o numérico:

numeric = "00A";

Agora altere-o para um valor diferente do numérico usado na tag do servidor usada anteriormente.

numeric = "77C";

Feito isso, vamos configurar o nome da rede. Pesquisar por netname:

netname = "misconfigured network";

Altere esse valor para o parâmetro de rede na tag do servidor.

netname = "ExampleNET";

Mude o valor de hidehostsuffix:

hidehostsuffix = "users.misconfigured";

Remova o .misconfigured:

hidehostsuffix = "users";

Em seguida, altere o nome do administrador para o que usamos antes:

adminname = "xenial";

Corresponda adminemailao e-mail associado usado antes:

adminemail = "[email protected]";

Agora que isso foi feito, precisamos criar um uplink para nossos serviços. Encontre os dois uplinkblocos de código e comente-os. Adicione /*antes do uplink{comando e */no final da chave de fechamento.

Será semelhante ao seguinte:

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

Em seguida, adicione nosso próprio uplink. Este uplink será executado apenas no IP do host local e na porta 7001. Especifique uma senha super secreta (nós a usaremos posteriormente):

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

Por fim, pesquise nossas definições de serviço. Comece com o nickservbloco primeiro.

No bloco nickserv, procure a hosttag e altere-a para 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>>...

Altere também hostname tagpara todos os outros serviços:

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

Feito isso, salve e saia do arquivo de configuração.

Para testar tudo, execute o atheme-servicesbinário:

atheme-services

Isso deve lhe dizer exatamente se funciona ou não. Se você não estiver recebendo uma saída como a mostrada abaixo, volte e verifique se há erros no arquivo de configuração:

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

Agora ative o serviço editando o arquivo de serviços:

nano /etc/default/atheme-services

Mude o ENABLEDvalor:

DAEMON_OPTS=""
ENABLED=1

Agora podemos iniciar o serviço:

service atheme-services restart

Verifique seu status:

service atheme-services status

Isso retornará resultados semelhantes:

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

Antes de terminarmos, precisamos adicionar nossos serviços Atheme ao InspIRCd:

nano /etc/inspircd/inspircd.conf

No final do arquivo, adicione estas linhas:

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

Agora reinicie o serviço InspIRCd:

service inspircd restart

Verifique se tudo está funcionando bem:

service inspircd status

Agora inicie nosso cliente weechat novamente:

weechat

Conecte-se ao nosso servidor local:

/connect local

Você verá um dos nossos serviços Atheme aparecer imediatamente: NickServ. Ele irá recebê-lo com informações sobre si mesmo.

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.

Você pode consultar o NickServ e descobrir seus comandos disponíveis com o seguinte:

/msg NickServ help


Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.