Configurando um servidor IRC InspIRCd no Ubuntu 16.04 LTS

Você está aqui:
Tempo estimado de leitura: 6 min

O Internet Relay Chat (IRC) é algo que existe desde os primórdios da Internet. Neste guia, mostrarei como configurar um servidor de IRC com o InspIRCd com o Atheme para serviços adicionais de IRC. O InspIRCd é um dos poucos servidores de IRC escritos 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ódulos avançado.

Pré-requisitos

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

Atualize o sistema

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

apt-get update && apt-get upgrade 

Configurando o firewall

Primeiro vamos endurecer um pouco o VPS. Vamos habilitar ufwe adicionar algumas regras. Vamos começar configurando as portas:

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

O firewall solicitará uma caixa de diálogo para aceitar as alterações. Apenas pressione Ypara sim.

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

Instalar e configurar o InspIRCd

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

apt-get install inspircd 

Quando 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

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

  • name: Hostname do seu servidor. Ele não precisa resolver, mas precisa ser a sintaxe correta (por exemplo sub.example.net:).
  • description: Descrição do servidor.
  • id: O SID para usar neste servidor. Isso não deve ser descomentado, a menos que haja um conflito de SID. Isso 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 ao conectar-se aos clientes. Deve ser o mesmo em todos os servidores da rede e não contém 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 anterior.

Em seguida, pesquise 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 os 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. Esta tag é usada para abrir o serviço. Por padrão, você verá o IP localhost ( 127.0.0.1). Isso significa que o serviço não pode ser contatado pelo mundo externo. Vamos abrir nosso serviço usando nenhum endereço. Isso fará com que o serviço seja vinculado a qualquer interface Ethernet que a máquina possua:

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

A próxima tag será a powertag. Esta 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 vamos alterar são as operconfigurações. Estes definem os logins do operador.

  • name: login do operador que é usado para operação (Exemplo:) /oper name password.
  • password: texto sem quebra e simples
  • host: Quais nomes de host / IPs podem ser operados. Várias opções podem ser separadas por espaços e os CIDRs são permitidos. Você pode apenas usar *ou @para esta seção.
  • type: Qual tipo de operativo é esse. O bloco acima deve ter três classes já definidas: NetAdminGlobalOpHelper. O NetAdminé o que irá utilizar.

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

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

Antes de reiniciar o serviço, edite os arquivos motdrules:

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 de IRC:

service inspircd restart

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

netstat -tulpn | grep -i inspircd

Deve listar o programa inspircd, escutando 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 terminal de IRC. No Windows, você pode usar um programa como o mIRC. Em 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 

Uma vez que esta aplicação esteja instalada, execute este cliente de IRC:

weechat

Para ver todos os comandos que o weechat tem para oferecer, você pode solicitar o comando help:

/help

Para sair, podemos 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á nossas regras e regras aparecerem na janela do terminal.

Para se promover para 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 altos requisitos de escalabilidade. Adiciona serviços adicionais como o NickServ (Registo de Apelido) à sua rede de IRC.

Atheme pode ser encontrado no repositório do 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 pesquise pelo loadmodulecomando do protocolo. Isso deve ser definido da seguinte maneira:

loadmodule "modules/protocol/charybdis";

Substitua charybdispelo protocolo de inspircd:

loadmodule "modules/protocol/inspircd12";

Próxima busca 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 mude 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";

Altere o valor do 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 é feito, precisamos criar um uplink para nossos serviços. Encontre os dois uplinkblocos de código e comente todos eles. Adicione /*antes do uplink{comando e */no final da chave de fechamento.

Será parecido com o 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. Esse uplink só será executado no IP do nosso host local e na porta 7001. Especifique uma senha super secreta (nós a usaremos mais tarde):

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

Finalmente, procure nossas definições de serviço. Comece com o nickservprimeiro bloco.

No bloco nickserv, pesquise 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 o hostname tagpara todos os outros serviços também:

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 dizer exatamente se funciona ou não. Se você não estiver recebendo saída como mostrado 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

Altere 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 terminar, 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

Certifique-se de que tudo esteja funcionando bem:

service inspircd status

Agora inicie nosso cliente weechat novamente:

weechat

Conecte-se ao nosso servidor local:

/connect local

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

23:12:48   local  -- | NickServ ([email protected]/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
Esse artigo foi útil?
Não Gostei 0
Visualizações: 469

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?