AI 让破解越来越便宜。
收钱的服务器,得守得更彻底。
在阿里云做云安全的那几年,我处置过 200 起木马入侵和“云助手下发指令”这类高级攻击。后一种攻击者根本不碰你的 SSH:拿到一把泄露的云账号 AccessKey,从控制台发一条命令,整批服务器同一分钟被种上后门。
现在,攻击正在变得便宜。过去拆一个 App、一段混淆过的前端、一个小程序,要熟练的逆向工程师花上几天;现在把代码丢给 AI,签名算法、接口地址、你以为藏好的密钥,往往几分钟就摆在面前。扫描器也换上了 AI:换着身份、自己猜路径、读懂你的报错再试下一次。
所以规则变了:客户端里没有秘密,只有服务器上的验证算数。混淆、加壳只能拖慢 AI 几分钟;真正挡住它的,是服务器把每一笔金额重新算一遍、每一条付款通知回查一遍、每一次额度变化都对得上账,再加上一套就算密钥泄露也打不穿的云上防线。
我把这些经验整理成 6 个 Claude Code skills。装上之后,让 AI 用攻击者的思路,先把你的服务器、云账号和支付链路查一遍。用 AI 防 AI。
装上就能用
复制三行命令,然后在 Claude Code 里直接说要做什么。
git clone https://github.com/roisantoso-id/lock-every-bit.git mkdir -p ~/.claude/skills cp -r lock-every-bit/skills/sec-* ~/.claude/skills/
- 「用 sec-server 给这台服务器做一次体检」
- 「按 sec-payment 检查一下我的付款回调」
- 「用 sec-audit 审一遍昨天的改动」
不是纸上写的:我们的生产环境每天按它在跑
安全防护实时大屏,公开页面,IP 已脱敏。
AI 逆向时代,防守的四条底线
- 客户端里没有秘密前端、App、小程序里的签名算法、接口和密钥,都当作攻击者已经看过。能产生钱的密钥一个都不放在客户端。
- 金额只信服务器价格、数量、折扣、额度全在服务器重算;付款通知验签之后再去网关回查;入账用原子更新,每笔只算一次。
- 云账号比 SSH 更要紧云控制台、AccessKey、云助手,拿到任何一个就等于拿到所有机器的 root。主账号开两步验证,所有 Key 禁止下发命令,操作审计设告警。
- 用 AI 防 AI每天让 AI 用攻击者的思路审昨天的改动;运行时对账告警兜底:余额只能因为有记录的充值变多。
里面有什么
两条主线:服务器加固,别让人进来;支付安全,进来了也偷不走钱。另外四个是它们的配套。
- 云账号比 SSH 更要紧:一把泄露的 AccessKey,就能通过云助手绕过 SSH 给所有机器下命令
- SSH 只认密钥、关 root;Docker 发布的端口不走 ufw,“只放行内网”的规则可能根本没生效
- 装了自动更新不等于在装:有的镜像把安全更新源注释掉了
附:server-audit.sh 只读体检
- AI 逆向时代客户端里没有秘密:价格、数量、额度全部服务器重算
- 付款通知先验签名,再去网关回查;每笔钱只入账一次,流水号唯一索引兜底
- 余额只能因为有记录的充值变多:每 15 分钟对账,多出来的找不到来源就报警
附:PHP / Node 回调验签 + 幂等入账代码
- 源站只接受 CDN 来的连接,伪造的真实 IP 头没用
- .env、.git、wp-login 这类路径直接断开,不进应用
- 限制每个 IP 同时占几个动态请求:几十个并发也占不满进程池
附:nginx / fail2ban 模板、exposure-check.sh 外部体检
- Key 不进 git 历史、日志、网址参数、前端、截图和与 AI 的聊天
- 高敏感数据:密文绑定到这条记录,两把钥匙分开放
- 备份用公钥加密,服务器被攻破也解不开历史备份
附:secret-scan.sh 扫 git 全部历史
- 每次 SSH 登录成功都推送:不是你本人,就是出事了
- 整台机器挂了服务器自己发不出告警:再加两个地区的外部监控
- 没恢复过的备份不算备份:每季度解密、导入、对行数
附:ssh-login-alert.sh、backup-encrypt.sh
- 两种模型各自独立审同一批文件,再交给另一个逐条找反证
- 每天审昨天的改动,再按日期轮换抽查一个高风险模块
- 附 24 类我们真实审出来过的问题,照着查
附:审计报告模板
只有一个下午,先做这 5 件事
按顺序做,每一件都能独立完成。
- SSH 关掉密码登录和 root 登录
sudo sshd -T | grep -Ei 'passwordauth|permitroot'看最终生效的值,两个都要是no。 - 看清楚公网上开了哪些端口
ss -tlnp和docker ps各看一遍。数据库、Redis 只绑内网,公网只留 22、80、443。 - 确认安全更新真的在装
/etc/apt/apt.conf.d/50unattended-upgrades里-security那一行前面不能有//。 - 付款回调加上回查和原子入账验签之后拿订单号去网关查真实状态;入账用
UPDATE … WHERE status = 'pending',影响行数是 1 才加钱。 - 打开 SSH 登录推送,做一次加密备份并恢复这两件事决定了出事之后你多久能知道、能不能救回来。
我们自己审出来过的问题(节选)
都出现在正常运行的网站上,现在都已经修好。你的代码里大概率也有几条。
完整的 24 类和修法在 sec-audit里。
用之前读一下
- 只对你自己的服务器和网站用。脚本都是只读检查,不攻击、不改配置。
- 你自己的自动拉黑可能会把你封掉。外部体检会访问
.env这类路径,先把自己的 IP 加进白名单,或者用手机热点跑。 - 不要把密钥贴给 AI。让它读
.env.example,不读.env;sec-secrets 里有 Claude Code 的禁读配置。 - 里面的数字是起步值。按你自己的流量调,调好的阈值别公开。
作者
常见问题
免费吗?能商用吗?
免费,MIT 许可证。可以改、可以商用、可以放进你自己的团队仓库,保留许可证声明就行。
只能在 Claude Code 里用吗?
每个 skill 就是一个文件夹加一份 SKILL.md,Claude Code 直接读;别的能读 Markdown 指令的 AI 编程工具也能用。脚本和 nginx、fail2ban 模板不依赖任何 AI,人照着做也行。
skill 是用什么语言写的?
SKILL.md 正文是中文,Claude 读中文没有问题;脚本、模板和代码示例不分语言。GitHub 上有中文、英文、印尼语、日语四种 README。
脚本会改我的服务器吗?
不会。server-audit.sh、exposure-check.sh、secret-scan.sh 都只读,只打印 OK / WARN / FAIL。要改什么由你决定,SKILL.md 里写了每一步怎么改、怎么回退。
为什么把安全做法公开?
这些是通用做法,防的是自动化扫描和常见漏洞,公开了攻击者也绕不过去。真正不该公开的是你自己调好的阈值、服务器地址和还没修的问题,这套 skills 里一个都没有。
可以拿去扫别人的网站吗?
不可以。只对你自己的服务器和网站用。对别人的网站做扫描,在很多国家和地区都违法。
觉得有用就点个 Star,转给身边做独立开发的朋友。发现写错了,或者有更好的做法,欢迎到 GitHub 提 Issue。
去 GitHub