/* Arquivo de configuração para o UnrealIRCd 6 * OBSERVAÇÃO: Este arquivo utiliza a tradução Português do Brasil (pt-br). * * Apenas copie este arquivo para seu diretório conf/ e renomeie-o para * 'unrealircd.conf' e siga este arquivo de configuração linha a linha (e altere-o!) * * Importante: Todas as linhas, exceto { e } terminam com ; * Isto é muito importante, visto que se você esquecer um ; em algum lugar, * a checagem do arquivo de configuração irá criticar e o arquivo não será processado! * Se esta é sua primeira experiência com o arquivo de configuração do UnrealIRCd * então nós recomendamos fortemente que você se dedique um pouco para ler sobre a sintaxe, * isto levará apenas alguns minutos e o ajudará consideravelmente: * https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax * * Documentação completa do UnrealIRCd 6 (bem extensa!): * https://www.unrealircd.org/docs/UnrealIRCd_6_documentation * * Questões Frequentes: * https://www.unrealircd.org/docs/FAQ * */ /* Este é um comentário, todo o texto aqui será ignorado (comentário de tipo #1) */ // Este também é um comentário, e esta linha será ignorada (comentário de tipo #2) # Este também é um comentário, e novamente esta linha será ignorada (comentário de tipo #3) /* O UnrealIRCd faz um intenso uso dos Módulos, que permitem que você personalize completamente * o conjunto de recursos que você deseja habilitar no UnrealIRCd. * Veja: https://www.unrealircd.org/docs/Modules * * Utilizando o include abaixo, nós instruímos o IRCd a ler o arquivo * 'modules.default.conf' que carregará mais de 150 módulos * que vem com o UnrealIRCd. Em outras palavras: Isso simplesmente irá carregar * todos os recursos disponíveis no UnrealIRCd. * Se você está configurando o UnrealIRCd pela primeira vez, nós sugerimos que você * o use. Então, quando tudo estiver configurado e rodando, você poderá retornar * e personalizar a lista (se você desejar). */ include "modules.default.conf"; /* Agora vamos incluir alguns outros arquivos de configuração também: * - help/help.conf para nosso sistema de ajuda /HELPOP * - badwords.conf para os modos de usuário e canal +G * - spamfilter.conf como um exemplo para filtragem de spam * (comentado) * - operclass.default.conf contém algumas boas classes de operadores que * você pode usar em seus blocos de operadores. */ include "help/help.conf"; include "badwords.conf"; //include "spamfilter.conf"; include "operclass.default.conf"; include "snomasks.default.conf"; /* Carrega por padrão o módulo de cloaking em SHA256 (implementado em 2021): */ loadmodule "cloak_sha256"; /* Ou carrega o antigo módulo de clocking em MD5 que veio do UnrealIRCd 3.2/4/5: */ //loadmodule "cloak_md5"; /* Este é o bloco me { } que basicamente diz quem somos. * Ele define o nome do nosso servidor, algumas linhas informativas e um "sid" único. * O id do servidor (sid) precisa iniciar com um dígito numérico seguido por dois dígitos numéricos * ou alfanuméricos de A à Z. O sid precisa ser único para a sua rede de IRC (cada servidor * deve ter seu próprio sid). */ me { name "irc.exemplo.org"; info "Servidor ExemploNET"; sid "001"; } /* O bloco admin { } define quem os usuário verão quando eles digitarem /ADMIN. * Normalmente contém infomações de como eles podem contatar o administrador. */ admin { "Bob Smith"; "bob"; "email@exemplo.org"; } /* Clientes e servidores são colocados no bloco class { }, e os definimos aqui. * Blocos Class consistem nos seguintes itens: * - pingfreq: com que frequência será efetuado ping em um usuário / servidor (em segundos) * - connfreq: quantas vezes tentamos nos conectar a este servidor (em segundos) * - sendq: o tamanho máximo da fila para uma conexão * - recvq: o recebimento máximo da fila para uma conexão (controle de flood) */ /* Classe Client padrão, com valores de limites aceitáveis */ class clients { pingfreq 90; maxclients 1000; sendq 200k; recvq 8000; } /* Uma classe Especial para IRCOps com valores de limites mais altos */ class opers { pingfreq 90; maxclients 50; sendq 1M; recvq 8000; } /* Classe Server padrão, com valores de limites aceitáveis */ class servers { pingfreq 60; connfreq 15; /* tenta se conectar a cada 15 segundos */ maxclients 10; /* máximo de servidores */ sendq 20M; } /* Blocos allow definem quais classe clients podem se conectar a este servidor. * Isto permite que você adicione uma senha ao servidor ou restrinja o acesso ao servidor * apenas por IPs específicos. Você também pode configurar o máximo de conexões * permitidas por IP. * Veja também: https://www.unrealircd.org/docs/Allow_block */ /* Permite todos entrarem, mas apenas 3 conexões simultâneas por IP */ allow { mask *; class clients; maxperip 3; } /* Exemplo de um bloco especial allow em um IP específico: * Requer que usuários neste IP conectem por uma senha. Se a senha * estiver correta, então permite 20 conexões simultâneas deste IP. */ allow { mask 192.0.2.1; class clients; password "alguma_senha_secreta"; maxperip 20; } /* Blocos oper definem os Operadores de IRC. * Operadores de IRC são pessoas com "privilégios extras" comparado a outros, * eles podem por exemplo dar /KILL (derrubar) outras pessoas, iniciar uma conexão com server, * dar /JOIN (entrar) em canais ainda que eles estejam banidos, etc. * * Para mais informações sobre como se tornar um IRCOp e como executar * tarefas administrativas, veja: https://www.unrealircd.org/docs/IRCOp_guide * * Para obter mais detalhes sobre o bloco oper { } , veja * https://www.unrealircd.org/docs/Oper_block */ /* Aqui está um exemplo de um bloco oper para o 'bobsmith' * Você DEVE alterar isto!! */ oper bobsmith { class opers; mask *@*; /* Tecnicamente você pode deixar as senhas de oper em texto puro no arquivo de configuração, mas * isto é ALTAMENTE DESENCORAJADO. No lugar disso, você deve gerar uma senha hasheada: * No *NIX, execute: ./unrealircd mkpasswd * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd * ... e então cole a senha no campo abaixo: */ password "$argon2id..etc.."; /* Veja https://www.unrealircd.org/docs/Authentication_types para * mais informações, incluindo formas melhores de autenticação * como por exemplo o 'certfp', e como gerar hashes no Windows. */ /* Permissões de oper são definidos no bloco 'operclass'. * Veja https://www.unrealircd.org/docs/Operclass_block * O UnrealIRCd vem com um número padrão de blocos, leia * o artigo acima para ver a lista completa. Nós escolhemos o 'netadmin' aqui. */ operclass netadmin; swhois "é o Administrador da Rede"; vhost netadmin.exemplo.org; } /* Blocos listen definem as portas onde o servidor irá escutar. * Em outras palavras: as portas que os clientes e servidores podem usar * para se conectar a este servidor. * * Sintaxe: * listen { * ip ; * port ; * options { * ; * } * } */ /* Porta padrão 6667 do IRC */ listen { ip *; port 6667; } /* Porta padrão 6697 do IRC sob tunel SSL/TLS */ listen { ip *; port 6697; options { tls; } } /* Porta especial padrão para uso de servidores sob tunel SSL/TLS para vincular a outros servidores */ listen { ip *; port 6900; options { tls; serversonly; } } /* OBSERVAÇÃO: Se você está em uma shell IRCd com múltiplos IPs e você usa * os blocos listen { } acima, então você provavelmente receberá o erro * 'Address already in use' e o IRCd não iniciará. * Isto significa que você DEVE colocar em escuta um IP específico no lugar do '*', como por exemplo: * listen { ip 1.2.3.4; port 6667; } * Claro, substituindo o IP pelo IP que foi fornecido a você. */ /* * Blocos link permitem que você vincule múltiplos servidores uns aos outros para formar uma rede. * Veja https://www.unrealircd.org/docs/Tutorial:_Linking_servers */ link hub.exemplo.org { incoming { mask *@alguma_coisa; } outgoing { bind-ip *; /* ou especificar um IP */ hostname hub.exemplo.org; port 6900; options { tls; } } /* Nós usamos a impressão digital SPKI do outro servidor para autenticação. * Abra uma shell no OUTRO SERVIDOR e execute o comando abaixo para obter a impressão digital: * No *NIX, execute: ./unrealircd spkifp * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp */ password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; } class servers; } /* O Bloco link para o services é muito mais simples. * Para mais informações sobre o que são o Services, * leia https://www.unrealircd.org/docs/Services */ link services.exemplo.org { incoming { mask 127.0.0.1; } password "me_altere"; class servers; } /* U-lines dão a outros servidores (ainda) mais poderes/comandos. * Se você usa o services, você DEVE adicioná-los aqui. Você deve adicionar o * nome do servidor do services no bloco ulines { } no arquivo de configuração * em todo servidor UnrealIRCd da sua rede. * IMPORTANTE: Jamais insira o nome do servidor do UnrealIRCd aqui, * é apenas para o Services! */ ulines { services.exemplo.org; } /* Aqui você pode adicionar uma senha (apenas para IRCOps) para os comandos /DIE e /RESTART. * Isto para que se tenha uma pouco mais de proteção contra reinicio acidental * do servidor e ele seja derrubado inadvertidante. */ drpass { restart "reiniciar"; die "matar"; } /* O bloco log define o que deve ser registrado (logado) e em qual arquivo. * Leia também https://www.unrealircd.org/docs/Log_block */ /* Este é um bom padrão, ele registra tudo, exceto * coisas de depuração e comandos join/part/kick. */ log { source { all; !debug; !join.LOCAL_CLIENT_JOIN; !join.REMOTE_CLIENT_JOIN; !part.LOCAL_CLIENT_PART; !part.REMOTE_CLIENT_PART; !kick.LOCAL_CLIENT_KICK; !kick.REMOTE_CLIENT_KICK; } destination { file "ircd.log" { maxsize 100M; } } } /* In addition to regular logging, also add a JSON log file. * This includes lots of information about every event so is great * for auditing purposes and is machine readable. It is, however * less readable for humans. */ log { source { all; !debug; !join.LOCAL_CLIENT_JOIN; !join.REMOTE_CLIENT_JOIN; !part.LOCAL_CLIENT_PART; !part.REMOTE_CLIENT_PART; !kick.LOCAL_CLIENT_KICK; !kick.REMOTE_CLIENT_KICK; } destination { file "ircd.json.log" { maxsize 250M; type json; } } } /* Com o "aliases" você pode criar um atalho como /ALGUMACOISA para enviar uma mensagem para * algum usuário ou bot. Eles são usados normalmente por services. * * Nós temos um arquivo com um número pré-definido de atalhos, confira o diretório alias/ . * Como exemplo, aqui nós incluímos todos os atalhos utilizados pelo services anope. */ include "aliases/anope.conf"; /* Bane nicks para que eles não sejam utilizados por usuários comuns */ ban nick { mask "*C*h*a*n*S*e*r*v*"; reason "Reservado para Services"; } /* Bane um IP * Observe que você normalmente usa /KLINE, /GLINE e /ZLINE para isto. */ ban ip { mask 195.86.232.81; reason "Te odeio"; } /* Bane um servidor - se observarmos este servidor vinculado a alguém, então o expulsaremos */ ban server { mask pedro.usp.br; reason "Caia fora daqui."; } /* Bane um usuário - mas você normalmente usa /KLINE ou /GLINE para isso */ ban user { mask *usuariotroll@*.saturn.bbn.com; reason "Idiota"; } /* Este tipo de banimento permite que clientes sejam banidos com base no seu nome real (realname) * ou campo 'gecos'. */ ban realname { mask "Time Swat"; reason "FORCAOSTENSIVA"; } ban realname { mask "sub7server"; reason "sub7"; } /* Exceções de banimento e TKL. Permite que você crie exceções a usuários/IPs a um * KLINE, GLINE, etc. * Se você é um IRCOp com IP estático (e não há ninguém não confiável utilizando este IP), * então nós sugerimos que você seja adicionado aqui. Desta forma, você sempre poderá entrar * mesmo se acidentalmente você colocar um *LINE em si mesmo. */ /* Exceções de banimento de tipo 'all' protegem você de GLINE, GZLINE, QLINE, SHUN */ except ban { mask *@192.0.2.1; type all; } /* Isto permite que clientes do IRCCloud não tenham restrição de IP por conexão * e também cria exceção a eles de flood por conexão. */ except ban { mask *.irccloud.com; type { maxperip; connect-flood; } } /* deny dcc permite você possa banir nomes de arquivos transferidos por DCC */ deny dcc { filename "*sub7*"; reason "Possível Virus Sub7"; } /* deny channel permite a você banir um canal (por máscara) */ deny channel { channel "*warez*"; reason "Warez é ilegal"; class "clients"; } /* VHosts (Hosts Virtuais) permite aos usuários adquirirem um vhost diferente. * Veja https://www.unrealircd.org/docs/Vhost_block */ /* Exemplo de vhost que você pode usar. No IRC digite: /VHOST teste teste * OBSERVAÇÃO: apenas pessoas com o host 'unrealircd.com' podem usá-lo, então * tenha certeza de modificar o vhost::mask antes de seu teste. */ vhost { vhost eu.odeio.microsefrs.com; mask *@unrealircd.com; login "teste"; password "teste"; } /* Blocos blacklist irão consultar um serviço externo de blacklist * sempre que um usuário se conectar, para saber se seu endereço de IP é conhecido * por ataques de drone, como uma máquina hackeada, etc. * Documentação: https://www.unrealircd.org/docs/Blacklist_block * Ou apenas dê uma olhada nos blocos abaixo. */ /* DroneBL é provavelmente o serviço de blacklist mais popular usada por servidores de IRC. * Veja https://dronebl.org/ para ler a documentação e * o significado dos tipos de resposta. No momento em que este arquivo foi escrito, nós usamos os tipos: * 3: IRC Drone, 5: Flooder, 6: Drone ou bot de spam desconhecido, * 7: Drone de DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain, * 11: Proxy de página web, 12: Resolvedor de DNS aberto, 13: Atacantes de força bruta, * 14: Proxy Wingate público, 15: Roteador/Gateway comprometido, * 16: Virus que tentam conseguir root. */ blacklist dronebl { dns { name dnsbl.dronebl.org; type record; reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; } } action gline; ban-time 24h; reason "Proxy/Drone detectado. Confira https://dronebl.org/lookup?ip=$ip para detalhes."; } /* EFnetRBL, veja https://rbl.efnetrbl.org/ para ler a documentação * e o significado dos tipos de resposta. * No momento em que este arquivo foi escrito: 1 é proxy público, 4 é TOR, 5 é drones/flooders. * * OBSERVAÇÃO: Se você deseja permitir proxies TOR no seu servidor, então * você precisa remover o '4;' abaixo da seção reply. */ blacklist efnetrbl { dns { name rbl.efnetrbl.org; type record; reply { 1; 4; 5; } } action gline; ban-time 24h; reason "Proxy/Drone/TOR detectado. Confira https://rbl.efnetrbl.org/?i=$ip para detalhes."; } /* Você pode incluir outros arquivos de configuração */ /* include "klines.conf"; */ /* Configuração da Rede */ set { network-name "ExemploNET"; default-server "irc.exemplo.org"; services-server "services.exemplo.org"; stats-server "stats.exemplo.org"; help-channel "#ajuda"; cloak-prefix "Clk"; prefix-quit "Saindo"; /* Chaves cloak devem ser a mesma em todos os servidores da rede. * Eles são usados para geração de hosts mascarados e devem ser mantidos em segredo. * As chaves devem ser 3 strings (ou mais) de 80 caracteres randômicos * e devem se constituir de letras minúsculas (a-z), maiúsculas (A-Z) e números (0-9). * No *NIX, você pode executar './unrealircd gencloak' na sua shell para que o * UnrealIRCd gere 3 strings randômicas para você. * No Windows, você pode executar "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak */ cloak-keys { "Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi"; "adicione a outra"; "adicione a outra"; } } /* Configurações específicas do servidor */ set { kline-address 'definir.o.endereco.de.email'; /* e-mail ou URL exibido quando um usuário é banido */ modes-on-connect "+ixw"; /* quando os usuários conectam, esses modos de usuário é atribuído a eles */ modes-on-oper "+xws"; /* quado alguém se torna IRCOp, esses modos de usuário é atribuído a ele */ modes-on-join "+nt"; /* modos de canal padrão, quando um novo canal é criado */ oper-auto-join "#opers"; /* IRCOps entram automaticamente neste canal */ options { hide-ulines; /* esconde U-lines do /MAP e /LINKS */ show-connect-info; /* exibe a mensagem "looking up your hostname" ao se conectar */ } maxchannelsperuser 10; /* número máximo de canais que um usuário pode entrar com /JOIN */ /* O tempo mínimo que um usuário precisa estar conectado antes de ser permitido * utilizar a mensagem de QUIT. Isto irá ajudar no combate a SPAM. */ anti-spam-quit-message-time 10s; /* Ou simplesmente defina um quit estático, de forma que qualquer motivo de /QUIT seja ignorado */ /* static-quit "Cliente saindo"; */ /* static-part faz com que o mesmo acima aconteça ao comando /PART */ /* static-part yes; */ /* Proteção contra Flood: * Há uma série de configurações para isso, e a maioria delas tem bons padrões. * Veja https://www.unrealircd.org/docs/Set_block#set::anti-flood */ anti-flood { } /* Configurações para filtragem de SPAM */ spamfilter { ban-time 1d; /* duração padrão de um ban *LINE definido pelo filtro de spam */ ban-reason "Spam/Propaganda"; /* motivo padrão */ virus-help-channel "#help"; /* canal utilizado para usar em uma ação de 'virus de canal' */ /* except "#help"; exceção de canal ao filtro de spam */ } /* Restringindo certos comandos * Veja https://www.unrealircd.org/docs/Set_block#set::restrict-commands */ restrict-commands { list { except { connect-time 60; /* após 60 segundos, o usuário pode usar o comando /LIST */ identified yes; /* ou imediatamente, se estiver identificado ao services */ reputation-score 24; /* ou se tiver um score de reputação maior ou igual a 24 */ } } invite { except { connect-time 120; identified yes; reputation-score 24; } } /* Somando a possibilidade de restringir qualquer comando, * também existem 4 tipos especiais * que você pode restringir. Eles são "private-message", * "private-notice", "channel-message" e "channel-notice". * Eles estão todos comentados neste exemplo: */ //private-message { // except { connect-time 10; } //} //private-notice { // except { connect-time 10; } //} } } /* * A seguir será configurado o limite de conexão para "unknown users". * * Quando o UnrealIRCd detecta um número elevado de usuários conectando de um endereço IP * que nunca viu antes, então conexões do novo IP são rejeitadas quando estiverem * acima da taxa abaixo especificada. Por exemplo, na taxa 10:60 apenas 10 usuários por minuto podem conectar * por este IP que nunca foi visto antes. Endereços de IP conhecidos sempre podem entrar, * independente da taxa definida. O mesmo para usuários que se conectam via SASL. * * Leia também https://www.unrealircd.org/docs/Connthrottle para detalhes. * Ou apenas continue lendo a configuração abaixo: */ set { connthrottle { /* Primeiro nós configuramos quais usuários serão excluídos * das restrições. Estes usuários sempre conseguirão acessar. * Por padrão, entra como exceção usuários identificados com o services * com um score igual ou maior a 24. Um score 24 significa que * este IP foi conectado a esta rede por pelo menos 2 horas em algum momento * no mês passado (ou no mínimo por 1 hora se registrado). * Nós também permitimos usuários que se identificaram através do services via * SASL para passar por cima destas restrições. */ except { reputation-score 24; identified yes; /* Para mais informações, leia * https://www.unrealircd.org/docs/Mask_item */ } /* Novos usuários são todos os usuários que não pertencem * ao grupo known-users. Eles são considerados "novos" e no * caso de um número elevado de novos usuários se conectando, * eles serão sujeiros ao limite de taxa de conexão. * Por padrão a taxa é 20 novos usuários locais por minuto * e 30 novos usuários globais por minuto. */ new-users { local-throttle 20:60; global-throttle 30:60; } /* Esta seção configura quando este módulo não será ativado. * As configurações padrão desabilitarão o módulo quando: * - O módulo reputation esteja em execução a menos de * uma semana. Se estiver rodando há menos de 1 semana, então ainda temos * dados insuficientes para considerar quem é um "known user" (usuário conhecido). * - O servidor acabou de ser inicializado (primeiros 3 minutos). */ disabled-when { reputation-gathering 1w; start-delay 3m; } } } /* HISTÓRICO DE CANAL: * UnrealIRCd possui modo de canal +H que pode ser usado pelos usuários para recuperar * o histórico do canal antes deles terem entrado. Para informações gerais * sobre esta funcionalidade, leia https://www.unrealircd.org/docs/Channel_history * * Os limites do histórico podem ser configurados pelo set::history. Os padrões são * provavelmente bons para você, mas se você estiver em um sistema com pouca memória * ou tem centenas de canais, então você pode querer verificar esses padrões novamente. Leia * https://www.unrealircd.org/docs/Set_block#set::history * para ver as opções disponíveis. * * Além disso, você pode definir um "histórico de canal persistente", o que * significa que o histórico do canal é armazenado de modo criptografado no disco e é preservado * entre os reinícios do servidor. Leia * https://www.unrealircd.org/docs/Set_block#Persistent_channel_history * A funcionalidade de histórico persistente NÃO é habilitado por padrão porque você * precisa configurar o Bloco secret { } para ele antes. A seguir um exemplo simples * de senhas armazenadas diretamente no arquivo de configuração: * Para obter uma melhor segurança, leia https://www.unrealircd.org/docs/Secret_block * como formas alternativas para não armazenar senhas diretamente no arquivo de configuração. */ //secret historydb { password "algumasenha"; } //set { history { channel { persist yes; db-secret "historydb"; } } } /* Finalmente, você pode querer ter um MOTD (Mensagem do Dia), isto pode ser * feito criando um arquivo de texto 'ircd.motd' no seu diretório conf/ . * O texto dentro deste arquivo será exibido aos usuários ao se conectarem. * Para mais informações, veja https://www.unrealircd.org/docs/MOTD_and_Rules */ /* * Problemas ou precisa de ajuda? * 1) https://www.unrealircd.org/docs/ * 2) https://www.unrealircd.org/docs/FAQ <- responde a 80% das suas perguntas! * 3) Se ainda assim você está enfrentando problemas, você pode obter ajuda em: * - Fóruns: https://forums.unrealircd.org/ * - IRC: irc.unrealircd.org (SSL na porta 6697) / #unreal-support * Observe que pedimos que você leia a documentação e as perguntas frequentes (FAQ) primeiro! */