Servidor MCP Ubuntu seguro - MCP Server Seguro por ALMC Security 2025

Servidor MCP Ubuntu seguro

Ver en GitHub

Servidor MCP seguro para Ubuntu

🔒 S ervidor de protocolo de contexto de modelo seguro para operaciones seguras del sistema Ubuntu

Un servidor de Protocolo de Contexto de Modelo (MCP ) endurecido y listo para la producción 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.

License: MIT Python 3.9+ Security Focused MCP Compatible

características principales

🛡️ Arquitectura Security-First

  • Resolución de Symlink con controles allowlist/denylist
  • Saneamiento de comandos - Prevención de inyección de shell con análisis seguro de argumentos
  • Límites de recursos: controles de tamaño de archivo, tiempo de espera de ejecución y tamaño de salida
  • Registro de auditoría exhaustivo: todas las operaciones se registran con atribución al usuario
  • Defensa en profundidad - Múltiples capas de seguridad con valores predeterminados a prueba de fallos

funciones básicas

  • Operaciones con archivos - Lectura, escritura y listado de directorios con validación de permisos
  • Ejecución de comandos - Ejecución segura de comandos shell con filtrado de listas blancas y negras
  • Información del sistema - Detalles del sistema operativo, memoria y monitorización del uso del disco
  • Gestión de paquetes - Búsqueda y listado de paquetes APT (la instalación requiere una configuración explícita)

🏗️ Preparado para la producción

  • Diseño modular con una clara separación de intereses
  • Gestión integral de errores con mensajes de error significativos
  • Amplio conjunto de pruebas, incluidas pruebas de validación de seguridad
  • Políticas configurables para diferentes casos de uso y entornos
  • Seguridad de dependencia cero: la seguridad del núcleo 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 estándar de Unix (ls, cat, echo, etc.)

Instalación

# Clonar el repositorio git clone https://github.com/yourusername/secure-ubuntu-mcp.git cd secure-ubuntu-mcp # Crear y activar el entorno virtual python3 -m venv .venv source .venv/bin/activate # Instalar las dependencias pip install -r requirements.txt # Verificar la instalación con las pruebas incorporadas python main.py --test

Uso básico

# Iniciar con política segura (recomendado) python main.py --policy secure # Iniciar con política de desarrollo (más permisiva) python main.py --policy dev # Probar medidas de seguridad python main.py --security-test

🔧 Integración

Claude Desktop

Cómo obtener Claude Desktop en Linux

Soporte oficial: Claude Desktop no soporta oficialmente Linux, ¡pero la comunidad ha creado soluciones!

Método recomendado: Utilice el paquete Debian de la comunidad por @aaddrick:

# Descargue e instale Claude Desktop para 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 # Solucione cualquier problema de dependencia

Para otros métodos y solución de problemas, consulte: https://github.com/aaddrick/claude-desktop-debian

Configuración

Una vez instalado Claude Desktop, añada 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: Utilizar rutas absolutas y el intérprete Python del entorno virtual

Verificación: Después de reiniciar Claude Desktop, debería ver "secure-ubuntu" listado como servidor conectado, y Claude tendrá acceso a las herramientas de control del sistema.

Otros clientes MCP

El servidor implementa el protocolo estándar MCP y funciona con cualquier cliente compatible con MCP:

# Ejemplo con cliente mcp Python import asyncio from mcp.client import ClientSession async def ejemplo(): # Conectarse al servidor # La implementación depende de su pase de cliente MCP

🛡️ Políticas de seguridad

Política de seguridad (por defecto)

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 (sólo búsqueda)
  • Límites de recursos: archivos de 1MB, tiempos de espera de 15s, salida de 256KB
  • Sudo: Desactivado
  • Ejecución Shell: Desactivado (utiliza ejecución directa segura)

Política de desarrollo

Más permisiva para entornos de desarrollo:

  • Rutas adicionales permitidas: /opt, /usr/local
  • Menos restricciones: Acceso a más áreas del sistema
  • Límites más amplios: archivos de 10 MB, tiempos de espera de 60 s, salida de 1 MB
  • Más comandos: Se permiten la mayoría de las herramientas de desarrollo
  • Sudo: sigue desactivado por defecto (puede activarse)

Políticas personalizadas

Crea tu propia política de seguridad:

