[关闭]
@dyk 2015-12-17T04:23:11.000000Z 字数 1746 阅读 392

RollBack

Rollback of XSM


Introduction of XSM

由Xen提供的一个安全模块,允许管理员或者开发者对Xen domain进行细粒度的权限控制管理。

XSM的强制控制管理的实现基于一个FLASK(Flux Advanced Security Kernel)安全架构。FLASK的目标是根号的进行安全系统模块的逻辑分离。

SELinux在linux当中相当于Linux安全增强,审计以及策略机制的集合。FLASK Xen Security Module也是在Xen中扮演这样的一个角色。

开启FLASK

在Config.mk

  1. XSM_ENABLE = y
  2. FLASK_ENABLE = y

之后进行编译Xen,编译完成之后需要在启动项中加入xenpolicy

  1. 修改/etc/default/grub 加入 GRUB_CMDLINE_XEN_DEFAULT='flask=permissive|enforcing|late|disabled'
  2. 在Xen的启动项中加入 module /boot/flask/xenpolicy-$XEN-VERSION

创建带XSM security lables的domain

平常的domu的配置可以在cfg文件中进行一下的配置

  1. seclabel='system_u,system_r:domU_t'

FLASK Policies

新的模块能够在/tools/flask/policy/policy/modules.conf中进行开启

  1. <module_name> = on

同时需要在相应的目录下tools/flask/policy/policy/modules/文件夹中创建te以及if文件。

policy types

  1. 声明
  2. type new_type_t;
  3. xen_t样式赋予两个attribute——xen_type, mls_priv
  4. type xen_t, xen_type, mls_priv

定于允许dom1对dom2进行的hypercall,例如下面允许dom0_t对security_td调用两个系统调用

  1. allow dom0_t security_t:security check_context
  2. allow <source type> <target type>:<security class> { <hypercall>s };

policy roles

roles是高于types的一层。可以由多个types定义一个角色。这一层能够限制type,能够阻止将一个错误的type分配给一个VM。
新的角色分配可以使用下面两行的定义语句。

  1. role system_r;
  2. role system_r types { xen_type domain_type };
  3. 或者使用‘-’进行剔除某些types,例如:
  4. role vm_r;
  5. role vm_r types { domain_type -dom0_t };

policy users

在最高层,定义了users。定义在/tools/flask/policy/policy/users中。
例如,FLASK sample中定义了3个用户,system_u, customer1与customer_2。语法如下:

  1. user <user name> roles { <role1> <role2> };

policy constraints

之允许在一定的情况下允许hypercall的调用,例如

  1. constrain grant { map_read map_write copy } ( 这两个hypercall允许,只有当下列的三个条件满足
  2. u1 == system_u or
  3. u2 == system_u or
  4. u1 == u2
  5. );

Macros

宏定义在Flask policy中被大量的使用了,基本能在.if文件中找到。

Security Classes

定义在xen/xsm/flask/policy/access_vectors。并且将每一个hypercall都进行了分类。每一个类最多可以有32个成员。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注