标签归档:SELinux

svirt 项目

「 sVirt 项目是一项社区工作,尝试集成强制访问控制 (MAC) 安全和基于 Linux 的虚拟化 (KVM)。」

「它构建于 SELinux 之上,提供一个基础架构来使管理员能够定义虚拟机隔离策略。
sVirt 可以开箱即用地确保一个虚拟机资源无法供任何其他进程(或虚拟机)访问,
这可由 sysadmin 扩展来定义细粒度的权限,例如将虚拟机分组到一起以共享资源。」

「 Svirt 确保一台虚机出现问题的虚拟机不会影响到主机操作系统。」

「 sVirt= SELinuxpolicy + libvirtdriver」

svirt-1

svirt-2

SELinux防御被轻易绕过?

“GNU/Linux厂商SuSE的安全研究人员Sebastian Krahmer成功的绕过了SELinux的白名单规则,Sebastian分析了漏洞利用的方法并且公开了PoC,由于在targeted规则的情况下,社区的维护人员都假设是安全的所以会给一些的程序root权限运行,可能这正是NSA所希望看到的;-)
著名的MAC(强制访问控制)开源实现SELinux是由NSA(美国国家安全局)于1990年代末发起的项目,于2000年以GPL自由软件许可证开放源代码,2003年合并到Linux内核中,过去10年中关于是否NSA在其中放后门的争论没有停过,一些人认为应该信任SELinux,因为它是以GPL自由软件许可证公开的源代码,也有人认为它是NSA参与过的项目,所以不应该信任。2013年Snowden曝光棱镜后更多的人极度的不信任NSA,认为NSA有对Android代码植入后门的前科,所以应该怀疑所有NSA积极参与的项目包括SELinux。目前MAC的开源实现里,SELinux主要由RedHat/CentOS/Fedora社区维护,Apparmor主要由OpenSuSE/Ubuntu社区维护,而以纵深防御著称的PaX/Grsecurity到目前未知因为厂商利益以及社区政治等各种原因,虽然被诸多操作系统抄袭( Linux/Windows/OSX),但一直未能进入Linux主干代码。”

https://github.com/stealth/troubleshooter

虚拟机在启动或者迁移(migrate)时失败(Unable to find security driver for label selinux)

环境el6(rhel/centos6)
报错信息如:

在设置selinux从enforcing到disabed状态时,出现虚拟机无法开启的错误。错误原因如上:
解决方法:
删掉相关的虚拟机内xml文件的seclable标签。

Linux 系统管理(EL7)-SELinux篇

1  概述

1.1 功能介绍

SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。[1]

大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。

众所周知,标准的UNⅨ安全模型是”任意的访问控制”DAC。就是说,任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他!

而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。

SELinux提供了比传统的UNⅨ权限更好的访问控制。。

1.2 工程依赖

工程源仓库搭建

2 环境搭建

2.1环境要求

2.2 环境搭建

1 安装软件

2 解压策略包,配置文件目录

3 以getty为例

4 根据audit2allow 工具查找avc的deny信息 ,并修改文件

2.3生成二进制策略

使用工具生产二进制策略:

2.4 工程调试

使用semodule工具测试

开启selinux为permission状态,并根据audit的日志进行定位分析,如有阻止策略再次进行添加和生成测试工作。

2.5 其他事项

1、    avc的信息要全局分析
2、    多次测试和重启机器测试,如有socket通信,要进行通信测试。
3、    一些规则没有被审计出来,但一样denial了程序的运行,需要使用semoudle –DB 将那些dontaudit的测试去除。-D 表示构建审计dontaudit的规则,-B表示重新rebuild。
You can build the policy configuration with the “dontaudit” rules removed by running “semodule -DB”. This will expose any hidden denials. To build the policy configuration with the “dontaudit” rules re-insterted run “semodule -B”

2.6 其他

描述项目研制过程中将采用的其他方面的内容。

sVirt(selinux)安全机制(libvrit,ceph/rbd)

svirt介绍:
「 sVirt 项目是一项社区工作,尝试集成强制访问控制 (MAC) 安全和基于 Linux 的虚拟化 (KVM)。」

「它构建于 SELinux 之上,提供一个基础架构来使管理员能够定义虚拟机隔离策略。
sVirt 可以开箱即用地确保一个虚拟机资源无法供任何其他进程(或虚拟机)访问,
这可由 sysadmin 扩展来定义细粒度的权限,例如将虚拟机分组到一起以共享资源。」

「 Svirt 确保一台虚机出现问题的虚拟机不会影响到主机操作系统。」

「 sVirt= SELinuxpolicy + libvirtdriver」

sVirt在系统上的试用:
在开启selinux的状态下进行测试使用:

启动虚机:

testforsvirt.img安全上下文已经发生变化:

sVirt libvirt在ceph的rbd上进行尝试:

使用ceph rbd块存储进行测试:

出现以下错误:

这个时候需要对libvirt进行认证设置
设置访问ceph的用户:

得到libvirt的key;

写入type等于’ceph’到secret.xml

生成secret文件的uuid。

将libvirt的密钥写入文件secret.xml

使用virsh设置密钥。

在testforsvirt_rbd.xml文件中写入以下设置;

查看安全上下文:

审计日志: