GCP Ubuntu实例触发违规告警,无静态IP如何加固以支持网站与OpenVPN使用
GCP Ubuntu 实例安全加固实操方案
1. 先清除入侵残留(必做)
现有实例已经被入侵植入恶意程序,存在大量预置后门,直接修改配置无法彻底清除风险:
- 先备份实例中仅存的合法业务数据(NodeJS网页代码、私人配置文件等)
- 销毁原有实例,重装全新Ubuntu系统,不要复用原有系统盘
2. 身份认证加固(解决弱密码核心问题)
所有远程访问方式全部禁用密码认证,从根源阻断暴力破解攻击:
- 远程SSH登录仅用SSH密钥对认证,禁用密码登录、禁止root账号远程登录:
修改/etc/ssh/sshd_config配置:
执行PasswordAuthentication no PermitRootLogin nosudo systemctl restart sshd使配置生效 - NoMachine、系统用户账号全部设置16位以上包含大小写、数字、特殊字符的强密码,额外开启NoMachine的双因素认证功能
- 普通用户仅配置必要的sudo权限,禁止业务服务使用root账号运行
3. 端口与访问控制(适配无静态IP场景)
先删除GCP VPC防火墙中所有放行0.0.0.0/0的非必要规则,配合主机层面ufw防火墙做双层防护,默认拒绝所有入站请求:
- 公开业务端口(80/443):仅保留这两个端口对0.0.0.0/0放行,NodeJS服务不要直接监听公网端口,改为仅监听127.0.0.1本地端口,前端用Nginx做反向代理对外提供服务,避免NodeJS漏洞直接暴露在公网
- 私人服务端口(NoMachine、OpenVPN):
- 先修改两个服务的默认端口,将4000、1194改为不常用的高位端口(30000-65535区间),降低端口扫描命中概率
- 安装
knockd端口敲门服务,配置自定义端口敲门序列,只有你的客户端按指定序列访问端口后,GCP/主机防火墙才会临时将你当前的公网IP加入对应端口的白名单,超时自动移除,完美解决无静态IP无法做IP白名单的问题
- 执行以下命令配置主机ufw基础规则:
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
4. 入侵检测与监控配置
- 安装
fail2ban暴力破解防护工具,配置规则对SSH、NoMachine、OpenVPN的登录失败行为进行检测,短时间内多次失败直接封禁对应IP - 定期检查系统异常:执行
ps aux检查陌生进程、执行crontab -l以及查看/etc/cron.*目录下的文件排查恶意定时任务、用netstat -tunlp检查异常端口监听 - 配置GCP云监控告警,设置CPU使用率长期超过70%的告警规则,挖矿程序通常会占满实例CPU,异常时第一时间收到通知
5. 业务服务专项加固
- NodeJS网页服务:定期更新NodeJS版本及依赖包,修复已知漏洞,不要引入来源不明的第三方依赖,配置Nginx开启CSP、XSS防护等HTTP安全头
- OpenVPN服务:使用强加密算法,客户端认证采用证书+密码双因素模式,不要仅用密码认证,关闭客户端之间的互通权限,限制VPN用户的可访问范围
- NoMachine服务:关闭匿名访问权限,不需要使用时执行
sudo systemctl stop nxserver关闭服务,需要连接时再手动启动
内容的提问来源于stack exchange,提问作者sagar caset
相关产品推荐
相关产品推荐

