安全 · 开源 skills

更新于 · MIT 开源

AI 让破解越来越便宜。
收钱的服务器,得守得更彻底。

在阿里云做云安全的那几年,我处置过 200 起木马入侵和“云助手下发指令”这类高级攻击。后一种攻击者根本不碰你的 SSH:拿到一把泄露的云账号 AccessKey,从控制台发一条命令,整批服务器同一分钟被种上后门。

现在,攻击正在变得便宜。过去拆一个 App、一段混淆过的前端、一个小程序,要熟练的逆向工程师花上几天;现在把代码丢给 AI,签名算法、接口地址、你以为藏好的密钥,往往几分钟就摆在面前。扫描器也换上了 AI:换着身份、自己猜路径、读懂你的报错再试下一次。

所以规则变了:客户端里没有秘密,只有服务器上的验证算数。混淆、加壳只能拖慢 AI 几分钟;真正挡住它的,是服务器把每一笔金额重新算一遍、每一条付款通知回查一遍、每一次额度变化都对得上账,再加上一套就算密钥泄露也打不穿的云上防线。

我把这些经验整理成 6 个 Claude Code skills。装上之后,让 AI 用攻击者的思路,先把你的服务器、云账号和支付链路查一遍。用 AI 防 AI。

我们的服务器过去 24 小时 36,758次请求 911次在找密钥 / 配置文件 94个 IP 正在封禁 看实时数据 ›
在 GitHub 获取 或者 下载 zip

装上就能用

复制三行命令,然后在 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/

不是纸上写的:我们的生产环境每天按它在跑

安全防护实时大屏,公开页面,IP 已脱敏。

安全防护实时大屏:24 小时请求、拦截、密钥探测、封禁,攻击来源地图和攻击类型

AI 逆向时代,防守的四条底线

  1. 客户端里没有秘密前端、App、小程序里的签名算法、接口和密钥,都当作攻击者已经看过。能产生钱的密钥一个都不放在客户端。
  2. 金额只信服务器价格、数量、折扣、额度全在服务器重算;付款通知验签之后再去网关回查;入账用原子更新,每笔只算一次。
  3. 云账号比 SSH 更要紧云控制台、AccessKey、云助手,拿到任何一个就等于拿到所有机器的 root。主账号开两步验证,所有 Key 禁止下发命令,操作审计设告警。
  4. 用 AI 防 AI每天让 AI 用攻击者的思路审昨天的改动;运行时对账告警兜底:余额只能因为有记录的充值变多。

里面有什么

两条主线:服务器加固,别让人进来;支付安全,进来了也偷不走钱。另外四个是它们的配套。

01
sec-server 服务器加固 主线 别让人进来
  • 云账号比 SSH 更要紧:一把泄露的 AccessKey,就能通过云助手绕过 SSH 给所有机器下命令
  • SSH 只认密钥、关 root;Docker 发布的端口不走 ufw,“只放行内网”的规则可能根本没生效
  • 装了自动更新不等于在装:有的镜像把安全更新源注释掉了

附:server-audit.sh 只读体检

02
sec-payment 支付安全 主线 进来了也偷不走钱
  • AI 逆向时代客户端里没有秘密:价格、数量、额度全部服务器重算
  • 付款通知先验签名,再去网关回查;每笔钱只入账一次,流水号唯一索引兜底
  • 余额只能因为有记录的充值变多:每 15 分钟对账,多出来的找不到来源就报警

附:PHP / Node 回调验签 + 幂等入账代码

03
sec-edge 挡爬虫和扫描 坏请求越早拦越便宜
  • 源站只接受 CDN 来的连接,伪造的真实 IP 头没用
  • .env、.git、wp-login 这类路径直接断开,不进应用
  • 限制每个 IP 同时占几个动态请求:几十个并发也占不满进程池

附:nginx / fail2ban 模板、exposure-check.sh 外部体检

04
sec-secrets 密钥和加密存储 出现一次就当已经泄露
  • Key 不进 git 历史、日志、网址参数、前端、截图和与 AI 的聊天
  • 高敏感数据:密文绑定到这条记录,两把钥匙分开放
  • 备份用公钥加密,服务器被攻破也解不开历史备份

附:secret-scan.sh 扫 git 全部历史

05
sec-watch 监控和恢复 出事几分钟内知道
  • 每次 SSH 登录成功都推送:不是你本人,就是出事了
  • 整台机器挂了服务器自己发不出告警:再加两个地区的外部监控
  • 没恢复过的备份不算备份:每季度解密、导入、对行数

附:ssh-login-alert.sh、backup-encrypt.sh

06
sec-audit AI 安全审计 两个模型审,第三个挑错
  • 两种模型各自独立审同一批文件,再交给另一个逐条找反证
  • 每天审昨天的改动,再按日期轮换抽查一个高风险模块
  • 附 24 类我们真实审出来过的问题,照着查

附:审计报告模板

只有一个下午,先做这 5 件事

按顺序做,每一件都能独立完成。

  1. SSH 关掉密码登录和 root 登录sudo sshd -T | grep -Ei 'passwordauth|permitroot' 看最终生效的值,两个都要是 no。
  2. 看清楚公网上开了哪些端口ss -tlnp 和 docker ps 各看一遍。数据库、Redis 只绑内网,公网只留 22、80、443。
  3. 确认安全更新真的在装/etc/apt/apt.conf.d/50unattended-upgrades 里 -security 那一行前面不能有 //。
  4. 付款回调加上回查和原子入账验签之后拿订单号去网关查真实状态;入账用 UPDATE … WHERE status = 'pending',影响行数是 1 才加钱。
  5. 打开 SSH 登录推送,做一次加密备份并恢复这两件事决定了出事之后你多久能知道、能不能救回来。

我们自己审出来过的问题(节选)

都出现在正常运行的网站上,现在都已经修好。你的代码里大概率也有几条。

新人礼能反复领换个 IPv6 地址、Gmail 加个点就算新用户;先查后写,并发 10 次能领 10 份。
撞库计数能被清零任何人登录成功会清掉这个 IP 的失败次数:试几次密码、登一下自己的号,永远不锁。
并发能把余额扣成负数扣费没有先预扣,余额很少的账号同时发很多请求。
转发的参数和计费的参数不是同一份数量只在估价时截断到上限,转给上游的还是用户传的原始值。
员工能接管客户账号有“修改客户”权限的人能重置密码、关掉两步验证,然后花客户的余额。
反向代理能被拼到内部接口路径里的 ..、%2e、%2f 绕过了只放行的前缀。
Key 进了日志有的 API 把 Key 放在网址参数里,明文进了 nginx 日志和外部日志平台。
来历不明的登录公钥云控制台绑定的密钥,删了重装系统又会被写回去。

完整的 24 类和修法在 sec-audit里。

用之前读一下

作者

Santoso,雅加达,做云计算和系统架构。

履历是个人经历,所列机构与本项目没有合作或背书关系。

常见问题

免费吗?能商用吗?

免费,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