Serveur MCP Ubuntu sécurisé - MCP Server sécurisé par ALMC Security 2025

Serveur MCP Ubuntu sécurisé

Voir sur GitHub

Serveur MCP Ubuntu sécurisé

serveur MCP (Model Context Protocol) pour la sécurité des opérations du système Ubuntu

Un serveur MCP (Model Context Protocol) durci et prêt pour la production qui fournit aux assistants IA un accès sécurisé et contrôlé aux opérations du système Ubuntu. Construit avec des contrôles de sécurité complets, des journaux d'audit et des principes de défense en profondeur.

License: MITPython 3.9+Security FocusedMCP Compatible

✨ Caractéristiques principales

🛡️ Architecture de sécurité d'abord

  • Protection contre la traversée des chemins - Résolution des liens symboliques avec des contrôles de liste d'autorisation/dénominateur
  • Assainissement des commandes - Prévention de l'injection Shell avec analyse sûre des arguments
  • Limitation des ressources - Contrôle de la taille des fichiers, des délais d'exécution et de la taille des sorties
  • Journalisation d'audit complète - Toutes les opérations sont consignées avec attribution à l'utilisateur
  • Défense en profondeur - Couches de sécurité multiples avec des valeurs par défaut à sécurité intégrée

🎯 Capacités de base

  • Opérations sur les fichiers - Lecture, écriture et énumération des répertoires avec validation des autorisations
  • Exécution de commandes - Exécution sûre de commandes shell avec filtrage par liste blanche/noire
  • Informations sur le système - Surveillance des détails du système d'exploitation, de la mémoire et de l'utilisation du disque
  • Gestion des paquets - Recherche et liste des paquets APT (l'installation nécessite une configuration explicite)

🏗️ Prêt pour la production

  • Conception modulaire avec séparation claire des préoccupations
  • Gestion complète des erreurs avec des messages d'erreur significatifs
  • Suite de tests étendue comprenant des tests de validation de la sécurité
  • Politiques configurables pour différents cas d'utilisation et environnements
  • Sécurité sans dépendance - la sécurité de base ne dépend pas de paquets externes

🚀 Démarrage rapide

Conditions préalables

  • Ubuntu 18.04+ (testé sur 20.04, 22.04, 24.04)
  • Python 3.9 ou supérieur
  • Utilitaires Unix standards (ls, cat, echo, etc.)

Installation

# Cloner le dépôt git clone https://github.com/yourusername/secure-ubuntu-mcp.git cd secure-ubuntu-mcp # Créer et activer l'environnement virtuel python3 -m venv .venv source .venv/bin/activate # Installer les dépendances pip install -r requirements.txt # Vérifier l'installation avec les tests intégrés python main.py --test

Utilisation de base

# Démarrer avec une politique de sécurité (recommandée) python main.py --policy secure # Démarrer avec une politique de développement (plus permissive) python main.py --policy dev # Tester les mesures de sécurité python main.py --security-test

🔧 Intégration

Claude Desktop

Obtenir Claude Desktop sur Linux

Support officiel: Claude Desktop ne supporte pas officiellement Linux, mais la communauté a créé des solutions !

Méthode recommandée: Utilisez le paquet Debian de la communauté par @aaddrick :

# Télécharger et installer Claude Desktop pour 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 # Corriger les problèmes de dépendance

Pour d'autres méthodes et le dépannage, voir : https://github.com/aaddrick/claude-desktop-debian

Configuration

Une fois Claude Desktop installé, ajoutez à votre configuration(~/.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" } } }

⚠️ Important: Utilisez des chemins absolus et l'interpréteur Python de l'environnement virtuel

Vérification: Après avoir redémarré Claude Desktop, vous devriez voir "secure-ubuntu" listé comme un serveur connecté, et Claude aura accès aux outils de contrôle du système.

Autres clients MCP

Le serveur implémente le protocole MCP standard et fonctionne avec n'importe quel client compatible MCP :

# Exemple avec mcp Python client import asyncio from mcp.client import ClientSession async def example() : # Se connecter au serveur # L'implémentation dépend de la passe de votre client MCP

🛡️ Politiques de sécurité

Politique de sécurité (par défaut)

Recommandée pour la production et les environnements non fiables :

  • Chemins autorisés: ~/, /tmp, /var/tmp
  • Chemins interdits: /etc, /root, /boot, /sys, /proc, /dev, /usr, /bin, /sbin
  • Liste blanche de commandes: ls, cat, echo, pwd, whoami, date, find, grep, apt (recherche uniquement)
  • Limites de ressources: fichiers de 1 Mo, délais d'attente de 15 secondes, sortie de 256 Ko
  • Sudo: Désactivé
  • Exécution Shell: Désactivé (utilise l'exécution directe sécurisée)

Politique de développement

Plus permissive pour les environnements de développement :

  • Chemins autorisés supplémentaires: /opt, /usr/local
  • Moins de restrictions: Accès à davantage de zones du système
  • Limites plus importantes: fichiers de 10MB, délais de 60s, sortie de 1MB
  • Plus de commandes: La plupart des outils de développement sont autorisés
  • Sudo: toujours désactivé par défaut (peut être activé)

Politiques personnalisées

Créez votre propre politique de sécurité :

from main import SecurityPolicy custom_policy = SecurityPolicy( allowed_paths=["/votre/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 )

🔍 Outils disponibles

Opérations sur les fichiers

  • list_directory(path) - Liste le contenu d'un répertoire avec ses métadonnées
  • read_file(file_path) - Lit le contenu d'un fichier avec validation de la taille
  • write_file(file_path, content, create_dirs=False) - Écriture avec opérations atomiques

Opérations système

  • execute_command(command, working_dir=None) - Exécute les commandes shell en toute sécurité
  • get_system_info() - Obtenir des informations sur le système d'exploitation, la mémoire et le disque

Gestion des paquets

  • search_packages(query) - Recherche dans les dépôts APT
  • install_package(nom_du_paquet) - Vérifie la disponibilité des paquets (liste uniquement)

🔒 Fonctionnalités de sécurité

Protection contre les attaques courantes

Prévention du franchissement de chemin:

# Ceux-ci sont tous bloqués : ../../../etc/passwd /etc/passwd /tmp/../etc/passwd symlinks_to_sensitive_files

Prévention de l'injection de commandes:

# Ces commandes sont toutes bloquées : echo hello ; rm -rf / echo `cat /etc/passwd` echo $(whoami) ls | rm -rf /

Protection contre l'épuisement des ressources:

  • Les limites de taille des fichiers empêchent l'épuisement de la mémoire
  • Les délais d'exécution évitent les processus suspendus
  • Les limites de taille de sortie empêchent l'inondation des journaux
  • La limitation des listes de répertoires empêche les attaques par énumération

Piste d'audit

Toutes les opérations sont enregistrées avec :

  • Attribution à l'utilisateur
  • Horodatage et type d'opération
  • Résolution complète du chemin d'accès
  • L'état de la réussite ou de l'échec
  • Détails de la violation de la sécurité

🧪 Tests

Tests de fonctionnalité

# Test des fonctionnalités de base python main.py --test

Validation de la sécurité

# Exécute des tests de sécurité complets python main.py --security-test

Tests manuels

# Test du protocole MCP directement python test_client.py --simple

📊 Exemple d'utilisation

Une fois intégré à un assistant d'intelligence artificielle :

Surveillance du système:

"Vérifier l'état de mon système et l'espace disque"

Gestion des fichiers:

"Lister les fichiers de mon répertoire personnel et me montrer les plus gros"

Tâches de développement:

"Vérifier si Python est installé et m'indiquer la version

Analyse des journaux:

"Recherche de fichiers d'erreur dans le répertoire de mon projet

⚙️ Configuration

Variables d'environnement

  • MCP_LOG_LEVEL - Niveau de journalisation (DEBUG, INFO, WARNING, ERROR)
  • MCP_POLICY - Politique de sécurité (secure, dev)
  • MCP_CONFIG_PATH - Chemin d'accès au fichier de configuration personnalisé

Fichier de configuration

Créez config.json pour les paramètres personnalisés :

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

🛠️ Développement

Ajout de nouveaux outils

@mcp.tool("nom_de_votre_outil") async def votre_outil(param : str) -> str : """Description de l'outil pour l'assistant IA"" try : # Utiliser les méthodes du contrôleur pour des opérations sûres result = controller.safe_operation(param) return json.dumps(result, indent=2) except Exception as e : return json.dumps({"error" : str(e)}, indent=2)

Extension de la sécurité

def create_custom_policy() -> SecurityPolicy : """Créer une politique de sécurité personnalisée"" return SecurityPolicy( allowed_paths=["/your/paths"], forbidden_commands=["dangerous", "commands"], # ... autres paramètres )

🔧 Résolution des problèmes

Problèmes courants

"Le serveur semble se bloquer

  • C'est normal ! Les serveurs MCP fonctionnent en continu et communiquent via stdio
  • Le serveur attend les messages du protocole MCP

"ModuleNotFoundError : No module named 'mcp'"

  • Assurez-vous que vous utilisez l'interpréteur Python de l'environnement virtuel
  • Vérifiez que votre configuration Claude Desktop utilise le chemin complet vers .venv/bin/python3

"Erreurs de type "SecurityViolation

  • Vérifiez si le chemin/commande est autorisé par votre politique de sécurité
  • Examinez les journaux d'audit dans /tmp/ubuntu_mcp_audit.log
  • Envisager d'utiliser la politique de développement pour les tests

"Erreurs "Permission refusée

  • Vérifiez que votre utilisateur a accès aux chemins d'accès demandés
  • Vérifiez les permissions des fichiers/répertoires avec ls -la

Mode débogage

# Activer la journalisation verbeuse python main.py --log-level DEBUG --policy secure # Vérifier les journaux d'audit tail -f /tmp/ubuntu_mcp_audit.log

🤝 Contribuer

Les contributions sont les bienvenues ! Veuillez consulter nos directives de contribution pour plus de détails.

Configuration du développement

  1. Créer un dépôt (Fork)
  2. Créez une branche de fonctionnalités : git checkout -b feature/amazing-feature
  3. Effectuez vos modifications avec des tests
  4. Assurez-vous que tous les tests passent : python main.py --test && python main.py --security-test
  5. Soumettez une demande d'extraction (pull request)

Normes du code

  • Suivre les directives de style PEP 8
  • Ajouter des indications de type pour toutes les fonctions publiques
  • Inclure une documentation complète
  • Écrire des tests pour les nouvelles fonctionnalités
  • Maintenir les principes de sécurité

licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

🔐 Divulgation de sécurité

Si vous découvrez une faille de sécurité, veuillez envoyer un courriel à[radjackbartok@proton.me] au lieu de créer un problème public. Nous prenons la sécurité au sérieux et nous répondrons rapidement.

🙏 Remerciements

  • L'équipe deModel Context Protocol pour l'excellence de son protocole
  • Les chercheurs en sécurité et la communauté infosec pour les meilleures pratiques
  • La communauté de sécurité Python pour ses conseils continus

feuille de route

  • Journalisation améliorée - Journalisation JSON structurée avec plus de contexte
  • Prise en charge des conteneurs - Intégration de Docker et politiques tenant compte des conteneurs
  • Outils réseau - Utilitaires réseau sûrs (ping, traceroute, etc.)
  • Gestion des processus - Surveillance et contrôle des processus en toute sécurité
  • Interface de configuration - Interface web pour la gestion des politiques
  • Tests d'intégration - Tests complets de bout en bout
  • Optimisation des performances - Mise en cache et amélioration des performances
  • Prise en charge de plusieurs utilisateurs - Contrôles d'accès basés sur les rôles

Conçu pour la communauté de l'IA soucieuse de la sécurité

💡 Conseil de pro: Commencez par la politique sécurisée et augmentez progressivement les permissions en fonction des besoins. Il est plus facile d'ajouter des permissions que de se remettre d'un incident de sécurité !

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
Alpha Ticker MCPAucune documentation n'est disponible.Voir
Serveur MCP de BinanceVoir
AWS-IReveal-MCPAWS-IReveal-MCP est un serveur Model Context Protocol (MCP) conçu pour offrir aux équipes de sécurit...Voir
API pour la publicité sur les produits AmazonUn service Model Context Protocol (MCP) pour l'intégration de l'API Product Advertising d'Amazon. Ce...Voir
Modèle de serveur Cloudflare MCPUn serveur de protocole de contexte de modèle (MCP) alimenté par l'IA qui fournit un accès intellige...Voir
Démonstration de géolocalisationCe projet montre comment utiliser EdgeOne Pages Functions pour récupérer les informations de géoloca...Voir