
🦞 Patch de fortalecimento de segurança para Clawdbot/Moltbot. Detecta e corrige gateways expostos automaticamente.
# 🦞 ClawdGuard
[](https://crates.io/crates/clawdguard)
[](https://crates.io/crates/clawdguard)
[](https://github.com/fadidevv/clawdguard/stargazers)
[](https://github.com/fadidevv/clawdguard/network)
[](https://github.com/fadidevv/clawdguard/issues)
[](https://opensource.org/licenses/MIT)
Endurecimento de segurança para instalações Clawdbot/Moltbot. Detecta e corrige gateways expostos.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/11248/f3b8678c2d8d1e5e0918e40d5b964e1beabd366350341f1665319c60210e98f1.png" alt="ClawdGuard corrigindo problemas de segurança" width="800">
</p>
<p align="center">
<strong>Detecte e corrija gateways Clawdbot/Moltbot expostos</strong>
</p>
<p align="center">
<a href="#the-problem">Problema</a> •
<a href="#features">Funcionalidades</a> •
<a href="#quick-start">Início Rápido</a> •
<a href="#docker-setup">Docker</a> •
<a href="#cli-reference">CLI</a> •
<a href="#what-gets-fixed">O Que é Corrigido</a> •
<a href="#development">Desenvolvimento</a>
</p>
---
## O Problema
**Mais de 900 instâncias Clawdbot/Moltbot estão atualmente expostas na internet** (visíveis no Shodan, porta 18789) sem qualquer autenticação. Isso permite que qualquer pessoa:
| Risco | Impacto |
|------|--------|
| Acessar chaves de API | Roubar credenciais OpenAI, Anthropic e outras |
| Executar comandos | Executar comandos arbitrários no shell da sua máquina |
| Controlar o navegador | Assumir o controle da sua sessão de navegação |
| Ler e-mails | Acessar Gmail, calendário, contatos |
| Ler chats | Ver todo o histórico de conversas |
| Sequestrar o bot | Enviar mensagens em seu nome |
O problema não é um bug — é **má configuração**. Usuários que alteram `gateway.bind` para `0.0.0.0` ou usam Docker com `-p 18789:18789` sem autenticação adequada ficam totalmente expostos.
ClawdGuard corrige isso.
---
## Funcionalidades
- **Auto-Detecção** - Encontra configuração, serviço e gateway em execução automaticamente
- **Análise de Risco** - Pontua sua configuração de 0 a 10 com detalhamento completo
- **Correção com Um Clique** - Patches na config, gera token seguro, reinicia o serviço
- **Verificação** - Confirma que a correção funcionou (porta fechada, autenticação exigida)
- **Seguro** - Cria backup com timestamp antes de qualquer alteração
- **Multiplataforma** - macOS (launchd) e Linux (systemd)
- **Parada Graciosa** - Pressione Ctrl+C a qualquer momento para cancelar com segurança
- **Modo Verboso** - Veja logs detalhados de cada verificação sendo realizada
- **Pronto para Docker** - Nenhuma instalação Rust necessária
---
## Início Rápido
### 1. Escolha Sua Instalação
#### Opção A: Instalar via crates.io (Recomendado)
```bash
cargo install clawdguard
# Executar
clawdguard
```
#### Opção B: Compilar a partir do Código Fonte
```bash
# Clonar repositório
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Compilar (primeira vez leva ~2 min)
cargo build --release
# Executar
./target/release/clawdguard
```
#### Opção C: Com Docker (Sem Necessidade de Rust)
```bash
# Clonar repositório
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Construir imagem (~3-5 min na primeira vez)
docker build --no-cache -t clawdguard .
# Executar (montar seu diretório de configuração)
docker run -v ~/.moltbot:/root/.moltbot clawdguard
# Ou para Clawdbot legado:
docker run -v ~/.clawdbot:/root/.clawdbot clawdguard
```
### 2. Executar
```bash
clawdguard
```
Pronto! ClawdGuard irá:
1. Detectar sua instalação Clawdbot/Moltbot
2. Analisar riscos de segurança na sua configuração
3. Pedir confirmação antes de fazer alterações
4. Aplicar patches na config com configurações seguras
5. Verificar se as correções foram bem-sucedidas
### 3. Salve Seu Token
ClawdGuard gera um token seguro. **Salve-o!**
```
╭────────────────────────────────────────────────────────────────────╮
│ ⚠️ IMPORTANTE: Salve seu novo token do gateway! │
│ │
│ clwd_a8f2k9x3m1p7v4q2b6n8... │
│ │
│ Você precisará dele para conectar pela UI de Controle ou CLI. │
╰────────────────────────────────────────────────────────────────────╯
```
---
## Configuração Docker
Documentação completa do Docker para quem não tem Rust instalado.
### Construir & Executar
```bash
# 1. Clonar repositório
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# 2. Construir imagem (~3-5 min na primeira vez)
docker build --no-cache -t clawdguard .
# 3. Executar varredura (montar seu diretório de configuração)
# Para Moltbot (mais recente):
docker run -v ~/.moltbot:/root/.moltbot clawdguard
# Para Clawdbot (legado):
docker run -v ~/.clawdbot:/root/.clawdbot clawdguard
# Com modo verboso
docker run -v ~/.moltbot:/root/.moltbot clawdguard --verbose
# Apenas varredura (sem correções)
docker run -v ~/.moltbot:/root/.moltbot clawdguard --scan-only
# Modo automático (sem perguntas)
docker run -v ~/.moltbot:/root/.moltbot clawdguard --auto
# Mostrar ajuda
docker run clawdguard --help
```
### Docker Compose
Sintaxe mais simples usando docker-compose:
```bash
# Executar com docker-compose
docker-compose run clawdguard
# Com verbose
docker-compose run clawdguard --verbose
# Apenas varredura
docker-compose run clawdguard --scan-only
# Modo automático
docker-compose run clawdguard --auto
```
### Referência de Comandos Docker
| Comando | Descrição |
|---------|-------------|
| `docker build --no-cache -t clawdguard .` | Construir imagem |
| `docker run clawdguard --help` | Mostrar ajuda |
| `docker run -v ... clawdguard` | Executar varredura |
| `docker run -v ... clawdguard --scan-only` | Apenas varredura |
| `docker run -v ... clawdguard --auto` | Correção automática |
| `docker run -v ... clawdguard --verbose` | Modo verboso |
| `docker-compose run clawdguard` | Executar com compose |
### Montagens de Volume
| Montagem | Propósito |
|-------|---------|
| `~/.moltbot:/root/.moltbot` | Seu diretório de config Moltbot (mais recente) |
| `~/.clawdbot:/root/.clawdbot` | Seu diretório de config Clawdbot (legado) |
| `./results:/app/results` | Salvar resultados localmente |
### Dicas Docker
```bash
# Criar alias para uso mais fácil (use seu diretório de config)
alias clawdguard='docker run -v ~/.moltbot:/root/.moltbot clawdguard'
# Ou para Clawdbot legado:
alias clawdguard='docker run -v ~/.clawdbot:/root/.clawdbot clawdguard'
# Depois é só executar:
clawdguard
clawdguard --scan-only
clawdguard --verbose
```
---
## Referência CLI
```
clawdguard [OPÇÕES]
OPÇÕES:
--scan-only Apenas varrer em busca de problemas, não aplicar correções
--auto Aplicar todas as correções sem perguntas de confirmação
--backup-dir <DIR> Diretório personalizado para arquivos de backup
--skip-firewall Pular adição de regras de firewall
--skip-restart Pular reinicialização do serviço gateway
--token <TOKEN> Usar um token específico em vez de gerar um
-v, --verbose Mostrar saída detalhada
--json Produzir saída como JSON (para scripts)
-h, --help Exibir ajuda
-V, --version Exibir versão
```
### Exemplos
```bash
# Uso básico - varrer, corrigir, verificar
clawdguard
# Apenas varrer (não corrigir nada)
clawdguard --scan-only
# Corrigir tudo automaticamente (sem perguntas)
clawdguard --auto
# Usar seu próprio token
clawdguard --token "meu-token-seguro-aqui"
# Saída verbosa para solução de problemas
clawdguard --verbose
# Saída JSON para scripts
clawdguard --json
# Combinar opções
clawdguard --auto --skip-firewall --verbose
# Diretório de backup personalizado
clawdguard --backup-dir /tmp/backups
```
---
## O Que é Corrigido
| Configuração | Antes (Inseguro) | Depois (Seguro) |
|---------|-------------------|----------------|
| `gateway.bind` | `"0.0.0.0"` / `"lan"` / `"all"` | `"loopback"` |
| `gateway.auth.mode` | `"none"` / ausente | `"token"` |
| `gateway.auth.token` | ausente | Token seguro gerado |
| `discovery.mdns.mode` | `"full"` | `"minimal"` |
| Permissões de arquivo | `644` / `755` | `600` |
### Pontuação de Risco
ClawdGuard calcula uma pontuação de risco de 0 a 10:
| Pontuação | Nível | Significado |
|-------|-------|---------|
| 0-3 | 🟢 BAIXO | Problemas menores ou já seguro |
| 4-6 | 🟡 MÉDIO | Algumas preocupações de segurança |
| 7-10 | 🔴 CRÍTICO | Exposto à internet, corrija imediatamente |
**Cálculo da Pontuação de Risco:**
- Endereço de bind exposto: +3 pontos
- Autenticação ausente: +4 pontos
- Porta externa acessível: +2 pontos
- Vazamento de informações mDNS: +1 ponto
- Permissões de arquivo abertas: +1 ponto
---
## Exemplos de Saída
### Modo Normal
```
🦞 ClawdGuard
Endurecimento de segurança para Clawdbot/Moltbot
v1.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ℹ Pressione Ctrl+C para cancelar a qualquer momento
[1/4] 🔍 Detectando instalação...
✓ Config: ~/.clawdbot/clawdbot.json
✓ Serviço: bot.molt.gateway (em execução, PID 1234)
✓ Porta 18789 está ativa
[2/4] ⚠️ Analisando riscos de segurança...
╭──────────────────┬─────────────────────────┬──────────╮
│ Problema │ Valor Atual │ Gravidade │
├──────────────────┼─────────────────────────┼──────────┤
│ Bind do Gateway │ 0.0.0.0 │ CRÍTICO │
│ Autenticação │ none │ CRÍTICO │
│ Broadcast mDNS │ full │ MÉDIO │
╰──────────────────┴─────────────────────────┴──────────╯
Pontuação de Risco: 9/10 🔴 CRÍTICO
⚠ Isso modificará sua configuração para corrigir problemas de segurança.
ℹ Um backup será criado antes de qualquer alteração.
Prosseguir com as correções? [s/N]: s
[3/4] 🔧 Aplicando correções...
✓ Backup: ~/.clawdbot/clawdbot.json.backup.20260128_143022
✓ Definido gateway.bind = "loopback" (era: "0.0.0.0")
✓ Definido gateway.auth.mode = "token" (era: "none")
✓ Definido gateway.auth.token = <gerado>
✓ Permissões de arquivo corrigidas (600)
Token Gerado: clwd_a8f2k9x3m1p7v4q2b6n8...
[4/4] ✅ Verificando correções...
✓ Serviço gateway reiniciado
✓ Porta 18789 não está mais acessível externamente
✓ Gateway respondendo em localhost
✓ Autenticação agora é exigida
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
╭────────────────────────────────────────────────────────────────────╮
│ │
│ 🎉 SUCESSO! Seu Clawdbot/Moltbot agora está seguro. │
│ │
╰────────────────────────────────────────────────────────────────────╯
```
### Saída JSON
```bash
clawdguard --json
```
```json
{"status": "fixed", "token": "clwd_a8f2k9x3m1p7v4q2b6n8...", "backup": "~/.clawdbot/clawdbot.json.backup.20260128_143022"}
```
---
## Parada Graciosa (Ctrl+C)
Pressione `Ctrl+C` a qualquer momento durante a varredura para parar com segurança.
```
[2/4] ⚠️ Analisando riscos de segurança...
^C
⚠ Interrompido! Saindo...
```
Nenhuma alteração é feita até que você confirme, portanto interromper é sempre seguro.
---
## Após a Execução
### Atualize Seu Ambiente
```bash
# Adicione ao seu perfil de shell (~/.bashrc, ~/.zshrc, etc.)
export CLAWDBOT_GATEWAY_TOKEN="clwd_seu_token_aqui"
```
### Acesso Remoto (Métodos Seguros)
Se precisar de acesso remoto, use um destes métodos **seguros**:
| Método | Comando |
|--------|---------|
| **Tailscale** (Recomendado) | `tailscale serve --bg 18789` |
| **Túnel SSH** | `ssh -L 18789:localhost:18789 seu-servidor` |
| **Túnel Cloudflare** | `cloudflared tunnel --url http://localhost:18789` |
**Nunca** altere `gateway.bind` de volta para `0.0.0.0` ou exponha a porta diretamente.
---
## Solução de Problemas
### "Nenhuma instalação Clawdbot/Moltbot encontrada"
Certifique-se de que:
- Clawdbot ou Moltbot está instalado
- Você o executou pelo menos uma vez (cria `~/.moltbot/` ou `~/.clawdbot/`)
- O arquivo de configuração existe em `~/.moltbot/moltbot.json` ou `~/.clawdbot/clawdbot.json`
### "Não foi possível reiniciar o serviço"
Tente manualmente:
```bash
clawdbot gateway restart
# ou
moltbot gateway restart
```
### Token Não Funciona
1. Salve o token completo (incluindo o prefixo `clwd_`)
2. Adicione ao ambiente ou às configurações da UI de Controle
3. Reinicie o gateway
### Docker: Permissão Negada
Certifique-se de que seu diretório de configuração está legível:
```bash
# Para Moltbot (mais recente)
chmod 755 ~/.moltbot
chmod 644 ~/.moltbot/moltbot.json
# Para Clawdbot (legado)
chmod 755 ~/.clawdbot
chmod 644 ~/.clawdbot/clawdbot.json
```
---
## Suporte a Plataformas
| Plataforma | Status | Gerenciador de Serviços |
|----------|--------|-----------------|
| macOS | ✅ Completo | launchd |
| Linux | ✅ Completo | systemd (usuário) |
| Windows | ⚠️ WSL2 | Executar dentro do WSL2 |
---
## Como Funciona
```
┌─────────────────────────────────────────────────────────────────┐
│ ClawdGuard v1.0 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ DETECTAR│ → │ ANALISAR│ → │ CORRIGIR│ → │ VERIFICAR│ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ Encontrar config Verificar riscos Corrigir config Confirmar │
│ Encontrar serviço Pontuar perigo Gerar token seguro │
│ Encontrar processo Listar problemas Corrigir perms Testar │
│ porta │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
## Estrutura do Projeto
```
clawdguard/
├── Cargo.toml # Dependências
├── Dockerfile # Construção Docker
├── docker-compose.yml # Docker compose
├── .dockerignore
├── README.md
├── LICENSE
├── .gitignore
├── assets/
│ └── screenshot.png # Screenshot para o README
├── src/
│ ├── main.rs # Ponto de entrada CLI
│ ├── lib.rs # Raiz da biblioteca
│ ├── detect/ # Detecção de instalação
│ │ ├── mod.rs
│ │ ├── config.rs # Detecção de arquivo de configuração
│ │ ├── process.rs # Detecção de processo
│ │ └── service.rs # Detecção de serviço (launchd/systemd)
│ ├── analyze/ # Análise de segurança
│ │ ├── mod.rs
│ │ ├── config_risk.rs
│ │ ├── network.rs # Verificação de exposição de porta
│ │ └── permissions.rs
│ ├── patch/ # Aplicação de patches na configuração
│ │ ├── mod.rs
│ │ ├── config.rs
│ │ ├── firewall.rs
│ │ └── token.rs # Geração de token seguro
│ ├── verify/ # Verificação de correções
│ │ ├── mod.rs
│ │ ├── port_check.rs
│ │ └── service.rs
│ └── output/
│ ├── mod.rs
│ └── printer.rs # Saída CLI colorida
└── tests/
└── integration.rs
```
---
## Desenvolvimento
### Pré-requisitos
**Opção A: Nativo (Rust)**
- Rust 1.70+ (`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`)
**Opção B: Docker**
- Docker 20.10+
### Compilando
**Nativo:**
```bash
# Clonar repositório
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Compilar debug (compilação mais rápida)
cargo build
# Compilar release (otimizado)
cargo build --release
```
**Docker:**
```bash
# Clonar repositório
git clone https://github.com/fadidevv/clawdguard.git
cd clawdguard
# Construir imagem
docker build --no-cache -t clawdguard .
```
### Executando Testes
```bash
# Executar todos os testes
cargo test
# Executar com saída
cargo test -- --nocapture
```
### Qualidade do Código
```bash
# Formatar código
cargo fmt
# Executar linter
cargo clippy
# Verificar sem compilar
cargo check
```
---
## Contribuindo
Contribuições são bem-vindas! Por favor:
1. Faça um fork do repositório
2. Crie um branch de funcionalidade (`git checkout -b feature/melhoria`)
3. Faça suas alterações
4. Execute os testes (`cargo test`)
5. Execute o linter (`cargo clippy`)
6. Formate o código (`cargo fmt`)
7. Confirme as alterações (`git commit -m 'Adiciona melhoria'`)
8. Envie para o branch (`git push origin feature/melhoria`)
9. Abra um Pull Request
**Ideias para contribuições:**
- Adicionar suporte para mais gerenciadores de serviço
- Melhorar heurísticas de detecção
- Adicionar funcionalidade de rollback
- Melhorias na documentação
- Correções de bugs
---
## Aviso Legal
Esta ferramenta é para **fins de segurança apenas**.
- Execute apenas em sistemas que você possui ou tem permissão para modificar
- Sempre verifique se o token foi salvo antes de fechar o terminal
- Teste a correção tentando conectar de outro dispositivo
**Os autores não são responsáveis pelo uso indevido desta ferramenta.**
---
## Licença
Licença MIT - veja [LICENSE](https://github.com/fadidevv/clawdguard/blob/master/LICENSE) para detalhes.
---
<p align="center">
<strong>Mantenha-se seguro! 🦞🔐</strong>
</p>