安全
PentAGI 安装实例的凭据、HTTPS、登录及网络暴露面。
更改默认设置
全新安装会创建本地管理员 [email protected],密码为 admin,您必须在首次登录时修改该密码。如果遗忘密码,只要该账户仍使用 [email protected] 地址,即可通过安装程序的维护菜单进行重置。
请在首次启动前设置 .env 中的这些值;安装程序会为您生成 salt 和密码。PostgreSQL 和 Neo4j 仅在创建数据卷时读取其凭据,因此后续更改会导致连接中断:
| 变量 | 用途 |
|---|---|
COOKIE_ | 用于签署会话 Cookie 和 API 令牌 — 请设置为随机值 |
PENTAGI_、PENTAGI_ | PostgreSQL 凭据 |
NEO4J_ | knowledge graphknowledge graph — 知识图谱启用此可选功能后,PentAGI 在测试期间构建的主机、服务、漏洞及其之间访问关系的图谱。它展示了发现项之间的关联。 的 Neo4j 密码;NEO4J_ 必须保持为 neo4j |
PUBLIC_ | 用户访问的 URL,例如 https:/ |
在正在运行的安装中,请先在 PostgreSQL 或 Neo4j 内部更改数据库密码,然后在 .env 中进行更改。
HTTPS
PentAGI 在 8443 端口上提供 HTTPS 服务,并使用自签名证书。如需使用您自己的证书,请设置 SERVER_ 和 SERVER_,并将文件挂载到 docker-compose.yml 中。
用户与登录
系统不提供注册表单。管理员通过已登录的浏览器会话使用 Users API (/) 管理本地用户 — API 令牌在此处会返回 403 — 角色用于限制每个用户可以查看和修改的内容。本地用户在 Settings → Account 下修改自己的邮箱和密码。
配置 GitHub 或 Google 登录后,如果登录时 provider 验证的电子邮件与现有账户(包括本地账户)匹配,则会以该账户及其角色登录;其他任何登录都将获得一个具有默认用户角色的新账户。每个安装都从管理员 [email protected] 开始,因此在启用登录之前,请通过 Settings → Account 将其移至您控制的地址,并且仅在可接受新账户的情况下启用此功能,例如使用仅限于您域名的 Google Workspace 应用。
GitHub 和 Google 登录通过 OAuth 实现。请注册一个应用,回调地址设为 ${PUBLIC_,并添加其凭据:
PUBLIC_URL=https://pentagi.example.com
OAUTH_GITHUB_CLIENT_ID=your_github_client_id
OAUTH_GITHUB_CLIENT_SECRET=your_github_client_secret网络暴露面
默认情况下,PentAGI Web 界面仅监听 127.0.0.1。要从其他计算机访问它:
PENTAGI_LISTEN_IP=0.0.0.0
PENTAGI_LISTEN_PORT=8443
PUBLIC_URL=https://192.168.1.100:8443
CORS_ORIGINS=https://localhost:8443,https://192.168.1.100:8443请在 PUBLIC_ 和 CORS_ 中使用实际地址,切勿使用 0.0.0.0。使用 docker compose up -d --force-recreate 重建容器,并在防火墙中开放 8443 端口。
在反向代理后面,将 TRUSTED_ 设置为代理的地址或 CIDR,以逗号分隔。否则,每个请求似乎都来自代理,并且每个地址的登录限制(五分钟内 30 次失败尝试,然后锁定 15 分钟)将由所有用户共享。
每个 flowflow — 流程PentAGI 的一次运行:一个目标、根据您的消息创建的任务,以及智能体在此过程中执行的所有操作。 的 sandboxsandbox — 沙箱智能体运行其工具的隔离 Docker 容器。界面中将其显示为 Terminal。 容器还会发布两个端口,用于带外回调(例如反向 shell)。这些端口来自从 DOCKER_ 开始的 2000 个端口(默认 28000),并绑定到 DOCKER_,即 agentagent — 智能体PentAGI 的智能体:一种拥有独立提示词、设置和工具的人工智能模型,在流程中执行特定类型的工作,例如测试、编写代码或搜索网络。 提供给目标用于回调的地址。
默认情况下,DOCKER_ 为 0.0.0.0:端口监听 Docker 主机的所有接口,agents 自行查找其公共地址。仅当主机拥有该地址且目标可以访问它时,才将其设置为特定地址;在 NAT 后面时,请保持默认设置。Docker 发布的端口会绕过主机上的 ufw 和 firewalld 规则,因此请使用主机前方的防火墙(例如云安全组)或 Docker 的 DOCKER-USER 链中的规则来限制范围。
PROXY_ 通过代理路由后端对模型 provider、嵌入 provider、搜索 API 和更新检查的调用,这有助于将安装与外部网络隔离。自托管端点(如 Ollama、vLLM 或 SearXNG)也通过该代理,因为不存在 NO_ 例外,所以代理必须能够访问它们。flow 的 sandbox 容器(agent 在其中运行命令)、为浏览器 tooltool — 工具智能体执行操作所用的手段:终端、隔离浏览器或网络搜索等内置功能,或沙箱中的程序,例如 nmap、metasploit 或 sqlmap。 打开网页的 scraper 以及 Graphiti 服务不使用该代理,因此请在网络级别限制它们的出站流量。使用 GitHub 或 Google 登录以及对捆绑栈之外的 Langfuse 或 OpenTelemetry 端点的调用也不使用该代理,Docker 守护进程则使用其自身的代理设置拉取镜像。
更新检查
服务器在启动后两分钟内,随后每隔三小时,会向 update.pentagi.com 查询是否有更新的构建版本可用。该请求携带安装 ID、许可证密钥(如果已设置)、版本和平台信息,以及安装的摘要:已配置的 provider 和登录类型、若干功能开关、用户、flow、tasktask — 任务流程中的一个请求:其第一条消息,或并非回答智能体提问的后续消息。PentAGI 将每个任务拆分为子任务。、容器、提示词、API 令牌和 tool calltool call — 工具调用模型发出的运行智能体某个工具的请求,例如终端命令或网络搜索。 的数量,以及按 provider 类型统计的令牌和成本总额——不包含任何名称、地址、提示词或 flow 内容。UPDATE_ 可将其关闭。安装程序每次启动时,以及在执行每项操作(如 Apply Changes、Update、Start 或 Stop)之后,都会发送已安装的镜像和每个堆栈的状态;在 PentAGI 运行时,还会发送相同的摘要;UPDATE_ 不会影响它。
pentagi 容器以 root 身份运行,因为它需要通过 Docker 套接字管理容器。为了获得更强的隔离性,请在独立的 worker node 上运行 tools。
最后更新于