Como funciona o Axis
O que observa, quando age e o que guarda. Os números desta página são os valores por defeito do código em execução; cada servidor pode ajustá-los no painel.
- Subsistemas
- 8
- Camadas na verificação
- 15
- Corte do anti-nuke
- 4 ações em 10 s
- Nuke lento
- 24 ações em 15 min
- Travão de raids
- 8 entradas em 10 s
- Registo
- SHA-256 encadeado
- Assinatura pública
- Ed25519
- IPs
- scrypt · 16 MB por cálculo
- Cópias de segurança
- AES-256-GCM
De um evento do Discord a uma resposta
O Axis escuta o gateway do Discord: cada entrada do registo de auditoria, cada membro que entra, cada mensagem e cada interação. O ONYX distribui o evento por oito subsistemas, que decidem se é preciso agir. O que se decide fica escrito no registo.
Quanto pesa cada ação
Um nuke é uma rajada de ações destrutivas. O Axis soma o peso do que cada conta faz numa janela de 10 segundos e trava-a ao chegar a 4. Apagar pesa mais do que criar e editar pesa pouco, para que reorganizar o servidor não dispare nada.
- Apaga #geral+1
- Cria um webhook+0,75
- Apaga o cargo @Moderação+1
- Renomeia #regras+0,25
- Apaga #anúncios+1
| Ação | Peso |
|---|---|
| Apagar um canal, cargo, emoji ou sticker; banir, expulsar ou podar; mudar os cargos de um membro | 1 |
| Criar um webhook | 0,75 |
| Criar um canal ou cargo; apagar um webhook | 0,5 |
| Editar canais, cargos, permissões ou o servidor; criar emojis ou stickers; desbanir | 0,25 |
| Pôr slowmode ou fechar permissões, que é o que faz um bloqueio durante um raid | 0 |
Um raid nota-se pelo ritmo de entrada
8 contas que entram em 10 segundos fecham a entrada: o servidor sobe o nível de verificação e as contas novas esperam. Uma janela lenta de 2 horas apanha os raids que entram aos poucos, e um canal armadilha apanha os bots que escrevem onde nenhuma pessoa escreveria.
15 camadas para reconhecer quem volta
Um banido volta com outra conta, outro IP e às vezes outro navegador. Cada camada olha para uma coisa diferente. Nenhuma chega sozinha, e os sinais fracos só contam quando vários coincidem.
As coincidências fortes, como o cookie ou o mesmo dispositivo numa rede que não é partilhada, retêm a conta. As fracas abrem uma revisão para a equipa. Dados móveis, o mesmo modelo de telemóvel ou o wifi de uma escola nunca chegam sozinhos.
Um registo que não se pode reescrever sem se notar
Cada ação encadeia-se com o hash SHA-256 da anterior: mudar uma linha parte tudo o que vem depois. A raiz de uma árvore de Merkle (RFC 6962) é assinada com Ed25519 e publicada, por isso reescrever a história inteira também não passa despercebido.
O que o Axis guarda e o que não guarda
Guarda
- O IP, só como hash scrypt (16 MB de memória por cálculo) com uma chave que não está na base de dados.
- A impressão do navegador, só como HMAC-SHA256.
- Os registos de verificação, durante 90 dias; os de contas sancionadas, enquanto durar a sanção.
- As cópias do servidor, cifradas com AES-256-GCM e uma chave derivada com scrypt para cada cópia.
- Os relatórios de incidentes, durante 180 dias.
Não guarda
- O IP em claro.
- Mensagens privadas entre membros: um bot não as pode ler.
- O texto das mensagens que o automod revê e deixa passar.
- Dados de pagamento: são tratados pela Lemon Squeezy.
- O que a IA analisa: só se guarda o veredicto, nunca quem o publicou.
Dois nós e nenhuma porta aberta
O Axis corre num nó principal e noutro de reserva, num fornecedor diferente. Se o principal deixar de responder, o de reserva assume com a configuração replicada. O servidor web só escuta em 127.0.0.1: chega-se a ele por um túnel da Cloudflare, com a sua firewall à frente.
O que o Axis não pode fazer
Adiciona o Axis e confirma tu mesmo
A documentação explica cada ajuste. O estado do serviço é público.