返回市场
帕洛阿尔托-MCP服务器

帕洛阿尔托-MCP服务器

作者:DynamicEndpoints7 星标更新:2025-03-31

项目介绍

Palo Alto Networks MCP 服务器套件

smithery 徽章

一个全面的模型上下文协议(MCP)服务器套件,通过统一的API接口管理Palo Alto Networks防火墙和服务。

目录

概述

Palo Alto Networks MCP 服务器套件通过专用服务器提供模块化的防火墙管理方法:

  • 核心服务器:基础防火墙操作和共享功能
  • 策略服务器:安全策略和规则管理
  • 配置服务器:系统配置和设置
  • 对象服务器:网络对象和地址管理
  • 设备服务器:设备操作和监控

架构

┌─────────────────┐     ┌──────────────────┐
│    核心服务器  │◄────┤  策略服务器   │
│                 │     └──────────────────┘
│  (基础服务)│     ┌──────────────────┐
│                 │◄────┤  配置服务器   │
│                 │     └──────────────────┘
│                 │     ┌──────────────────┐
│                 │◄────┤  对象服务器  │
│                 │     └──────────────────┘
│                 │     ┌──────────────────┐
│                 │◄────┤  设备服务器   │
└────────┬────────┘     └──────────────────┘
         │
         ▼
┌─────────────────┐
│  Palo Alto API  │
└─────────────────┘

安装

通过 Smithery 安装

要通过 Smithery 自动安装Palo Alto Networks MCP 服务器套件到Claude Desktop:

npx -y @smithery/cli install @DynamicEndpoints/paloalto-mcp-server --client claude

手动安装

  1. 克隆仓库:
git clone https://github.com/your-org/paloalto-mcp-servers.git
cd paloalto-mcp-servers
  1. 安装每个服务器的依赖项:
# 安装核心服务器
cd paloalto-server
npm install

# 安装策略服务器
cd ../paloalto-policy-server
npm install

# 安装配置服务器
cd ../p_aloalto-config-server
npm install

# 安装对象服务器
cd ../paloalto-objects-server
npm install

# 安装设备服务器
cd ../paloalto-device-server
npm install
  1. 配置环境变量:
# 在每个服务器目录中创建 .env 文件
PANOS_API_KEY=your-api-key
PANOS_API_BASE_URL=https://your-firewall.example.com/api

# 可选配置
PANOS_VERIFY_SSL=true
PANOS_TIMEOUT=30000
PANOS_DEBUG=false

服务器详情

核心服务器 (paloalto-server)

提供共享功能和核心操作的基础服务器。

主要特性

  • 身份验证和会话管理
  • API速率限制和重试逻辑
  • 共享实用函数
  • 错误处理框架

示例:基本身份验证

const result = await useMcpTool("paloalto-server", "verify_credentials", {
  api_key: process.env.PANOS_API_KEY
});

console.log(result.content[0].text); // 身份验证状态

策略服务器 (paloalto-policy-server)

全面的安全策略和规则管理。

可用工具

  1. get_security_rules
// 获取所有安全规则
const rules = await useMcpTool("paloalto-policy", "get_security_rules", {});

// 使用过滤器获取规则
const webRules = await useMcpTool("paloalto-policy", "get_security_rules", {
  filter: {
    service: ["http", "https"],
    action: "allow"
  }
});
  1. create_security_rule
// 创建基本安全规则
await useMcpTool("paloalto-policy", "create_rule", {
  rule_type: "security",
  rule_data: {
    name: "allow-internal-web",
    source: ["internal-network"],
    destination: ["web-servers"],
    service: ["http", "https"],
    action: "allow",
    log_setting: "default",
    profile_setting: {
      group: ["default-protection"]
    }
  }
});

// 创建更复杂的规则,包括区域和应用程序
await useMcpTool("paloalto-policy", "create_rule", {
  rule_type: "security",
  rule_data: {
    name: "restrict-social-media",
    source_zone: ["trust"],
    destination_zone: ["untrust"],
    source: ["internal-users"],
    destination: ["any"],
    application: ["facebook-base", "twitter-base"],
    service: ["application-default"],
    action: "deny",
    log_setting: "detailed-logging",
    description: "阻止社交媒体访问"
  }
});
  1. update_security_rule
// 更新现有规则
await useMcpTool("paloalto-policy", "update_rule", {
  rule_type: "security",
  rule_name: "allow-internal-web",
  rule_data: {
    service: ["http", "https", "ssh"],
    description: "更新以允许SSH访问"
  }
});

配置服务器 (paloalto-config-server)

系统配置和设置管理。

示例:网络配置

// 更新DNS设置
await useMcpTool("paloalto-config", "update_network_settings", {
  dns_primary: "8.8.8.8",
  dns_secondary: "8.8.4.4",
  dns_search_domain: "example.com"
});

// 配置接口
await useMcpTool("paloalto-config", "configure_interface", {
  name: "ethernet1/1",
  config: {
    mode: "layer3",
    ip: ["10.0.1.1/24"],
    zone: "trust",
    enable: true
  }
});

对象服务器 (paloalto-objects-server)

网络对象和地址管理。

示例:地址对象管理

