[qemu][seccomp]虚拟化安全sandbox技术分析

前言: libvirt-4.3搭配qemu-2.12使用,如果使用默认的编译选项,可能会让qemu无法正常启动虚拟机。会报出来“qemu-system-x86_64: -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny: seccomp support is disabled”的错误。 好吧,老习惯,分析代码。 分析: 1, seccomp support is disabled

在编译的时候,没有打开CONFIG_SECCOMP编译选项。

从configure文件上来看,如果安装了libseccomp就是默认打开的;再或者就是--enable-seccomp和--disable-seccomp来控制。 2,libvirt /etc/libvirt/qemu.conf中通过seccomp_sandbox来控制。

0是关闭,1是打开,-1是自动检测。注意,如果这里没有配置,libvirt则会自动检测。 那么就会出现上文的状况,libvirt的检测逻辑中,没有发现当前版本的qemu不支持sandbox,启动参数中带有了sandbox配置,导致qemu报错。 解决办法就是安装libseccomp,执行congfigure时添加--enable-seccomp,清空/var/cache/libvirt/qemu/capabilities重启libvirtd即可。 3,libseccomp 下载代码https://github.com/seccomp/libseccomp libseccomp的代码量比较小,大约有几部分: a,本地的db。用来保存seccomp的规则。 b,bpf生成。用来生成bpf代码。 c,使用syscall加载到kernel。prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, program); 4, PR_SET_SECCOMP

看一段man page,大意是说通过prctl的 PR_SET_SECCOMP可以限制进程使用syscall。更多的话,需要参考内存文档。 5,gvisor Google搞了一个大新闻,开源了gvisor,地址https://github.com/google/gvisor 套路复杂很多,主要是为了容器使用的。 容器是直接运行在host os上的,可以访问host上的所有syscall,安全性上确实还不够。gvisor可以在一定程度上弥补这一点。 相比之下,虚拟机则不是,qemu使用到syscall集中于epoll,pread,pwrite,ioctl等比较有限的范围内。

原文发布于微信公众号 - AlwaysGeek(gh_d0972b1eeb60)

原文发表时间:2018-05-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

DNS服务器4013警告信息的解决方法

今天例行维护域控,发现一直出现DNS无法启动,一直在提示4013,感觉很不可思议。对比另外一台辅助域控的设置,都没有问题。只好一步一步的来细致的检查,终于被我找...

3446
来自专栏主机笔记

windows2003为iis添加伪静态规则

最近开始使用一个新的cms,网站由于是基于thinkphp开发的,而服务器还是古老的windows2003,所以一些伪静态的问题导致网站始终安装不成功。 可能以...

3038
来自专栏Linyb极客之路

微服务之服务编排浅析

1132
来自专栏PHP技术大全

grafana+prometheus快速搭建MySql监控系统实践

对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环;如果大家使用阿里云的RDS会感觉到其监控功能非常...

2153
来自专栏CSDN技术头条

DC/OS 的安装与部署

2016年4月,Mesosphere开源了他们开发的DC/OS (数据中心操作系统),引起了广泛的关注,虽然开源版本和他们的企业版本应该还有一些差距,但是我们仍...

5567
来自专栏腾讯云容器服务团队的专栏

在腾讯云容器服务上添加外部 DNS 服务器

本文先介绍k8s-dns的原理,然后再具体说明添加外部DNS服务器的步骤。后续我们将把这个功能做到产品中来,支持客户通过控制台来添加外部DNS服务器。

1.4K1
来自专栏运维技术迷

chattr命令

chattr命令用来改变文件属性。这项指令可改变存放在ext2/3/4文件系统上的文件或目录属性。 一、文件或目录属性 1.1 属性 这些属性共有以下8种模式...

3465
来自专栏24K纯开源

mac下利用Breakpad的dump文件进行调试

一、前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况。这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处...

6869
来自专栏gaoqin31

redis故障记录

最近线上的redis出现无法访问的现象,redis-cli能进入,但是任何命令都提示需要密码验证,以前一直都没有设置密码的,重启redis后正常,没过多久又出现...

2882
来自专栏星汉技术

虚拟机:Linux系统安装

3397

扫码关注云+社区

领取腾讯云代金券