TRILHA 4

🛡️ Segurança e Operação

Hermes mexe em chave, dinheiro e dados — então segurança não é opcional. Aqui você aprende a guardar tokens, blindar o servidor, dar só os privilégios necessários e auditar tudo de forma recorrente.

4
Módulos
24
Tópicos
~2h
Duração
Inter.
Nível

Mapa da trilha

Conteúdo detalhado

4.1~30 min

🔐 Tokens, .env e hermes config set

Onde colocar credenciais, qual .env o Hermes lê, como evitar que apareçam no histórico de chat e como manter logs sem vazar segredos.

O que é:

Tudo que você cola no chat do Hermes vai pro SQLite (sessions). Token colado fica indexado, pesquisável via session_search e copiado em backups. Para sempre.

Por que aprender:

Token vazado por descuido é o vetor de ataque mais comum. Você passa o aprendizado adiante, alguém com acesso ao SQLite (ou ao backup, ou a um log) puxa a chave.

Conceitos-chave:

Use sempre hermes config set KEY value. Se colou por engano, revogue a credencial imediatamente e gere outra. Não tente "limpar" o histórico — assuma vazado.

O que é:

Comando que escreve a variável diretamente em /root/.hermes/.env (dentro do container) sem passar pelo histórico de chat nem pelos logs.

Por que aprender:

É o caminho seguro. O CLI lê o valor por stdin, persiste no .env e confirma sem ecoar. Funciona em laptop, VPS e Docker.

Conceitos-chave:

Exemplos: hermes config set TELEGRAM_TOKEN xxx, hermes config set OPENROUTER_API_KEY xxx. Quando rodando em Docker, exec no container antes: docker exec -it hermes hermes config set ....

O que é:

Em Docker, o .env da raiz do projeto no host não chega ao processo. O Hermes lê o .env de /root/.hermes/.env dentro do container (volume montado em ~/.hermes no host).

Por que aprender:

É a confusão #1 da comunidade. Você edita o .env "errado", reinicia, nada muda, acha que é bug do Hermes — é só caminho equivocado.

Conceitos-chave:

Confira com docker exec -it hermes env | grep TELEGRAM. Se a var não aparece, o volume não está montando direito ou o nome está errado. Logs de erro: ~/.hermes/logs/errors.log.

O que é:

Para apagar uma chave antiga, renomear ou organizar comentários, edite direto: docker exec -it hermes nano /root/.hermes/.env.

Por que aprender:

O config set só sobrescreve ou adiciona. Não tem subcomando "delete" amigável. Quando a chave deixa de ser usada (você trocou de provedor), apague manualmente pra reduzir superfície de ataque.

Conceitos-chave:

Sempre faça backup antes: cp /root/.hermes/.env /root/.hermes/.env.bak. Reinicie o gateway depois: hermes gateway restart.

O que é:

No GitHub você escolhe entre token clássico (acesso amplo) e fine-grained (escopo por repositório, expiração obrigatória). Na OpenAI você define scopes do project key.

Por que aprender:

Token vazado é prejuízo proporcional ao escopo. Token clássico full-access expõe todos seus repos. Fine-grained no repo X só expõe X.

Conceitos-chave:

Regra: comece com escopo mínimo, expanda quando o agente reclamar de "permission denied". Sempre defina expiração (90 dias é padrão razoável).

O que é:

Hermes redige automaticamente valores de variáveis de ambiente quando aparecem em mensagens de erro. ~/.hermes/logs/errors.log raramente tem o token "real" exposto.

Por que aprender:

Você pode pedir suporte, colar pedaços do log, postar no Discord da comunidade — sem vazar credencial. Mas confira sempre antes de compartilhar.

Conceitos-chave:

Auto-redação cobre nomes conhecidos (TELEGRAM_TOKEN, *_API_KEY). Valores hardcoded em código ou em mensagem livre podem escapar. Antes de postar log, abra e leia.

Ver Completo
4.2~30 min

🛡️ Firewall, portas e IP allowlist

Sua VPS é alvo de scan automatizado o tempo todo. Defesa em camadas + ufw + SSH hardening reduzem o ruído de 99% e fecham as portas que ninguém precisa.

O que é:

Três camadas: 1) firewall do provedor (Hostinger/AWS), 2) ufw no host (Ubuntu), 3) isolamento do container Docker. Cada uma bloqueia algo que a outra deixou passar.

Por que aprender:

Confiar só em uma é frágil. Se você desligar ufw temporariamente para debugar e esquecer, o firewall do provedor ainda te cobre.

Conceitos-chave:

Princípio: nada exposto sem motivo claro. Toda porta aberta tem que ter justificativa documentada.

O que é:

A Hostinger oferece firewall no próprio painel (e Upguard como serviço de monitoramento). Bloqueia tráfego antes de chegar na VM, reduzindo carga e log noise.

