Secure Ubuntu MCP Server
Un servidor MCP centrado en la seguridad para realizar operaciones seguras en un sistema Ubuntu, con controles de seguridad robustos y registro de auditoría.
Documentación
Servidor MCP Seguro de Ubuntu
🔒 Seguridad Primero Servidor de Protocolo de Contexto de Modelo para operaciones seguras del sistema Ubuntu
Un servidor endurecido y listo para producción del Protocolo de Contexto de Modelo (MCP) que proporciona a los asistentes de IA acceso seguro y controlado a las operaciones del sistema Ubuntu. Construido con controles de seguridad integrales, registro de auditoría y principios de defensa en profundidad.
✨ Características Clave
🛡️ Arquitectura de Seguridad Primero
- Protección contra recorrido de rutas - Resolución de enlaces simbólicos con controles de lista permitida/denegada
- Saneamiento de comandos - Prevención de inyección de shell con análisis seguro de argumentos
- Límites de recursos - Tamaño de archivos, tiempos de espera de ejecución y controles de tamaño de salida
- Registro de auditoría integral - Todas las operaciones registradas con atribución de usuario
- Defensa en profundidad - Múltiples capas de seguridad con valores predeterminados a prueba de fallos
🎯 Capacidades Principales
- Operaciones de archivos - Leer, escribir y listar directorios con validación de permisos
- Ejecución de comandos - Ejecución segura de comandos de shell con filtrado de lista blanca/negra
- Información del sistema - Detalles del sistema operativo, memoria y monitoreo de uso de disco
- Gestión de paquetes - Búsqueda y listado de paquetes APT (la instalación requiere configuración explícita)
🏗️ Listo para Producción
- Diseño modular con separación clara de responsabilidades
- Manejo integral de errores con mensajes de error significativos
- Amplio conjunto de pruebas incluyendo pruebas de validación de seguridad
- Políticas configurables para diferentes casos de uso y entornos
- Seguridad sin dependencias - La seguridad principal no depende de paquetes externos
🚀 Inicio Rápido
Requisitos Previos
- Ubuntu 18.04+ (probado en 20.04, 22.04, 24.04)
- Python 3.9 o superior
- Utilidades Unix estándar (ls, cat, echo, etc.)
Instalación
# 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
🔧 Integración
Claude Desktop
Obtener Claude Desktop en Linux
Soporte Oficial: Claude Desktop no soporta oficialmente Linux, ¡pero la comunidad ha creado soluciones!
Método Recomendado: Use el paquete Debian de la comunidad 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 otros métodos y solución de problemas, consulte: https://github.com/aaddrick/claude-desktop-debian
Configuración
Una vez instalado Claude Desktop, agregue a su configuración (~/.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 rutas absolutas y el intérprete de Python del entorno virtual
Verificación: Después de reiniciar Claude Desktop, debería ver "secure-ubuntu" listado como un servidor conectado, y Claude tendrá acceso a las herramientas de control del sistema.
Otros Clientes MCP
El servidor implementa el protocolo MCP estándar y funciona con cualquier cliente compatible con 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 Seguridad
Política Segura (Predeterminada)
Recomendada para entornos de producción y no confiables:
- Rutas Permitidas:
~/,/tmp,/var/tmp - Rutas Prohibidas:
/etc,/root,/boot,/sys,/proc,/dev,/usr,/bin,/sbin - Lista Blanca de Comandos:
ls,cat,echo,pwd,whoami,date,find,grep,apt(solo búsqueda) - Límites de Recursos: Archivos de 1MB, tiempos de espera de 15s, salida de 256KB
- Sudo: Deshabilitado
- Ejecución de Shell: Deshabilitada (usa ejecución directa segura)
Política de Desarrollo
Más permisiva para entornos de desarrollo:
- Rutas Permitidas Adicionales:
/opt,/usr/local - Menos Restricciones: Acceso a más áreas del sistema
- Límites Más Amplios: Archivos de 10MB, tiempos de espera de 60s, salida de 1MB
- Más Comandos: La mayoría de las herramientas de desarrollo permitidas
- Sudo: Aún deshabilitado por defecto (se puede habilitar)
Políticas Personalizadas
Cree su propia política de seguridad:
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
)
🔍 Herramientas Disponibles
Operaciones de Archivos
list_directory(path)- Listar contenido del directorio con metadatosread_file(file_path)- Leer contenido de archivos con validación de tamañowrite_file(file_path, content, create_dirs=False)- Escribir con operaciones atómicas
Operaciones del Sistema
execute_command(command, working_dir=None)- Ejecutar comandos de shell de forma seguraget_system_info()- Obtener información del sistema operativo, memoria y disco
Gestión de Paquetes
search_packages(query)- Buscar en repositorios APTinstall_package(package_name)- Verificar disponibilidad de paquetes (solo listado)
🔒 Características de Seguridad
Protección Contra Ataques Comunes
Prevención de Recorrido de Rutas:
# These are all blocked:
../../../etc/passwd
/etc/passwd
/tmp/../etc/passwd
symlinks_to_sensitive_files
Prevención de Inyección de Comandos:
# These are all blocked:
echo hello; rm -rf /
echo `cat /etc/passwd`
echo $(whoami)
ls | rm -rf /
Protección Contra Agotamiento de Recursos:
- Los límites de tamaño de archivos previenen el agotamiento de memoria
- Los tiempos de espera de ejecución previenen procesos colgados
- Los límites de tamaño de salida previenen la inundación de registros
- Los límites de listado de directorios previenen ataques de enumeración
Rastro de Auditoría
Todas las operaciones se registran con:
- Atribución de usuario
- Marca de tiempo y tipo de operación
- Resolución completa de rutas
- Estado de éxito/fallo
- Detalles de violaciones de seguridad
🧪 Pruebas
Pruebas de Funcionalidad
# Test core functionality
python main.py --test
Validación de Seguridad
# Run comprehensive security tests
python main.py --security-test
Pruebas Manuales
# Test MCP protocol directly
python test_client.py --simple
📊 Ejemplo de Uso
Una vez integrado con un asistente de IA:
Monitoreo del Sistema:
"Verifica el estado de mi sistema y el espacio en disco"
Gestión de Archivos:
"Lista los archivos en mi directorio de inicio y muéstrame los más grandes"
Tareas de Desarrollo:
"Verifica si Python está instalado y muéstrame la versión"
Análisis de Registros:
"Busca archivos de error en mi directorio de proyecto"
⚙️ Configuración
Variables de Entorno
MCP_LOG_LEVEL- Nivel de registro (DEBUG, INFO, WARNING, ERROR)MCP_POLICY- Política de seguridad (secure, dev)MCP_CONFIG_PATH- Ruta al archivo de configuración personalizado
Archivo de Configuración
Cree config.json para configuraciones 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
}
}
🛠️ Desarrollo
Agregar Nuevas Herramientas
@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)
Extender Seguridad
def create_custom_policy() -> SecurityPolicy:
"""Create a custom security policy"""
return SecurityPolicy(
allowed_paths=["/your/paths"],
forbidden_commands=["dangerous", "commands"],
# ... other settings
)
🔧 Solución de Problemas
Problemas Comunes
"El servidor parece colgado"
- ¡Esto es normal! Los servidores MCP se ejecutan continuamente y se comunican vía stdio
- El servidor está esperando mensajes del protocolo MCP
"ModuleNotFoundError: No module named 'mcp'"
- Asegúrese de usar el intérprete de Python del entorno virtual
- Verifique que su configuración de Claude Desktop use la ruta completa a
.venv/bin/python3
Errores de "SecurityViolation"
- Verifique si la ruta/comando está permitido por su política de seguridad
- Revise los registros de auditoría en
/tmp/ubuntu_mcp_audit.log - Considere usar la política de desarrollo para pruebas
Errores de "Permission denied"
- Verifique que su usuario tenga acceso a las rutas solicitadas
- Verifique los permisos de archivos/directorios con
ls -la
Modo de Depuración
# Enable verbose logging
python main.py --log-level DEBUG --policy secure
# Check audit logs
tail -f /tmp/ubuntu_mcp_audit.log
🤝 Contribuciones
¡Damos la bienvenida a las contribuciones! Consulte nuestras Pautas de Contribución para más detalles.
Configuración de Desarrollo
- Haga un fork del repositorio
- Cree una rama de características:
git checkout -b feature/amazing-feature - Haga sus cambios con pruebas
- Asegúrese de que todas las pruebas pasen:
python main.py --test && python main.py --security-test - Envíe una solicitud de extracción
Estándares de Código
- Siga las pautas de estilo PEP 8
- Agregue sugerencias de tipo para todas las funciones públicas
- Incluya docstrings integrales
- Escriba pruebas para nuevas funcionalidades
- Mantenga los principios de seguridad primero
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENCIA para más detalles.
🔐 Divulgación de Seguridad
Si descubre una vulnerabilidad de seguridad, envíe un correo electrónico a [radjackbartok@proton.me] en lugar de crear un problema público. Nos tomamos la seguridad en serio y responderemos con prontitud.
🙏 Agradecimientos
- Equipo del Protocolo de Contexto de Modelo por el excelente protocolo
- Investigadores de seguridad y la comunidad de infosec por las mejores prácticas
- Comunidad de seguridad de Python por la orientación continua
📈 Hoja de Ruta
- Registro Mejorado - Registro JSON estructurado con más contexto
- Soporte de Contenedores - Integración con Docker y políticas conscientes de contenedores
- Herramientas de Red - Utilidades de red seguras (ping, traceroute, etc.)
- Gestión de Procesos - Monitoreo y control seguro de procesos
- Interfaz de Configuración - Interfaz web para gestión de políticas
- Pruebas de Integración - Pruebas integrales de extremo a extremo
- Optimización de Rendimiento - Caché y mejoras de rendimiento
- Soporte Multi-Usuario - Controles de acceso basados en roles
Hecho para la comunidad de IA consciente de la seguridad
💡 Consejo Profesional: Comience con la política segura y aumente gradualmente los permisos según sea necesario. ¡Es más fácil agregar permisos que recuperarse de un incidente de seguridad!