/LSM-based-RBAC

基于角色访问控制的Linux安全模块

Primary LanguageC

LSM-based-RBAC

基于角色访问控制的Linux安全模块

模块介绍

Linux安全模块(LSM)是Linux内核的一个轻量级通用访问控制框架,但在内核2.6.x后,LSM模块不再运行动态加载到内核,而需要将模块编译进内核,于是需要编写Makefile以及Kconfig,除kernel/security/GomoLSM中的Makefile和Kconfig可以直接复制使用外,kernel/security中的Makefile以及Kconfig应该在当前内核源码所提供的内容上添加

模块功能

模块启用与关闭

通过role_manager -state可以查看模块当前的状态,如果为Disable,该模块不干预访问控制,当为Enable时才干预访问控制。通过-enable可以激活模块,通过-disable可以禁用模块

avatar

角色管理

查询角色

通过role_manager进行角色管理,通过-s选项为显示当前的角色信息,配合参数user2role可以显示出用户所对应的角色信息,配合参数roles可以显示出角色所拥有的权限

avatar

由图1可知,role1既不具备创建文件的权限也不具备修改文件名的权限

avatar

通过dmesg可以看到模块所输出的提示信息

avatar

role2拥有创建文件的权限但不拥有修改文件名的权限

avatar

avatar

avatar

avatar

对于角色没有涉及的其他权限,采用默认DAC,该模块不做限制

增加角色

通过-ra 角色名 权限可以加入新的角色,其中权限的给出方式为按顺序给出该该模块针对的操作是否允许被访问,为0表示不允许,为1表示允许,该模块只是基于LSM对RBAC的简单尝试,当前只针对文件创建与文件重命名这2个操作提供访问控制,下面创建一个对所有操作都允许的新角色role_new

avatar

角色分配

通过-ua uid 角色名可以将角色赋予到对应用户上

修改角色

通过-uc uid 角色名可以更新uid用户的角色,如下将user1更换为role_new

avatar

通过-rc 角色名 权限可以更新角色的权限,如下将role_new的权限都取消

avatar

删除角色

通过-ud uid可以取消uid用户所分配的角色

avatar

通过-rd 角色名可以删除角色

avatar

内核编译

/boot/config-'uname -r'拷贝到源码根目录中,并重命名为.config,然后make menuconfig即可进行配置编译选项(如果失败需要apt-get install libncurses5-dev),对LSM而言,进入Security options

avatar

将该模块选上,而将SELinux、Yama等其他安全模块都取消

avatar

再将该模块选为默认安全模块

avatar

接着即可编译内核: make bzImage -jN && make modules -jN && make modules_install && make install 修改grub后重启,新的安全模块即可生效