linux系列目录linux安全系列目录-seccomp一、Seccomp沙箱安全机制二、安装依赖包三、SeccompStrictMode四、SeccompFilterMode(Seccomp-BPF)-推荐五、有用资源六、总结linux安全系列目录-seccomp涉及seccomp安全模块问题时,可以参照本文档案例进行扩展分析,可以多访问文中的链接,很有用。一、Seccomp沙箱安全机制通过使用libseccomp,开发人员可以定义一组允许的系统调用规则,从而限制应用程序的系统调用(systemcall)集合,阻止对潜在危险的系统调用的调用。它最初被用于cpushare这个项目,让人们可以出
我正在运行一个应用程序,它构建ICMPECHO请求并将其发送到几个不同的IP地址。该应用程序是用Crystal编写的。尝试从crystaldocker容器中打开套接字时,Crystal引发异常:权限被拒绝。在容器中,运行ping8.8.8.8没有问题。在macOS上运行应用程序,我没有问题。阅读https://docs.docker.com/engine/security/apparmor/和https://docs.docker.com/engine/security/seccomp/apparmor和seccomp上的页面我确信我找到了解决方案,但问题仍然没有解决,即使以docke
1、背景介绍Seccomp(全称“Securecomputing”),早在2.6.12版本(2005年3月8日)就引入到内核中,是通过只允许内核支持部分syscall(系统调用),或者拒绝内核认为可能有危险的syscall集合的方式,来限制一个进程所支持的syscall调用。最初,Seccomp只允许使用read、write、_exit、sigreturn4个系统调用,一旦调用其他系统调用时,内核就会发送SIGKILL信号终止进程。因此也被称为Seccomp-strict模式。但由于其限制过于严格,导致实际上,并没有多少应用能够用的上这一安全特性。直到3.5版本(2012年7月12日)的内核中
我正在研究seccomp-bpf的实现细节,这是从3.5版开始引入Linux的系统调用过滤机制。我从Linux3.10查看了kernel/seccomp.c的源代码,想问一些关于它的问题。从seccomp.c来看,seccomp_run_filters()似乎是从__secure_computing()调用的,以测试当前进程调用的系统调用。但是查看seccomp_run_filters(),作为参数传递的系统调用编号并未在任何地方使用。看起来sk_run_filter()是BPF过滤器机器的实现,但是sk_run_filter()是从seccomp_run_filters()调用的
我正在研究seccomp-bpf的实现细节,这是从3.5版开始引入Linux的系统调用过滤机制。我从Linux3.10查看了kernel/seccomp.c的源代码,想问一些关于它的问题。从seccomp.c来看,seccomp_run_filters()似乎是从__secure_computing()调用的,以测试当前进程调用的系统调用。但是查看seccomp_run_filters(),作为参数传递的系统调用编号并未在任何地方使用。看起来sk_run_filter()是BPF过滤器机器的实现,但是sk_run_filter()是从seccomp_run_filters()调用的
我开发了一个Linux应用程序,它运行从用户(参赛者)那里收到的不受信任的代码。更具体地说,该应用程序是一个onlinejudge,类似于UVaOJ,SPOJ和Codeforces,但主要是BOCAOnlineContestAdministrator.我的OJ支持C、C++、Java和Python。目前,我的OJ非常不安全,因为在运行不受信任的代码时没有沙箱。所以我正在寻找最好的方法来做到这一点。该解决方案的主要要求是:用户(设置比赛的人,而不是参赛者)必须尽可能少地设置我的应用程序。我认为gitclonerepo,make,sudomakeinstall,pjudgeinstall,
我开发了一个Linux应用程序,它运行从用户(参赛者)那里收到的不受信任的代码。更具体地说,该应用程序是一个onlinejudge,类似于UVaOJ,SPOJ和Codeforces,但主要是BOCAOnlineContestAdministrator.我的OJ支持C、C++、Java和Python。目前,我的OJ非常不安全,因为在运行不受信任的代码时没有沙箱。所以我正在寻找最好的方法来做到这一点。该解决方案的主要要求是:用户(设置比赛的人,而不是参赛者)必须尽可能少地设置我的应用程序。我认为gitclonerepo,make,sudomakeinstall,pjudgeinstall,
我想在我的服务器上执行任意(有潜在危险的)二进制文件。因此,我使用objcopy将“main”符号重命名为“other_main”,这样我就可以链接到我自己的小main函数中,该函数为RLIMIT_CPU设置适当的值,并且切换SECCOMP在调用other_main之前标记。到目前为止,我对这个解决方案非常满意。现在的问题是,第3方程序代码可能包含对malloc的一些调用,这可能会立即终止程序(不允许使用sbrk)。因此,我想在设置应该由malloc/realloc/calloc/free使用的SECCOMP之前预先分配一些合理大小的数组(例如20MB)。不幸的是,我不知道如何存档最后
我想在我的服务器上执行任意(有潜在危险的)二进制文件。因此,我使用objcopy将“main”符号重命名为“other_main”,这样我就可以链接到我自己的小main函数中,该函数为RLIMIT_CPU设置适当的值,并且切换SECCOMP在调用other_main之前标记。到目前为止,我对这个解决方案非常满意。现在的问题是,第3方程序代码可能包含对malloc的一些调用,这可能会立即终止程序(不允许使用sbrk)。因此,我想在设置应该由malloc/realloc/calloc/free使用的SECCOMP之前预先分配一些合理大小的数组(例如20MB)。不幸的是,我不知道如何存档最后
我需要能够fork一个进程。据我了解,我需要设置安全选项。我已经尝试使用docker命令执行此操作,并且效果很好。但是,当我在docker-compose文件中执行此操作时,它似乎什么也没做,也许我没有正确使用compose。dockerdockerrun--security-opt=seccomp:unconfineddlvdebug--listen=:2345--headless--log./cmd/main.goDocker-compose设置docker-compose.ymlnetworks:backend:services:example:build:.security_o