应按五步设置防火墙:一、确认实际监听端口;二、为必需端口添加入站放行规则;三、限制源ip范围;四、禁用默认全通规则并验证拦截;五、配置容器级出站白名单。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在本地部署HermesAgent后担心其暴露于局域网或公网时可能引发未授权访问、敏感数据外泄或远程代码执行等风险,则问题核心往往在于防火墙策略缺失与端口开放范围失控。以下是针对本地部署场景下防火墙设置与端口开放风险的具体解析与应对操作:
一、确认HermesAgent实际监听端口
防火墙规则若与Agent真实监听端口不一致,将导致规则失效或误放行非业务端口。必须通过多路径交叉验证获取准确端口号,避免依赖默认值或配置注释。
1、检查HermesAgent配置文件application.yml或application.properties中server.port字段的值。
2、若使用Docker部署,查看docker run命令中-p参数映射的宿主机端口,例如-p 9090:8080表示宿主机9090端口被代理到容器内8080端口。
3、启动Agent后,在宿主机执行netstat -tuln | grep LISTEN(Linux/macOS)或netstat -ano | findstr :LISTEN(Windows),确认进程监听的实际端口号。
4、若输出中未出现对应端口,说明Agent未成功绑定,需排查配置错误或端口冲突。
二、为指定端口添加入站放行规则
仅开放Agent必需的端口,并严格限制协议类型与目标地址,是防止横向渗透的第一道屏障。全网段通配(如0.0.0.0/0)必须禁止。
1、Windows系统中,以管理员身份运行PowerShell,执行:New-NetFirewallRule -DisplayName "HermesAgent-In" -Direction Inbound -Protocol TCP -LocalPort 9090 -Action Allow。
2、CentOS/RHEL系统中,执行:sudo firewall-cmd --permanent --add-port=9090/tcp && sudo firewall-cmd --reload。
3、Ubuntu/Debian系统中,执行:sudo ufw allow 9090/tcp。
4、若Agent同时启用HTTP与HTTPS服务,需分别对9090与8443端口重复执行对应命令,禁止复用同一规则覆盖多个端口。
三、限制允许访问的源IP范围
即使端口已放行,也必须限定可建立连接的源网络地址,防止攻击者从任意公网IP发起试探性连接或暴力破解。
1、Windows中,扩展防火墙规则添加RemoteAddress参数:New-NetFirewallRule -DisplayName "HermesAgent-In-Limited" -Direction Inbound -Protocol TCP -LocalPort 9090 -RemoteAddress 192.168.10.0/24 -Action Allow。
Hermes Agent (v0.8.0) 是由 Nous Research 开发的开源自进化 AI 智能体,被誉为“与你共同成长的 Agent”。其核心优势在于内置学习闭环,能从任务中自动提炼技能、持久记忆用户偏好,越用越懂你。该版本聚焦“智能”升级,支持后台任务自动通知、模型实时切换及 MCP OAuth 2.1。它兼容 200+ 主流大模型,支持微信、Telegram 等多平台接入,仅需 5
2、firewalld中,使用rich rule限定IP段:sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="9090" protocol="tcp" accept'。
3、ufw中,指定子网段允许:sudo ufw allow from 192.168.10.0/24 to any port 9090 proto tcp。
4、禁止配置RemoteAddress为any或0.0.0.0/0,否则等同于取消源IP限制。
四、禁用默认全通规则并验证拦截效果
部分系统预置防火墙策略(如Windows“专用网络”默认允许全部入站)会覆盖自定义规则,必须主动识别并禁用冲突项,确保最小权限生效。
1、Windows中,进入“高级安全Windows Defender防火墙”→“入站规则”,查找名称含“Core Networking”、“File and Printer Sharing”的默认规则,右键选择“禁用规则”。
2、firewalld中,执行sudo firewall-cmd --list-all,检查output和public区域是否存在source address: 0.0.0.0/0的accept规则,若有则用--remove-rich-rule移除。
3、ufw中,执行sudo ufw status verbose,确认policy为deny,且无Anywhere来源的allow条目。
4、验证时须从非授权IP段(如手机热点网络)发起telnet或curl测试,确认连接被拒绝而非超时。
五、配置容器级出站白名单
当HermesAgent以Docker方式运行时,宿主机防火墙无法控制容器内部进程的外发连接。需在容器启动阶段注入环境变量,强制约束其仅能访问预授权目标。
1、使用docker run命令启动容器时,传入ALLOWED_IPS和ALLOWED_PORTS环境变量。
2、将企业内部可信网段填入ALLOWED_IPS,例如192.168.10.0/24,172.16.0.0/12。
3、仅指定业务必需端口,如API服务端口8080和管理界面端口3000,禁止开放22、6379、3306等高危端口。
4、执行完整命令示例:docker run -e ALLOWED_IPS="192.168.10.0/24" -e ALLOWED_PORTS="8080" hermes-agent bash。