// 创建地址对象
await useMcpTool("paloalto-objects", "create_address_object", {
  name: "web-server-1",
  type: "ip-netmask",
  value: "10.0.1.100/32",
  description: "主要Web服务器",
  tags: ["production", "web"]
});

// 创建地址组
await useMcpTool("paloalto-objects", "create_address_group", {
  name: "web-servers",
  description: "所有Web服务器",
  members: ["web-server-1", "web-server-2"],
  tags: ["production", "web"]
});

// 创建动态地址组
await useMcpTool("paloalto-objects", "create_dynamic_address_group", {
  name: "active-web-servers",
  description: "当前正在使用的Web服务器",
  filter: "tag.production and tag.web and state.up"
});

设备服务器 (paloalto-device-server)

设备操作和监控。

示例:设备管理

// 获取设备状态
const status = await useMcpTool("paloalto-device", "get_device_status", {});

// 提交更改
await useMcpTool("paloalto-device", "commit_changes", {
  description: "更新了安全策略",
  admins: ["admin1"], // 可选:指定提交哪些管理员的更改
});

// 备份配置
await useMcpTool("paloalto-device", "backup_config", {
  filename: "backup-2024-01-20.xml",
  include_shared: true
});

集成模式

1. 安全策略部署

async function deploySecurityPolicy() {
  // 1. 创建地址对象
  await useMcpTool("paloalto-objects", "create_address_object", {
    name: "internal-subnet",
    type: "ip-netmask",
    value: "192.168.1.0/24"
  });

  // 2. 创建安全规则
  await useMcpTool("paloalto-policy", "create_rule", {
    rule_type: "security",
    rule_data: {
      name: "allow-outbound",
      source: ["internal-subnet"],
      destination: ["any"],
      service: ["web-browsing"],
      action: "allow"
    }
  });

  // 3. 验证配置
  const rules = await useMcpTool("paloalto-policy", "get_security_rules", {});
  
  // 4. 提交更改
  await useMcpTool("paloalto-device", "commit_changes", {
    description: "部署了新的安全策略"
  });
}

2. 高可用性配置

async function configureHA() {
  // 1. 配置HA接口
  await useMcpTool("paloalto-config", "configure_ha", {
    mode: "active-passive",
    group: {
      id: 1,
      description: "主HA组"
    },
    interfaces: {
      ha1: {
        port: "ethernet1/3",
        ip: "10.0.0.1/24"
      },
      ha2: {
        port: "ethernet1/4",
        ip: "10.0.1.1/24"
      }
    }
  });

  // 2. 配置HA策略
  await useMcpTool("paloalto-config", "configure_ha_policy", {
    preemptive: true,
    heartbeat_interval: 2000,
    heartbeat_threshold: 3
  });

  // 3. 提交更改
  await useMcpTool("paloalto-device", "commit_changes", {
    description: "配置了HA设置"
  });
}

高级用法

1. 自定义规则模板

const ruleTemplate = {
  base: {
    log_setting: "default",
    profile_setting: {
      group: ["default-protection"]
    }
  },
  web: {
    service: ["web-browsing"],
    application: ["web-browsing"],
    profile_setting: {
      group: ["strict-web-protection"]
    }
  }
};

async function createRuleFromTemplate(type, customData) {
  const template = {...ruleTemplate.base, ...ruleTemplate[type]};
  await useMcpTool("paloalto-policy", "create_rule", {
    rule_type: "security",
    rule_data: {...template, ...customData}
  });
}

2. 批量操作

async function batchCreateObjects(objects) {
  const results = [];
  for (const obj of objects) {
    try {
      const result = await useMcpTool("paloalto-objects", "create_address_object", obj);
      results.push({status: "success", name: obj.name});
    } catch (error) {
      results.push({status: "error", name: obj.name, error: error.message});
    }
  }
  return results;
}

故障排除

常见问题

  1. API连接问题
// 测试API连通性
const status = await useMcpTool("paloalto-server", "test_connection", {
  timeout: 5000,
  verify_ssl: true
});

if (!status.success) {
  console.error(`连接失败: ${status.error}`);
  // 检查防火墙可达性
  // 验证API密钥权限
  // 验证SSL证书
}
  1. 规则冲突
// 分析规则冲突
const analysis = await useMcpTool("paloalto-policy", "analyze_rules", {
  rule_type: "security",
  checks: ["shadowing", "redundancy", "conflicts"]
});

if (analysis.issues.length > 0) {
  console.log("发现规则问题:", analysis.issues);
}
  1. 提交失败
try {
  await useMcpTool("paloalto-device", "commit_changes", {
    description: "策略更新"
  });
} catch (error) {
  if (error.code === "ConfigurationLocked") {
    // 处理锁定的配置
    await useMcpTool("paloalto-device", "release_config_lock", {});
  } else if (error.code === "ValidationError") {
    // 处理验证错误
    console.error("配置验证失败:", error.details);
  }
}

贡献

  1. 分叉仓库
  2. 创建功能分支
git checkout -b feature/new-feature
  1. 提交更改
git commit -m "添加新功能"
  1. 推送到分支
git push origin feature/new-feature
  1. 创建拉取请求

许可证

MIT 许可证 - 详情见 LICENSE 文件