seccomp 是个好东西
💡
原文中文,约2700字,阅读约需7分钟。
📝
内容提要
在实现 git 商城时,作者遇到收款问题,决定让卖家在仓库中放置 js 脚本处理支付。为确保安全,作者使用 seccomp 过滤系统调用,限制 node 进程的权限,仅允许访问必要文件,从而在沙箱环境中运行,防止安全风险。
🎯
关键要点
- 在实现 git 商城时,作者遇到收款问题,决定让卖家在仓库中放置 js 脚本处理支付。
- js 脚本在用户支付时运行,生成支付链接,支持网页或支付宝、微信的 scheme 地址。
- 作者希望以子进程方式运行 node,而不是将其嵌入主程序,以确保安全性。
- 即使不使用 root 权限,node 仍可能进行危险操作,如挖矿、偷数据等,因此需要限制其权限。
- 作者使用 seccomp 过滤系统调用,限制 node 进程的权限,仅允许访问必要文件。
- seccomp 通过 BPF 代码过滤系统调用,允许或拒绝执行,并可将决定反馈给父进程。
- 父进程可以根据需要允许或拒绝子进程的系统调用,确保 node 进程在沙箱环境中安全运行。
❓
延伸问答
seccomp 是什么,它的作用是什么?
seccomp 是一种系统调用过滤机制,可以限制进程的系统调用权限,从而提高安全性。
在实现 git 商城时,作者如何处理支付问题?
作者让卖家在仓库中放置 js 脚本,用户支付时运行该脚本生成支付链接。
为什么作者选择使用子进程运行 node?
作者希望通过子进程运行 node,以确保安全性,避免将其嵌入主程序。
使用 seccomp 过滤系统调用的具体步骤是什么?
使用 seccomp_init 初始化,添加规则 seccomp_rule_add_exact,最后通过 seccomp_load 安装过滤器。
seccomp 如何处理被拒绝的系统调用?
seccomp 可以通过将决定反馈给父进程,父进程可以选择允许或拒绝子进程的系统调用。
作者如何确保 node 进程在沙箱环境中安全运行?
作者通过 seccomp 限制 node 进程的权限,仅允许访问必要的文件,从而确保安全。
➡️