Por que aprender:

Não precisa esperar o pacote chegar no Ubuntu pra ser descartado. Provedor já filtra. Você economiza CPU, banda e linhas de log.

Conceitos-chave:

Mínimo recomendado: bloqueie tudo, abra só 22 (SSH), 80/443 (web) e portas específicas que você usa. Reveja a cada 90 dias.

O que é:

Uncomplicated Firewall — wrapper amigável de iptables. Em quatro linhas você fecha a VPS para o mundo: ufw default deny, ufw allow 22, ufw allow 443, ufw enable.

Por que aprender:

É o controle mais granular que você tem do lado da VM. Fecha tráfego que chegou através do firewall do provedor (ex: outro container vizinho).

Conceitos-chave:

Sempre ufw allow 22 antes de ufw enable — sob pena de se trancar fora. Verifique com ufw status verbose.

O que é:

Três ajustes no /etc/ssh/sshd_config: PasswordAuthentication no (chave-only), Port 2222 (não-padrão) e instalar fail2ban (bana IPs que tentam força bruta).

Por que aprender:

99% dos ataques contra VPS são scan automatizado de SSH na 22 com password fraca. Tirar 22 da equação descarta a maioria. fail2ban resolve o resto.

Conceitos-chave:

Antes de desabilitar password, garanta que sua chave funciona. Antes de mudar porta, abra ela no ufw e firewall do provedor. Teste numa segunda sessão antes de fechar a primeira.

O que é:

Restringir SSH apenas a IPs conhecidos. Hostinger permite via console, AWS via Security Groups, ufw via ufw allow from 1.2.3.4 to any port 22.

Por que aprender:

Se você só acessa de dois lugares (casa + escritório), não tem motivo pro mundo inteiro tentar SSH. Reduz superfície de ataque a quase zero.

Conceitos-chave:

Cuidado com IP dinâmico — se sua casa muda IP toda madrugada, você vai se trancar fora. Solução: IP fixo via VPN ou Tailscale, e libera só o IP da VPN.

O que é:

Você pede em linguagem natural: "Faça auditoria do firewall e proponha hardening." O Hermes roda ufw status, ss -tlnp, lista portas ativas, compara com o que faz sentido e sugere mudanças.

Por que aprender:

Você não precisa virar SRE. Ele lista, explica e sugere. Você revisa e aprova. Mantém a operação dentro do seu escopo de tempo disponível.

Conceitos-chave:

Permissão para rodar comandos no terminal precisa estar configurada. Sempre revise antes de executar mudanças críticas (especialmente em SSH e firewall).

Ver Completo
4.3~25 min

🪪 Princípio do menor privilégio + contas separadas

Trate o agente como funcionário novo: você não dá acesso total no dia 1. Escopos mínimos, contas dedicadas, cartão limitado e chaves nomeadas por agente.

O que é:

Mentalidade de onboarding aplicada a software: dia 1 com escopo mínimo, expansão gradual conforme prova confiabilidade. Igual estagiário humano — só com latência menor.

Por que aprender:

Reduz blast radius. Erro do agente nas duas primeiras semanas é prejuízo limitado. Erro com permissão total no primeiro dia pode quebrar produção.

Conceitos-chave:

Dia 1: ler arquivos, mandar Telegram. Semana 2: commitar em repos específicos. Mês 1: deploy em staging. Mês 3: produção com revisão.

O que é:

Crie email novo só pro agente. AgentMail é serviço criado pra isso; Gmail dedicado também serve. Nunca use sua conta principal.

Por que aprender:

Se a conta do agente for comprometida, o blast radius é só ela. Sua identidade pessoal, recovery de bancos, 2FA de tudo — fica intacto.

Conceitos-chave:

Use também para login em serviços de terceiros (OpenRouter, GitHub do agente). Centraliza credenciais "do agente" longe das suas.

O que é:

No OpenRouter (e na maioria dos provedores), você cria chaves com nome. hermes-pessoal, hermes-marketing, hermes-financeiro — uma por agente.

Por que aprender:

Quando algo dá errado, você sabe qual agente queimou tokens. Pode revogar uma chave sem afetar os outros. Auditoria de gasto fica granular.

Conceitos-chave:

Nunca compartilhe a mesma chave entre Hermes diferentes. Mesmo que dê preguiça, é o tipo de atalho que se paga caro depois.

O que é:

Use cartão virtual (Nubank, Revolut, Privacy.com) com limite pequeno só pras assinaturas do agente. Configure alerta de gasto e hard cap mensal no provedor.

Por que aprender:

Loop infinito de uma skill mal escrita pode queimar centenas de dólares numa noite. Hard cap impede. Alerta avisa antes do estrago.

