Secure Ubuntu MCP Server
Um servidor MCP focado em segurança para realizar operações seguras em um sistema Ubuntu, com controles de segurança robustos e registro de auditoria.
Documentação
Secure Ubuntu MCP Server
🔒 Segurança em Primeiro Lugar — Servidor Model Context Protocol para operações seguras do sistema Ubuntu
Um servidor Model Context Protocol (MCP) endurecido e pronto para produção que fornece a assistentes de IA acesso seguro e controlado às operações do sistema Ubuntu. Construído com controles de segurança abrangentes, registro de auditoria e princípios de defesa em profundidade.
✨ Principais Recursos
🛡️ Arquitetura com Segurança em Primeiro Lugar
- Proteção contra travessia de caminho — Resolução de symlinks com controles de allowlist/denylist
- Sanitização de comandos — Prevenção de injeção de shell com análise segura de argumentos
- Limites de recursos — Tamanho de arquivo, timeouts de execução e controles de tamanho de saída
- Registro de auditoria abrangente — Todas as operações registradas com atribuição de usuário
- Defesa em profundidade — Múltiplas camadas de segurança com padrões de fail-safe
🎯 Capacidades Principais
- Operações de Arquivo — Ler, escrever e listar diretórios com validação de permissão
- Execução de Comandos — Execução segura de comandos shell com filtragem de whitelist/blacklist
- Informações do Sistema — Detalhes do SO, memória e monitoramento de uso de disco
- Gerenciamento de Pacotes — Busca e listagem de pacotes APT (instalação requer configuração explícita)
🏗️ Pronto para Produção
- Design modular com clara separação de responsabilidades
- Tratamento abrangente de erros com mensagens de erro significativas
- Suíte de testes extensiva incluindo testes de validação de segurança
- Políticas configuráveis para diferentes casos de uso e ambientes
- Segurança com zero dependências — A segurança principal não depende de pacotes externos
🚀 Início Rápido
Pré-requisitos
- Ubuntu 18.04+ (testado em 20.04, 22.04, 24.04)
- Python 3.9 ou superior
- Utilitários Unix padrão (ls, cat, echo, etc.)
Instalação
# Clone the repository
git clone https://github.com/yourusername/secure-ubuntu-mcp.git
cd secure-ubuntu-mcp
# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Verify installation with built-in tests
python main.py --test
Uso Básico
# Start with secure policy (recommended)
python main.py --policy secure
# Start with development policy (more permissive)
python main.py --policy dev
# Test security measures
python main.py --security-test
🔧 Integração
Claude Desktop
Obtendo o Claude Desktop no Linux
Suporte Oficial: O Claude Desktop não suporta oficialmente Linux, mas a comunidade criou soluções!
Método Recomendado: Use o pacote Debian da comunidade por @aaddrick:
# Download and install Claude Desktop for Linux
wget https://github.com/aaddrick/claude-desktop-debian/releases/latest/download/claude-desktop_latest_amd64.deb
sudo dpkg -i claude-desktop_latest_amd64.deb
sudo apt-get install -f # Fix any dependency issues
Para outros métodos e solução de problemas, consulte: https://github.com/aaddrick/claude-desktop-debian
Configuração
Depois que o Claude Desktop estiver instalado, adicione à sua configuração (~/.config/claude-desktop/claude_desktop_config.json):
{
"mcpServers": {
"secure-ubuntu": {
"command": "/path/to/secure-ubuntu-mcp/.venv/bin/python3",
"args": ["/path/to/secure-ubuntu-mcp/main.py", "--policy", "secure"],
"env": {
"MCP_LOG_LEVEL": "INFO"
}
}
}
}
⚠️ Importante: Use caminhos absolutos e o interpretador Python do ambiente virtual
Verificação: Após reiniciar o Claude Desktop, você deve ver "secure-ubuntu" listado como um servidor conectado, e o Claude terá acesso às ferramentas de controle do sistema.
Outros Clientes MCP
O servidor implementa o protocolo MCP padrão e funciona com qualquer cliente compatível com MCP:
# Example with mcp Python client
import asyncio
from mcp.client import ClientSession
async def example():
# Connect to the server
# Implementation depends on your MCP client
pass
🛡️ Políticas de Segurança
Política Segura (Padrão)
Recomendada para ambientes de produção e não confiáveis:
- Caminhos Permitidos:
~/,/tmp,/var/tmp - Caminhos Proibidos:
/etc,/root,/boot,/sys,/proc,/dev,/usr,/bin,/sbin - Whitelist de Comandos:
ls,cat,echo,pwd,whoami,date,find,grep,apt(somente busca) - Limites de Recursos: Arquivos de 1MB, timeouts de 15s, saída de 256KB
- Sudo: Desabilitado
- Execução de Shell: Desabilitada (usa execução direta segura)
Política de Desenvolvimento
Mais permissiva para ambientes de desenvolvimento:
- Caminhos Permitidos Adicionais:
/opt,/usr/local - Menos Restrições: Acesso a mais áreas do sistema
- Limites Maiores: Arquivos de 10MB, timeouts de 60s, saída de 1MB
- Mais Comandos: A maioria das ferramentas de desenvolvimento permitidas
- Sudo: Ainda desabilitado por padrão (pode ser habilitado)
Políticas Personalizadas
Crie sua própria política de segurança:
from main import SecurityPolicy
custom_policy = SecurityPolicy(
allowed_paths=["/your/custom/paths"],
forbidden_paths=["/sensitive/areas"],
allowed_commands=["safe", "commands"],
forbidden_commands=["dangerous", "commands"],
max_command_timeout=30,
allow_sudo=False, # Use with extreme caution
audit_actions=True
)
🔍 Ferramentas Disponíveis
Operações de Arquivo
list_directory(path)— Lista o conteúdo do diretório com metadadosread_file(file_path)— Lê o conteúdo do arquivo com validação de tamanhowrite_file(file_path, content, create_dirs=False)— Escreve com operações atômicas
Operações do Sistema
execute_command(command, working_dir=None)— Executa comandos shell com segurançaget_system_info()— Obtém informações de SO, memória e disco
Gerenciamento de Pacotes
search_packages(query)— Busca em repositórios APTinstall_package(package_name)— Verifica disponibilidade de pacotes (somente listagem)
🔒 Recursos de Segurança
Proteção Contra Ataques Comuns
Prevenção de Travessia de Caminho:
# These are all blocked:
../../../etc/passwd
/etc/passwd
/tmp/../etc/passwd
symlinks_to_sensitive_files
Prevenção de Injeção de Comandos:
# These are all blocked:
echo hello; rm -rf /
echo `cat /etc/passwd`
echo $(whoami)
ls | rm -rf /
Proteção Contra Exaustão de Recursos:
- Limites de tamanho de arquivo previnem exaustão de memória
- Timeouts de execução previnem processos pendurados
- Limites de tamanho de saída previnem inundação de logs
- Limites de listagem de diretórios previnem ataques de enumeração
Trilha de Auditoria
Todas as operações são registradas com:
- Atribuição de usuário
- Timestamp e tipo de operação
- Resolução completa do caminho
- Status de sucesso/falha
- Detalhes de violação de segurança
🧪 Testes
Testes de Funcionalidade
# Test core functionality
python main.py --test
Validação de Segurança
# Run comprehensive security tests
python main.py --security-test
Testes Manuais
# Test MCP protocol directly
python test_client.py --simple
📊 Exemplo de Uso
Depois de integrado com um assistente de IA:
Monitoramento do Sistema:
"Verifique o status do meu sistema e o espaço em disco"
Gerenciamento de Arquivos:
"Liste os arquivos no meu diretório home e mostre-me os maiores"
Tarefas de Desenvolvimento:
"Verifique se o Python está instalado e mostre-me a versão"
Análise de Logs:
"Procure por arquivos de erro no meu diretório de projeto"
⚙️ Configuração
Variáveis de Ambiente
MCP_LOG_LEVEL— Nível de registro (DEBUG, INFO, WARNING, ERROR)MCP_POLICY— Política de segurança (secure, dev)MCP_CONFIG_PATH— Caminho para arquivo de configuração personalizado
Arquivo de Configuração
Crie config.json para configurações personalizadas:
{
"server": {
"name": "secure-ubuntu-controller",
"version": "1.0.0",
"log_level": "INFO"
},
"security": {
"policy_name": "secure",
"allowed_paths": ["~/", "/tmp"],
"max_command_timeout": 30,
"allow_sudo": false,
"audit_actions": true
}
}
🛠️ Desenvolvimento
Adicionando Novas Ferramentas
@mcp.tool("your_tool_name")
async def your_tool(param: str) -> str:
"""Tool description for AI assistant"""
try:
# Use controller methods for safe operations
result = controller.safe_operation(param)
return json.dumps(result, indent=2)
except Exception as e:
return json.dumps({"error": str(e)}, indent=2)
Estendendo a Segurança
def create_custom_policy() -> SecurityPolicy:
"""Create a custom security policy"""
return SecurityPolicy(
allowed_paths=["/your/paths"],
forbidden_commands=["dangerous", "commands"],
# ... other settings
)
🔧 Solução de Problemas
Problemas Comuns
"O servidor parece travar"
- Isso é normal! Servidores MCP rodam continuamente e se comunicam via stdio
- O servidor está aguardando mensagens do protocolo MCP
"ModuleNotFoundError: No module named 'mcp'"
- Certifique-se de usar o interpretador Python do ambiente virtual
- Verifique se a configuração do Claude Desktop usa o caminho completo para
.venv/bin/python3
Erros de "SecurityViolation"
- Verifique se o caminho/comando é permitido pela sua política de segurança
- Revise os logs de auditoria em
/tmp/ubuntu_mcp_audit.log - Considere usar a política de desenvolvimento para testes
Erros de "Permission denied"
- Verifique se seu usuário tem acesso aos caminhos solicitados
- Verifique as permissões de arquivo/diretório com
ls -la
Modo de Depuração
# Enable verbose logging
python main.py --log-level DEBUG --policy secure
# Check audit logs
tail -f /tmp/ubuntu_mcp_audit.log
🤝 Contribuindo
Aceitamos contribuições! Consulte nossas Diretrizes de Contribuição para detalhes.
Configuração de Desenvolvimento
- Faça um fork do repositório
- Crie um branch de funcionalidade:
git checkout -b feature/amazing-feature - Faça suas alterações com testes
- Garanta que todos os testes passem:
python main.py --test && python main.py --security-test - Envie um pull request
Padrões de Código
- Siga as diretrizes de estilo PEP 8
- Adicione type hints para todas as funções públicas
- Inclua docstrings abrangentes
- Escreva testes para novas funcionalidades
- Mantenha os princípios de segurança em primeiro lugar
📄 Licença
Este projeto é licenciado sob a Licença MIT — consulte o arquivo LICENSE para detalhes.
🔐 Divulgação de Segurança
Se você descobrir uma vulnerabilidade de segurança, envie um e-mail para [radjackbartok@proton.me] em vez de criar um issue público. Levamos a segurança a sério e responderemos prontamente.
🙏 Agradecimentos
- Equipe do Model Context Protocol pelo excelente protocolo
- Pesquisadores de segurança e a comunidade de infosec pelas melhores práticas
- Comunidade de segurança Python pela orientação contínua
📈 Roteiro
- Registro Aprimorado — Registro JSON estruturado com mais contexto
- Suporte a Containers — Integração com Docker e políticas cientes de containers
- Ferramentas de Rede — Utilitários de rede seguros (ping, traceroute, etc.)
- Gerenciamento de Processos — Monitoramento e controle seguro de processos
- UI de Configuração — Interface web para gerenciamento de políticas
- Testes de Integração — Testes abrangentes de ponta a ponta
- Otimização de Desempenho — Cache e melhorias de desempenho
- Suporte Multi-Usuário — Controles de acesso baseados em funções
Feito para a comunidade de IA consciente de segurança
💡 Dica Profissional: Comece com a política segura e aumente gradualmente as permissões conforme necessário. É mais fácil adicionar permissões do que se recuperar de um incidente de segurança!