这不是假设性的风险。有安全研究者把互联网上所有暴露在公网的 OpenClaw 实例收录在一个公开索引页(https://openclaw.allegro.earth),任何人打开都能看到你的实例。如果你部署了 OpenClaw 但没有配置访问认证,你的服务很可能已经在这个列表里了。
风险在哪里
公网暴露的服务没有任何访问保护,接口、控制台、API 端点就对所有人开放。具体后果有三个。
配置、历史对话、任务结果、日志、用户令牌,这些都可能被任何访问者直接读取,不需要破解,直接访问就行。
攻击者可能利用你的实例跑垃圾任务、恶意请求代理,把 VPS 资源消耗干净,触发云服务商限流甚至封号。你付钱买的服务器在帮别人干活。
暴露的服务也可能被用作攻击其他目标的跳板,牵连你在同一台 VPS 上跑的其他服务。
为什么会被扫描到
互联网上有大量自动扫描器在持续扫描所有可达的端口和路径。OpenClaw 的端口和路径结构是公开的,只要没有认证,扫描器就能识别并记录。这不需要针对你,是全网自动进行的。
怎么修
不管用的是 Hostinger、Vultr、DigitalOcean 还是其他 VPS,下面这几步现在就要做。
第一步:配置 Nginx 反向代理加 Basic Auth
安装工具:
sudo apt install nginx apache2-utils -y
创建认证文件:
sudo htpasswd -c /etc/nginx/.htpasswd 你的用户名
配置 Nginx:
server {
listen 80;
server_name 你的域名或IP;
location / {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启 Nginx:
sudo systemctl restart nginx
第二步:开启 HTTPS
明文 HTTP 会把认证凭证暴露在网络上,用 Let's Encrypt 解决:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d 你的域名
证书自动配置,每90天自动续期。
第三步:关闭不必要端口
把 OpenClaw 的直接访问端口从公网关掉,只通过 Nginx 代理访问:
sudo ufw deny 8080
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow ssh
sudo ufw enable
第四步:安装 Fail2ban
防止攻击者暴力破解密码:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban && sudo systemctl start fail2ban
创建规则:
sudo nano /etc/fail2ban/jail.local
写入:
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 3600
重启:
sudo systemctl restart fail2ban
第五步:只自用的话走 SSH 隧道
如果 OpenClaw 只是自己用,最干净的方案是完全不对公网暴露,通过 SSH 隧道访问:
ssh -L 8080:localhost:8080 用户名@你的服务器IP
本地浏览器访问 http://localhost:8080 即可,服务器上的 8080 端口完全不需要对外开放。
确认自己是否在索引里
打开 https://openclaw.allegro.earth 搜索你的服务器 IP。如果出现了,说明实例已经被收录,按上面步骤加固后续扫描就无法再识别你的服务。
最后
加认证、上 HTTPS、关不必要的端口,这几件事花不了多长时间,但不做的代价可能很大。安全配置不是等出问题了再做,是在出问题之前做完。