Conceitos-chave:

No OpenRouter: defina monthly limit por chave. Na OpenAI: usage limits por project. No cartão virtual: limite hard de R$ 200/mês para agente experimental.

O que é:

Quando o Hermes pede para rodar comando ou usar tool sensível, ele oferece três níveis: aprovar uma vez, aprovar a sessão inteira, ou aprovar pra sempre.

Por que aprender:

Cada escolha tem trade-off. once é seguro mas chato (toda hora pergunta). always é cômodo mas vira backdoor permanente. session é o meio termo.

Conceitos-chave:

Regra: comandos destrutivos (rm -rf, git push --force) → once. Comandos de leitura (ls, cat) → always. Resto → session.

O que é:

Cada Hermes (pessoal, marketing, financeiro) deve ter seu próprio bloco de credenciais isolado. Containers separados, .env separados, chaves separadas, perfis separados.

Por que aprender:

Compromisso de um agente não cascateia. Auditoria de cada um é limpa. Você pode aposentar um agente sem mexer nos outros.

Conceitos-chave:

Padrão de docker-compose: um service por agente, com volume ~/.hermes-pessoal, ~/.hermes-marketing, etc. Documente quem tem acesso a quê em SECURITY.md.

Ver Completo
4.4~25 min

📋 Auditoria recorrente + skill semanal

Segurança que depende da sua memória falha. Cron + skill = auditoria que acontece sozinha. Heartbeat de saúde, rotação de tokens e pós-incidente que vira aprendizado.

O que é:

Auditoria manual é boa nas duas primeiras semanas. Depois, vira "vou fazer no fim de semana" e nunca mais. Cron resolve: máquina não esquece, não cansa, não posterga.

Por que aprender:

Segurança é problema de hábito. Se depende da sua disciplina, falha. Se depende da máquina, funciona. Você só revisa o relatório.

Conceitos-chave:

Frequência ideal: pesado uma vez por semana, leve a cada 5 minutos. Intervalo curto demais vira ruído ignorado. Longo demais perde o evento.

O que é:

Skill em ~/.hermes/skills/auditoria-vps/SKILL.md que checa: portas abertas (ss -tlnp), processos suspeitos (top consumidores), disco (df -h), logs estranhos (auth.log, syslog).

Por que aprender:

Procedimento claro = execução previsível. Você revisa um relatório consistente, não tenta lembrar do nada o que checar.

Conceitos-chave:

SKILL.md tem YAML front matter (name, description, tags). Procedure lista os checks. Verification confirma que rodou. Pitfalls anota falsos-positivos comuns.

O que é:

Comando: /cron add "every Sunday at 09:00" "Rode auditoria-vps e me mande o relatório no Telegram" --skill auditoria-vps.

Por que aprender:

Domingo 9h é o slot ideal: você acorda no fim de semana com café, lê o relatório, age se for o caso. Sem pressão da semana de trabalho.

Conceitos-chave:

Use --skill para injetar a skill na sessão fresh. --workdir se houver contexto específico de pasta. --deliver telegram garante a entrega.

O que é:

Modo --no-agent roda script sem chamar LLM. Custo zero. Um script Bash checa RAM e disco, sai silencioso se OK, retorna erro se passar do threshold.

Por que aprender:

Watchdog barato. Você descobre antes do site cair. Sem alerta = tudo bem. Alerta = ação imediata. Sinal-ruído altíssimo.

Conceitos-chave:

Comando: hermes cron create "every 5m" --no-agent --script memory-watchdog.sh --deliver telegram --name "memory-watchdog". Script .sh roda em /bin/bash.

O que é:

A cada 90 dias, gerar novas chaves (GitHub, OpenRouter, Telegram bot se necessário) e revogar as antigas. Cron lembra; você executa.

Por que aprender:

Token vazado meses atrás e não trocado é vulnerabilidade silenciosa. Rotação periódica garante que mesmo um leak não-detectado tem janela limitada.

Conceitos-chave:

Cron: /cron add "every 90 days" "Rote os tokens GitHub, OpenRouter e Telegram. Avise quais foram trocados.". Documente cada rotação na MEMORY.md.

O que é:

Quando algo deu errado (token vazou, cron consumiu loop infinito, comando destrutivo aprovou sem revisar), peça ao agente: "Salva isso na MEMORY.md como lição".

Por que aprender:

É a forma mais barata de fazer pós-mortem. Próxima sessão começa lembrando. Reduz reincidência. Vira aprendizado persistente.

Conceitos-chave:

Padrão de entrada: data + sintoma + causa-raiz + ação de correção. Limite ~800 tokens — entradas antigas saem quando memória enche, mas o padrão persiste.

Ver Completo
← Trilha anterior: Pilares Próxima trilha: Comparações →