安全利器 — SELinux
在 Linux 系统中一切皆文件,资源也属于某种文件。用户在访问文件的时候,系统对权限(读、写 、执行)进行检查。只要用户对文件有足够的权限,就可以任意操作资源。root 用户对所有资源拥有所有权限,是个危险的存在。每年都会看到某职员一不小心把系统“干趴下”的新闻。这种权限管理的主体是用户,被称为 Discretionary Access Control ,DAC ,自主访问控制。
DAC 机制下,程序直接继承用户的权限。用户有权限,则用户启动的程序就有权限,恶意程序也有了发挥空间。DAC 让主体自主管理权限,实践中容易管理不当,基于读、写、执行的权限控制,也过于粗略。为了解决这个问题,Mandatory Access Control ,MAC ,强制访问控制,就诞生了。MAC 机制下,管理员定义好安全策略,用户行为被强制约束,避免发生意外。
一、初识 SELinux
SELinux 的价值 :实现 MAC 机制,增强抵御未知危害的能力。
SELinux 的出生 :NSA(美国国家安全局)和 SELinux 社区的联合项目。
SELinux 支持内核版本 :Linux Kernel 2.6.x 及以后版本。
SELinux 干了哪些活 :定义一套 MAC 的权限系统,对系统内的一切资源(文件)打上标记(安全上下文),使用安全策略来控制资源访问。用户同时通过 DAC 和 MAC 的检查,才能访问资源。
二、SELinux 安全上下文
安全上下文是 SELinux 的核心,格式由三部分组成:用户、角色、类型标识符:
格式 | USER:ROLE:TYPE[LEVEL[:CATEGORY]] |
---|---|
常见 USER | system_u 、root 、user_u |
常见 ROLE | staff_r 、user_r 、object_r 、secadm_r 、sysadm_r 、system_r |
TYPE | 类型强制访问的重要属性 |
LEVEL | 安全等级,目前已经定义的安全等级为 s0 - s15,等级越来越高 |
CATEGORY | 分类,目前已经定义的分类为 c0 - c1023 |
很多系统命令,如 ls
、 ps
、 id
,带有 -Z
参数,可以查看文件/进程的安全上下文。
selinux 的用户管理中,能跟踪一个登陆用户,即使用户通过 su
命令切换了身份,也被 selinux 视为同一个用户。
操作一:打开新的终端登陆 root
操作二:打开新的终端登陆 yishuguo