🔒 安全优先模型上下文协议服务器,用于安全的Ubuntu系统操作
一个经过强化、生产就绪的模型上下文协议(MCP)服务器,提供AI助手对Ubuntu系统操作的安全、受控访问。构建时采用了全面的安全控制、审计日志和纵深防御原则。
# 克隆仓库
git clone https://github.com/yourusername/secure-ubuntu-mcp.git
cd secure-ubuntu-mcp
# 创建并激活虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖项
pip install -r requirements.txt
# 使用内置测试验证安装
python main.py --test
# 使用安全策略启动(推荐)
python main.py --policy secure
# 使用开发策略启动(更宽松)
python main.py --policy dev
# 测试安全措施
python main.py --security-test
官方支持:Claude Desktop没有正式支持Linux,但社区已经创建了解决方案!
推荐方法:使用@aaddrick的社区Debian包:
# 下载并安装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 # 解决任何依赖问题
对于其他方法和故障排除,请参阅:https://github.com/aaddrick/claude-desktop-debian
一旦安装了Claude Desktop,在配置中添加(~/.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"
}
}
}
}
⚠️ 重要:使用绝对路径和虚拟环境Python解释器
验证:重启Claude Desktop后,您应该看到“secure-ubuntu”作为已连接服务器列出,并且Claude将有权访问系统控制工具。
该服务器实现了标准MCP协议,与任何MCP兼容客户端一起工作:
# 示例使用mcp Python客户端
import asyncio
from mcp.client import ClientSession
async def example():
# 连接到服务器
# 实现取决于您的MCP客户端
pass
推荐用于生产和不受信任的环境:
~/,/tmp,/var/tmp/etc,/root,/boot,/sys,/proc,/dev,/usr,/bin,/sbinls,cat,echo,pwd,whoami,date,find,grep,apt(仅搜索)开发环境更宽松:
/opt,/usr/local创建自己的安全策略:
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, # 极度谨慎使用
audit_actions=True
)
list_directory(path) - 列出目录内容及其元数据read_file(file_path) - 读取文件内容并进行大小验证write_file(file_path, content, create_dirs=False) - 使用原子操作写入execute_command(command, working_dir=None) - 安全执行shell命令get_system_info() - 获取操作系统、内存和磁盘信息search_packages(query) - 搜索APT存储库install_package(package_name) - 检查软件包可用性(仅列出)防止路径遍历:
# 这些都被阻止:
../../../etc/passwd
/etc/passwd
/tmp/../etc/passwd
指向敏感文件的符号链接
防止命令注入:
# 这些都被阻止:
echo hello; rm -rf /
echo `cat /etc/passwd`
echo $(whoami)
ls | rm -rf /
防止资源耗尽:
所有操作都带有:
# 测试核心功能
python main.py --test
# 运行全面的安全测试
python main.py --security-test
# 直接测试MCP协议
python test_client.py --simple
集成到AI助手后:
系统监控:
“检查我的系统状态和磁盘空间”
文件管理:
“列出我的主目录中的文件并显示最大的几个”
开发任务:
“检查Python是否已安装并显示版本”
日志分析:
“在我的项目目录中查找任何错误文件”
MCP_LOG_LEVEL - 日志级别(DEBUG、INFO、WARNING、ERROR)MCP_POLICY - 安全策略(secure、dev)MCP_CONFIG_PATH - 自定义配置文件路径创建config.json以自定义设置:
{
"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
}
}
@mcp.tool("your_tool_name")
async def your_tool(param: str) -> str:
"""AI助手的工具描述"""
try:
# 使用控制器方法进行安全操作
result = controller.safe_operation(param)
return json.dumps(result, indent=2)
except Exception as e:
return json.dumps({"error": str(e)}, indent=2)
def create_custom_policy() -> SecurityPolicy:
"""创建自定义安全策略"""
return SecurityPolicy(
allowed_paths=["/your/paths"],
forbidden_commands=["dangerous", "commands"],
# ... 其他设置
)
“服务器似乎挂起”
“ModuleNotFoundError: 没有名为'mcp'的模块”
.venv/bin/python3的完整路径“SecurityViolation”错误
/tmp/ubuntu_mcp_audit.log“权限被拒绝”错误
ls -la检查文件/目录权限# 启用详细日志
python main.py --log-level DEBUG --policy secure
# 查看审计日志
tail -f /tmp/ubuntu_mcp_audit.log
我们欢迎贡献!请参阅我们的贡献指南以获取详细信息。
git checkout -b feature/amazing-featurepython main.py --test && python main.py --security-test本项目采用MIT许可 - 详见LICENSE文件。
如果您发现安全漏洞,请发送电子邮件至[radjackbartok@proton.me],而不是公开报告。我们非常重视安全问题并将迅速响应。
为注重安全的AI社区打造
💡 小贴士:从安全策略开始,并根据需要逐步增加权限。增加权限比从安全事件中恢复更容易!