Um IRCd , abreviação de Internet Relay Chat daemon , é um aplicativo que implementa o protocolo IRC que é lançado em um servidor , tornando este servidor um servidor IRC . Ele permite que diferentes pessoas se comuniquem entre si pela Internet , trocando mensagens de texto em tempo real. Não deve ser confundido com um IRC Robot, que é um programa que se conecta a um servidor IRC como qualquer outro cliente .
O servidor escuta conexões de clientes IRC em um conjunto de portas TCP . Quando o servidor é membro de uma rede IRC, ele também mantém uma ou mais conexões com outros servidores / daemons.
O termo ircd inicialmente se referia a um único pedaço de software, mas eventualmente se tornou um termo genérico para qualquer implementação de um daemon de IRC.
A maioria desses servidores é instalada em máquinas que usam Linux . A instalação de tal dispositivo é rápida e fácil. A configuração, entretanto, requer mais tempo. Muitos sites oferecem tutoriais para a instalação de um IRCD.
Os IRCDs mais usados são:
Um grande número de IRCDs são versões modificadas dos IRCDs principais (notavelmente IRCu e Bahamut ).
Grande parte desses servidores são gratuitos e Open Source (open source), o que explica o grande número de versões existentes.
Além disso, os servidores IRC são frequentemente acompanhados por serviços (Nickserv, Chanserv ...) que adicionam funcionalidades como a reserva de pseudônimos e canais.
Uma linha O ( linha de operadores) é um bloco de dados do arquivo de configuração do servidor IRC (ircd.conf, unrealircd.conf ... dependendo do IRCd ). É utilizado para indicar ao sistema quem são os operadores da rede, ou seja, quem pode assumir o controlo a nível global do (s) servidor (es). As linhas O são geralmente criadas pelo servidor / administrador de rede ou por um administrador com acesso direto aos arquivos de configuração do servidor IRC. A atribuição de uma linha O a um usuário significando o fato de lhe conceder um certo número de poderes sobre o sistema, é necessário garantir que a pessoa seja absolutamente confiável, e também, capaz de gerenciar ações em um nível além do canal individual gestão.
Exemplo de linha OO tipo de configuração varia de um tipo de IRCd para outro.
O exemplo a seguir mostra um bloco de configuração para uma linha O em UnrealIRCd . Reúne todas as informações e autorizações de acesso de um determinado IrcOp , e pode conter tantos blocos de operadores quantos forem necessários. O bloco sempre começa com a linha "Oper <nome do operador>" seguida por uma chave aberta e sempre termina com uma chave fechada e um ponto e vírgula. Normalmente, o ponto-e-vírgula indica o final de um bloco ou uma linha de configuração. Se parece com isso:
oper UserName { class clients; from { userhost *@InternetServiceProvider.com; }; password "motdepasse"; flags { netadmin; global; get_umodew; get_host; can_gkline; can_gzline; can_zline; can_restart; can_die; can_override; }; maxlogins 1; };Se detalharmos o conteúdo do bloco, notamos diferentes elementos:
Existem outros parâmetros opcionais para o Bloco Operador, como a atribuição de modos de usuário após uma operação ...
O-line temporárioIrcOps com acesso de nível de administrador de serviço (Services Admins ou SA) pode definir linhas O por meio de OperServ . Comparados com aqueles definidos no arquivo de configuração do servidor, esses O-lines podem ser considerados temporários porque é muito fácil configurá-los e removê-los. Além disso, não requer nenhuma releitura da configuração para estar ativo, e o usuário que dela se beneficia pode realizar uma operação usando o seu apelido (registrado no NickServ) e sua senha de identificação do NickServ. Mas, ao contrário da configuração central, não é possível usar sinalizadores Oper do tipo "can_kline" ou "global", mas usa os chamados sinalizadores "antiquados", como + oaAWst ... (Esses modos são indicados com suas correspondências em novos Oper-flags na documentação do UnrealIRCd). Por exemplo, para definir uma linha O temporária em um usuário, o administrador deve inserir o seguinte comando e definir os sinalizadores apropriados lá:
/MSG OperServ OLINE <pseudonyme> <flags>
Exemplo: /MSG OperServ OLINE Nickoperateur +owghasW
Neste exemplo, adicionamos ( + ) os seguintes sinalizadores: um operador ( o ), que pode ver as mensagens de serviço enviadas para IrcOps ( w ) e aquelas enviadas para qualquer pessoa na rede ( g ). Ele também tem acesso à ajuda especial dos operadores através do comando / Helpop ( h ), ele também é um administrador dos serviços ( a ) que vê os avisos do servidor ( s ) e que recebe um aviso quando outro usuário faz a / WHOIS nele ( W ). Sinalizadores diferenciam maiúsculas de minúsculas. Eles fornecem privilégios diferentes: a é diferente de A (que significa Administrador do servidor).
É muito fácil remover a linha O temporária. Para fazer isso, basta inserir o mesmo comando de antes, mas simplesmente seguir o apelido com o símbolo de menos ( - ).
Exemplo: /MSG OperServ OLINE Nickoperateur -
O usuário perde sua linha O e seus direitos temporários de operador.
Uma linha D (ou D: linha ), de negar linha , é um termo no jargão do IRC . Como a linha K, a linha D impedirá que um usuário use um determinado servidor em uma rede IRC. A particularidade da linha D é que o usuário afetado nem mesmo conseguirá se conectar ao servidor (este irá remover imediatamente a conexão com o endereço IP banido), enquanto a linha K irá desconectar ( matar ) o usuário uma vez. assim que sua conexão com o servidor for encerrada (possivelmente depois de exibir o MOTD com um aviso indicando o motivo do banimento). A linha D é geralmente usada para bloquear conexões de invasores persistentes .
Uma linha K (ou linha K:), de kill line , é um termo no jargão da rede IRC . Um usuário afetado por uma linha-K não tem acesso a um determinado servidor na rede, seja temporária ou permanentemente.
Geralmente, um K-line só se aplica a um servidor por vez: o usuário banido pode, portanto, conectar-se à rede IRC através de outro servidor. No entanto, há um grande número de outros “ linhas ” ( L-linha , Z-linha , etc.) que estão perto de K-linha. Por exemplo, uma linha G atua da mesma forma que uma linha K, mas isso se aplica a todos os servidores de uma rede IRC.
Daemons IRC modernos também podem permitir que o IrcOps configure K-lines sem a necessidade de modificar os arquivos de configuração do daemon (algo normalmente reservado para administradores). Alguns serviços de IRC também podem ajudar a gerenciar essas linhas , como OperServ por exemplo.
Os modos são meios de proteger os canais e os utilizadores, de atribuir privilégios, de activar opções ... Os modos têm vários níveis que vão desde a gestão do servidor, passando pelos canais e também pelos utilizadores.
Somente um usuário com privilégios em um canal ou em um servidor pode modificar os modos deste último e dos demais usuários (de acordo com seu nível de acesso, IrcOp , Serviços de Admin, Operador de canal, Half-Op ...). O uso do comando /modedepende inteiramente do cliente IRC escolhido pelo usuário, sua sintaxe é a seguinte:
/mode <cible> <mode> [paramètres]O alvo pode ser um canal irc, por exemplo #plop, ou o apelido de um usuário (seu apelido ). O modo está na forma de uma letra maiúscula ou minúscula precedida por um + ou um - dependendo se você deseja definir ou remover o modo. Alguns modos requerem parâmetros, em particular aqueles usados para gerenciar os direitos do usuário.
Por exemplo, para permitir que apenas usuários convidados entrem no canal #plop, uma operadora fará o seguinte:
/mode #plop +iNeste mesmo canal, para retirar os direitos de operador de um usuário cujo apelido é "JeanClaude":
/mode #plop -o JeanClaudeSe JeanClaude não quiser exibir seu endereço IP publicamente, ele irá:
/mode JeanClaude +xOs modos o, v, l, b e k usam um parâmetro.
Estes são os modos mais comuns definidos pelo RFC , cada servidor IRC é livre para adicionar quantos modos quiser.
Os modos de um canal que concede certos privilégios aos usuários são os seguintes:
A maioria das conexões com redes IRC são geralmente nítidas, não criptografadas. Normalmente, os usuários não prestam muita atenção a isso, mas o problema torna-se óbvio quando é necessário usar uma senha para acessar os serviços de IRC . Como as senhas são transmitidas em claro, como todos os dados de conexão, elas podem ser potencialmente interceptadas por um terceiro ouvindo o tráfego da rede.
A solução, portanto, consiste em criptografar dados para proteger as informações (conversas, senhas, logins IrcOp , etc.). Assim, o tráfego que entra e sai do servidor será legível apenas pelas máquinas destinatárias legítimas. Em geral, para garantir a segurança de uma rede, as operadoras devem usar conexões seguras sistematicamente para evitar o farejamento e, portanto, o roubo de suas senhas.
A criptografia / segurança de uma conexão IRC segue um processo padrão usado com outros tipos de protocolos (como HTTPS, por exemplo). O cliente IRC irá primeiro negociar com o servidor para criar um túnel de segurança (através de uma porta dedicada) no qual os dados irão fluir (por verificação e troca de chaves públicas e certificados). Só depois que o túnel estiver pronto é que a sessão de IRC é iniciada. Usar uma conexão IRC segura não é diferente de usar uma conexão normal, exceto que o cliente às vezes pode exibir uma mensagem de alerta se o certificado parecer incompleto (caso de certificados autoassinados)., Por exemplo).
Em geral, o servidor sinaliza ao cliente que os dados estão criptografados exibindo as características da conexão antes do MOTD, por exemplo:
-irc.serveur.com- *** You are connected to irc.serveur.com with TLSv1-AES256-SHA-256bits
TLSv1 indica a versão do sistema de segurança, AES é o protocolo de criptografia com um comprimento de chave de 256 bits, SHA256 é o hash . Essas informações obviamente variam dependendo dos protocolos de criptografia e comprimentos de chave usados e / ou disponíveis no servidor ou cliente.
E depois disso, Usermode + z é aplicado ao cliente, marcando-o como seguro. Este modo também permite que o usuário entre em canais que requerem criptografia de dados, como canais reservados para administradores / operadores ou outros.
A propósito, quando o usuário se conectar a um servidor e quiser saber se este suporta conexões seguras, basta revisar a lista de modos que podem ser usados no servidor. Esta informação é sempre exibida assim que a conexão é estabelecida, antes do MOTD, assim:
Welcome to the MyServer IRC Network [email protected]
Nas listas de modos (" iowghra ... "), se aparecer o modo " z ", significa que a criptografia é suportada pelo servidor. Para usar a conexão segura, você deve, portanto, verificar com um IRCOp ou um Administrador para descobrir o número da porta dedicada.
Essa técnica nem sempre é verdadeira. Alguns servidores, como na rede freenode, usam um modo diferente e outros IRCds simplesmente não têm esse modo implementado.
A maioria dos clientes de IRC modernos implementam funções para se conectar a um servidor de IRC que possui uma ou mais portas dedicadas a sessões seguras. Alguns clientes gerenciam essas funções nativamente (como KVIrc , XChat ou mesmo Irssi se for compilado com suporte SSL ), onde outros clientes como mIRC, por exemplo, exigem a adição de bibliotecas de criptografia como OpenSSL ( libeay32 .dll e ssleay32.dll por exemplo) . Portanto, é suficiente conectar-se ao servidor através da porta dedicada para conexões seguras; por exemplo: 7000 (como convenção, não oficial) em vez de 6667.
Para alguns clientes, às vezes é necessário adicionar um parâmetro ao comando de conexão para indicar que você precisará usar criptografia. No mIRC, é suficiente colocar um " + " antes do número da porta (exemplo :) /server irc.server.com:+6668, ou às vezes a chave " -ssl " também pode ser usada. Isso varia de cliente para cliente.
A implementação do sistema de criptografia em um servidor é feita durante a preparação da compilação (para um servidor executando um sistema Linux / UNIX ou FreeBSD ). Dependendo do servidor ( UnrealIRCd , Bahamut , etc.), o script deve ser configurado de forma que integre os módulos de criptografia no momento da compilação. Isso às vezes envolve uma pergunta que pergunta se o usuário deseja que o servidor suporte conexões do tipo SSL. Se a resposta for sim, o sistema irá procurar OpenSSL ou outro tipo de módulos para instalar o suporte à criptografia e gerar a chave do servidor e o certificado (autoassinado neste caso, se você não tiver um certificado emitido por uma autoridade oficial). Para criar o certificado, o script faz ao usuário uma série de perguntas como: nome do site, localização geográfica, etc. Uma vez que esta etapa foi passada, a compilação pode ser iniciada.
A próxima etapa é configurar corretamente o servidor para determinar as portas que permitem conexões seguras. Esta configuração geralmente é feita no arquivo ircd.confou unrealircd.confno Bloco de Escuta ou “ P: Linha ”. Ele especifica os números de porta padrão não segura (geralmente 6667) e, em seguida, a (s) porta (s) segura (s), adicionando os parâmetros e opções necessários que instruem o servidor a usar criptografia para essas portas específicas. Além disso, os caminhos exatos dos arquivos que contêm a chave pública e o certificado devem ser incluídos na configuração principal do servidor de IRC. Normalmente, esses arquivos estão localizados na pasta que contém o executável do servidor.
Como o IRC é um protocolo que exige a verificação da precisão dos dados transmitidos, ele se baseia no modelo de transmissão TCP . Isso significa, portanto, que se a conexão apresentar latência muito alta, dessincronização ou perda irrecuperável de pacotes, a sessão será considerada nula e encerrada automaticamente pelo cliente ou servidor. Portanto, nem é preciso dizer que o túnel de segurança também opera de acordo com essas mesmas regras. A falta de resposta de um lado ou do outro, a perda de sincronização das chaves de criptografia ou simplesmente um Ping Timeout (latência excessiva) fará com que o túnel feche e, com isso, o fim da sessão de IRC. Desta forma, os dados não são transmitidos aleatoriamente sem verificação pelo sistema. A sessão segura é redefinida quando o cliente se reconecta.