Hermes Agent安全是一种纵深防御安全模型,它结合了授权控制、命令审批工作流、沙箱、凭证保护、提示注入防御、会话隔离和网络限制,以保护自托管AI代理免受未经授权的访问、危险操作、数据泄露和其他安全风险。本文就来为大家介绍下配置Hermes Agent安全机制的方法,同时以Hostinger示例,为大家分享部署Hermes Agent最安全的方式。
一、Hermes Agent的安全机制是如何运作的
Hermes Agent安全性采用多个独立的安全层,控制谁可以访问代理、代理可以执行哪些操作、代理可以访问哪些资源以及外部内容如何处理。
访问控制将代理的使用限制在已批准的用户、平台和对话中。消息平台和网关可以在请求到达代理之前强制执行白名单、配对工作流程和用户授权策略。
当Hermes Agent执行潜在危险操作时,命令审批流程可能需要在执行前进行人工确认。
对于少量极具破坏性的行动,Hermes会采取强硬的保护措施,无论审批设置如何,都会阻止行动的执行。
您可以通过容器化和沙盒化的终端后端来隔离命令执行。
在Docker容器或其他隔离环境中运行工具可以限制对主机系统的访问,并降低恶意、受损或意外操作的影响。
Hermes还通过环境过滤、凭证编辑、密钥管理集成和受限凭证转发来保护敏感凭证。
除非明确配置额外的访问权限,否则MCP服务器等外部集成只能接收有限的一组环境变量。
为了降低即时注入风险,Hermes会在将受支持的上下文文件和外部内容合并到代理工作流程之前,扫描其中可能存在的不安全指令。
网站黑名单和SSRF保护有助于防止访问私有网络、云元数据端点、本地主机服务和其他敏感资源。
其他保护措施包括会话隔离、输入清理、可选依赖项的供应链保障措施以及可配置的网络限制。
这些措施共同降低了因提示信息泄露、凭证暴露、集成不安全或配置错误而导致更大规模安全事件的可能性。
二、如何配置Hermes Agent安全性通过设置明确的授权控制、审批策略、执行边界、凭证保护和网络访问限制来配置Hermes Agent安全性。
设置好Hemes Agent后,首先要设置用户允许列表和DM配对,以便只有经过批准的用户才能与代理进行交互。
然后配置危险命令审批策略,选择隔离的终端后端,例如Docker,限制凭证转发,并审查对外部内容和网络访问的保护措施。
最强大的Hermes Agent安全部署将~/.hermes/config.yaml和~/.hermes/.env中的设置(或配置文件目录中的等效文件)与防火墙、VPN、专用网络、容器隔离和受限主机权限等基础设施控制相结合。
1、限制谁可以访问代理
Hermes Agent通过用户白名单和配对控制来限制访问权限。在通过Telegram、Discord、网关或其他集成方式启用该代理之前,请务必明确定义哪些用户可以与其交互。
访问控制设置通过~/.hermes/.env进行配置,在适用情况下,还可以通过~/.hermes/config.yaml进行配置。
对于Telegram部署,将已批准的用户名添加到~/.hermes/.env中的TELEGRAM_ALLOWED_USERS。
Discord部署使用DISCORD_ALLOWED_USERS,而网关部署使用GATEWAY_ALLOWED_USERS。任何未包含在这些允许列表中的用户都将被拒绝访问。
避免通过诸如GATEWAY_ALLOW_ALL_USERS=true之类的设置启用无限制访问权限。虽然这可能对测试有用,但生产环境部署应始终将访问权限限制在明确授权的用户范围内。
如果您使用直接消息配对,请在授予代理访问权限之前审核并批准配对请求。
Hermes提供诸如hermes pairing approve和hermes pairing revoke之类的命令来管理授权用户,并在不再需要时删除访问权限。
Hermes访问控制与网络级保护措施结合使用效果最佳。尽可能限制对受信任网络、VPN、反向代理或私有基础设施的访问,尤其是在向多个用户暴露网关端点时。
定期审查允许列表和已配对用户。移除不活跃用户、未使用的集成和过时的访问规则可以减少攻击面,并有助于防止未经授权的访问。
2、在隔离环境中运行命令
Hermes Agent可以通过隔离的后端运行终端命令,而不是直接在主机系统上执行。对于生产网关部署,请使用诸如docker、singularity、modal或daytona之类的后端,将代理执行的命令与运行Hermes的机器隔离开来。
在~/.hermes/config.yaml中设置终端后端。对于Docker隔离,请配置:
terminal: backend: docker docker_image: “nikolaik/python-nodejs:python3.11-nodejs20” docker_forward_env: [] container_cpu: 1 container_memory: 5120 container_disk: 51200 container_persistent: true
Hermes在使用Docker终端后端时会应用强化的Docker设置,包括放弃Linux功能、权限提升保护、进程限制和受限的临时文件系统。
资源限制(例如container_cpu、container_memory和container_disk)有助于防止失控命令消耗主机资源。
除非任务明确需要特定的环境变量,否则请将docker_forward_env留空。添加到此列表中的任何变量都会被注入到容器中,并可供在该容器中运行的代码读取。
特意选择持久化模式。启用container_persistent:true后,Hermes会在会话之间保留容器文件系统。
使用container_persistent:false时,工作区是临时的,会在清理过程中被移除。当任务需要连续性时,请使用持久模式;当隔离性比保存状态更重要时,请使用临时模式。
为了加强网络隔离,请通过ssh终端后端在单独的服务器上执行命令。将SSH连接值存储在~/.hermes/.env中,而不是通过导出的配置共享它们。
3、保护API密钥和其他凭证
Hermes Agent默认将API密钥、令牌和其他密钥存储在~/.hermes/.env中。
Hermes还支持通过Bitwarden Secrets Manager进行外部密钥管理,允许将凭据存储在本地文件系统之外,并在启动时检索。
限制对~/.hermes/.env文件的访问,避免将其提交到源代码控制、在用户之间共享或通过备份和日志暴露出来。
在Linux和macOS系统上,使用以下命令限制文件访问:
chmod 600 ~/.hermes/.env
这样可以确保只有文件所有者才能读取或修改存储的凭据。
使用隔离执行后端时,请仔细检查环境变量传递设置。Hermes只会转发docker_forward_env中列出的变量或其他后端特定的传递设置。
尽量缩短列表长度,并且只包含任务明确需要的凭证。
Hermes还会在将环境变量暴露给终端会话、代码执行环境和MCP服务器之前对其进行过滤。
除非通过传递设置或配置明确允许,否则凭据不会自动传递给子进程、容器或外部服务。
凭证文件需要同等级别的保护。如果您使用terminal.credential_files进行凭证传递,则仅公开工作负载所需的文件。
使用MCP服务器时,请明确定义每台服务器所需的环境变量。定期检查存储的凭据,并删除未使用的API密钥、令牌和凭据文件。
4、限制对外部内容的访问
Hermes Agent包含一些控制功能,可以限制代理可以访问的网站、URL和外部资源,并有助于防止与不安全或敏感的网络位置进行交互。
这些保护措施降低了快速注入攻击、恶意网站和服务器端请求伪造(SSRF)的风险。
使用security.website_blocklist在~/.hermes/config.yaml中配置网站限制。
添加代理永远不应访问的域,例如内部管理门户、敏感公司系统或代理任务不需要的网站。
Hermes默认阻止对私有网络、环回地址、链路本地地址、云元数据服务和其他非公共目标的访问。
这种保护有助于防止SSRF攻击,此类攻击试图利用代理访问无法公开访问的内部服务。
除非特定用例需要,否则请勿禁用此安全措施。设置security.allow_private_urls会覆盖此保护措施,因此只有在评估其安全隐患后才应启用它。
定期检查网络访问工具、浏览器集成和外部服务,以确保代理只能访问其工作所需的资源。
Hermes Agent的各种使用场景中所需的集成数量和类型差异很大,因此访问策略应反映代理预期执行的任务。
限制外部访问可以减少恶意指令、敏感数据或意外内容进入系统的位置数量。
5、启用日志记录和监控
默认情况下,Hermes将日志存储在~/.hermes/logs/目录中。请确保管理员可以访问此目录,并将其纳入您的运行监控流程中。
定期查看日志,以发现安全问题或运行问题的迹象,例如:
- 未经授权的访问尝试
- 命令重复失败
- 意外的审批请求
- 已阻止的操作
- 身份验证问题
- 异常代理行为
及早调查这些事件有助于在错误配置和潜在安全问题升级为更大问题之前发现它们。
对于生产环境部署,请考虑将Hermes日志转发到您组织的集中式日志平台。
集中式日志收集使搜索历史事件、关联跨系统活动以及更长时间地保留记录变得更加容易。
日志记录与本指南中介绍的其他安全控制措施结合使用时效果最佳。
查看安全公告警告并定期运行hermes doctor,以识别已知的安全问题、易受攻击的依赖项和可能需要注意的配置问题。
三、部署Hermes Agent最安全的方式是什么最安全的Hermes Agent部署方案结合了隔离的基础设施、受限的网络访问、定期更新和强大的访问控制。运行Hermes Agent有三种常见方式:
| 部署选项 | 安全考量 |
| 本地机器 | 设置简单,但会与您的个人工作站共享资源、凭据和文件。 |
| 自托管VPS | 提供更强的隔离性和更大的控制力,但需要您自行配置防火墙、更新、备份、监控和访问控制。 |
| Managed Hermes hosting | 为Hermes提供专用环境,无需手动构建和维护底层基础设施。 |
对于长期部署,VPS是更好的选择。将Hermes与您的个人电脑隔离,可以降低因提示符被篡改、工具配置错误和意外命令执行而造成的影响。
如果Hermes需要执行命令、编写代码或与外部系统交互,请使用Docker等隔离后端。容器隔离可以限制意外命令的影响,并降低主机级更改的风险。
在VPS上部署Hermes时,请寻找支持安全设置的功能。
Hostinger的一键式Hermes Agent部署提供了一个预配置的环境,其中包含专用的VPS资源、内置防火墙保护、自动备份和Docker管理工具。这样就减少了应用Hermes安全控制之前所需的手动设置量,也更容易维护一个与您的个人工作站分开的专用环境。
相关推荐:
《Hostinger Hermes Agent VPS方案:一键部署低至$5.84/月 内置学习循环/多平台消息传递/接入200+大模型》
《Hostinger VPS快速部署Hermes Agent教程》
无论Hermes运行在何处,都应遵循以下部署规范:
- 以非root用户身份运行Hermes。
- 通过防火墙、VPN或专用网络限制访问。
- 保护~/.hermes/.env并将其排除在版本控制之外。
- 定期检查允许列表和审批设置。
- 每当发布安全补丁时,请更新Hermes。
- 对于命令密集型工作负载,请使用隔离的执行后端。
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)
微信扫码加好友进群
主机优惠码及时掌握
QQ群号:164393063
主机优惠发布与交流