from main import SecurityPolicy custom_policy = SecurityPolicy( allowed_paths=["/su_ruta/personalizada"], forbidden_paths=["/áreas/sensibles"], allowed_commands=["seguro", "comandos"], forbidden_commands=["peligroso", "comandos"], max_command_timeout=30, allow_sudo=False, # Usar con extrema precaución audit_actions=True )

🔍 Herramientas disponibles

Operaciones con archivos

  • list_directory(ruta) - Lista el contenido del directorio con metadatos
  • read_file(file_path) - Leer el contenido de un archivo con validación de tamaño
  • write_file(file_path, content, create_dirs=False) - Escribir con operaciones atómicas

Operaciones del sistema

  • execute_command(command, working_dir=None) - Ejecutar comandos shell de forma segura
  • get_system_info() - Obtener información sobre el sistema operativo, la memoria y el disco

Gestión de paquetes

  • search_packages(query) - Buscar en los repositorios de APT
  • install_package(nombre_paquete) - Comprueba la disponibilidad de paquetes (sólo listado)

funciones de seguridad

Protección contra ataques comunes

Prevención de path traversal:

# Todos estos están bloqueados: ../../../etc/passwd /etc/passwd /tmp/../etc/passwd symlinks_to_sensitive_files

Prevención de inyección de comandos:

# Todos estos están bloqueados: echo hello; rm -rf / echo `cat /etc/passwd` echo $(whoami) ls | rm -rf /

Protección contra el agotamiento de recursos:

  • Los límites de tamaño de archivo evitan el agotamiento de memoria
  • Los tiempos de espera de ejecución evitan que los procesos se cuelguen
  • Los límites de tamaño de salida evitan la inundación de registros
  • Los límites de listado de directorios evitan ataques de enumeración

Registro de auditoría

Todas las operaciones se registran con:

  • Atribución del usuario
  • Marca de tiempo y tipo de operación
  • Resolución completa de la ruta
  • Estado de éxito/fracaso
  • Detalles de la violación de seguridad

pruebas

Pruebas de funcionalidad

# Probar la funcionalidad del núcleo python main.py --test

Validación de seguridad

# Ejecutar pruebas de seguridad completas python main.py --security-test

Pruebas manuales

# Probar el protocolo MCP directamente python test_client.py --simple

📊 Ejemplo de uso

Una vez integrado con un asistente de IA:

Monitorización del sistema:

"Comprobar el estado de mi sistema y el espacio en disco"

Gestión de archivos:

"Listar los archivos de mi directorio personal y mostrarme los más grandes"

Tareas de desarrollo:

"Comprobar si Python está instalado y mostrarme la versión"

Análisis de registros:

"Buscar cualquier archivo de error en el directorio de mi 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

Crear config.json para la configuración personalizada:

{ "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

Añadir nuevas herramientas

@mcp.tool("tu_nombre_de_herramienta") async def tu_herramienta(param: str) -> str: """Descripción de la herramienta para el asistente AI""" try: # Usa métodos del controlador para operaciones seguras result = controller.safe_operation(param) return json.dumps(result, indent=2) except Exception as e: return json.dumps({"error": str(e)}, indent=2)

Ampliación de la seguridad

def create_custom_policy() -> SecurityPolicy: """Crear una política de seguridad personalizada""" return SecurityPolicy( allowed_paths=["/tus/rutas"], forbidden_commands=["peligrosos", "comandos"], # ... otros ajustes )

🔧 Solución de problemas

Problemas comunes

"El servidor parece colgarse"

  • ¡Esto es normal! Los servidores MCP funcionan continuamente y se comunican a través de stdio
  • El servidor está esperando mensajes del protocolo MCP

"ModuleNotFoundError: No module named 'mcp'"

  • Asegúrese de que está utilizando el intérprete Python del entorno virtual
  • Compruebe que su configuración de Claude Desktop utiliza la ruta completa a .venv/bin/python3

"Errores "SecurityViolation

  • Compruebe 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 el uso de la política de desarrollo para las pruebas

"Errores de "Permiso denegado

  • Verifique que su usuario tiene acceso a las rutas solicitadas
  • Compruebe los permisos de archivos/directorios con ls -la

Modo Debug

# Habilite el registro detallado python main.py --log-level DEBUG --policy secure Compruebe los registros de auditoría tail -f /tmp/ubuntu_mcp_audit.log

🤝 Contribuir

¡Damos la bienvenida a las contribuciones! Por favor, vea nuestras Directrices de Contribución para más detalles.

Configuración de desarrollo

  1. Abrir el repositorio
  2. Crea una rama: git checkout -b feature/amazing-feature
  3. Haga sus cambios con pruebas
  4. Asegúrese de que todas las pruebas pasan: python main.py --test && python main.py --security-test
  5. Envía un pull request

Normas de código

  • Siga las directrices de estilo PEP 8
  • Añadir sugerencias de tipo para todas las funciones públicas
  • Incluir documentación completa
  • Escribir pruebas para las nuevas funciones
  • Mantener los principios de seguridad en primer lugar

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

🔐 Revelación de seguridad

Si descubre una vulnerabilidad de seguridad, por favor envíe un correo electrónico a[radjackbartok@proton.me] en lugar de crear un problema público. Nos tomamos la seguridad muy en serio y responderemos rápidamente.

🙏 Agradecimientos

  • Al equipo deModel Context Protocol por el excelente protocolo
  • Investigadores de seguridad y la comunidad 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
  • Compatibilidad con contenedores - Integración con Docker y políticas compatibles con contenedores
  • Herramientas de red - Utilidades de red seguras (ping, traceroute, etc.)
  • Gestión de procesos: supervisión y control de procesos seguros
  • Interfaz de usuario de configuración: interfaz web para la gestión de políticas
  • Pruebas de integración - Pruebas completas de extremo a extremo
  • Optimización del rendimiento: almacenamiento en caché y mejoras del rendimiento
  • Soporte Multi-Usuario - Controles de acceso basados en roles

Hecho para la comunidad de IA preocupada por la seguridad

consejo profesional: Comience con la política segura y aumente gradualmente los permisos según sea necesario. ¡Es más fácil añadir permisos que recuperarse de un incidente de seguridad!

Relacionados en Servicio en la nube - MCP Servers Seguros

Servidor Resumen Acciones
Mezmo Un servidor de Protocolo de Contexto de Modelo (MCP) para recuperar registros de Mezmo. Funciona lis... Ver
Copo de nieve Cortex AI Este servidor Snowflake MCP proporciona herramientas para las funciones Snowflake Cortex AI, aportan... Ver
AWS SSO Transforme la forma de administrar y acceder a su infraestructura de AWS conectando Claude, Cursor A... Ver
Servidor MCP Forge Este es un servidor de Protocolo de Contexto de Modelo (MCP) para la integración de Laravel Forge. P... Ver
MCP de nido de abeja Un servidor de Protocolo de Contexto de Modelo para interactuar con los datos de observabilidad de H... Ver
Servidor MCP Wuying AgentBay Español | 中文 Ver