我们有一个应用程序,它将 C++、C 或 Java 文件作为输入,执行它并向客户端显示输出。可以采取哪些最佳措施,以避免执行程序的服务器中出现与安全相关的问题。例如,C++程序可以打开一个fstream并在我们的服务器上创建一个自定义文件
我知道一些做法,例如:
- 以普通用户身份运行
- 编写我们自己的沙箱脚本,不允许系统调用等。
哪种方法最好?
答案1
在专门用于这些任务的专用计算机上或在虚拟环境中运行它。
答案2
编译,然后在仅包含必要库的 chroot 环境中以专用用户身份执行。
答案3
关于什么SELinux?
SELinux 可以通过非常精确的规范来控制每个用户、进程和守护进程允许哪些活动