linux 敏感标记 权限,闲话Linux系统安全(二)——强制访问控制(MAC)

本文介绍了Linux系统中强制访问控制(MAC)的概念,特别是SUID权限带来的安全问题。文章阐述了SUID的双刃剑特性,可能导致root权限滥用。随后,详细讨论了SELinux的原理、工作模式、策略结果集以及如何通过安全上下文增强系统安全性。此外,还提供了与SELinux相关的命令示例,帮助读者理解和管理MAC策略。
摘要由CSDN通过智能技术生成

安全秘笈第二式——不安全的特殊权限和强制访问控制(MAC)

在DAC的机制中,不管是所有权加权限的管理办法,还是文件系统访问控制列表(facl),都是非常强大的访问控制机制,均可以对文件资源进行比较有效的访问控制。但DAC的自主性太强,可以说文件资源的安全在很大的程度上取决于使用者个人的意志,因此这种安全似乎就被主观化了。尤其是对于root用户而言,不管是权限和所有权的限制,还是facl的管理控制,都仅仅能够限制root的误操作而已。

在CentOS或RHEL系统中,每一个服务都需要以守护进程的方式运行起来并在后台监听指定的套接字,比方说:实现DNS服务的bind软件需要一个名为named系统用户启动名为named的守护进程;MySQL服务的启动也需要一个名为mysql的系统用户来启动一个名为mysqld的守护进程,等等。如果类似这样的网络服务的TCP或UDP的会话被***者劫持,那么***者就可以冒用这些系统用户的身份。有人会说,没有什么大不了的嘛,这些连系统都无法登录的系统用户被劫持了也不会有什么危险啊。但是请记住,在CentOS或RHEL的文件系统中有三个特殊权限,即:SUID、SGID和Sticky,其中SGID如果设置在目录上,则在该目录中创建的所以新文件的属组都是从该目录上继承的该目录的属组;如果设置在文件上,则在该目录中如果包含了可执行文件的话,无论是谁发起的执行进程,改进程的属组都是该目录的属组。Sticky也被翻译为“粘滞位”,只能设置在目录上。凡是被设置了粘滞位的目录,即便用户对该目录有所以的rwx的权限,也只能管理属主是其自身的那些文件,禁止了对属主不为自己的所以文件的修改和删除等写操作。可以说这两个特殊权限还是有一定的方便管理和安全保证作用的。

但是,SUID可是一把非常锋利的双刃剑,用好了,方便管理所向披靡;用不好,那可就是为他人做嫁衣而置自己于死地了。

为什么这么说呢?我们一起来分析一下SUID这个特殊权限位。SUID只能设置在二进制文件上,也就是在CentOS或RHEL中的具有ELF可执行权限的二进制文件,我们所编写的shell脚本一般是无法设置这个权限的,这是一个很严格的限制。一旦在可执行的二进制文件上添加了SUID,则所有用户在执行这个程序以后,都是以这个文件的所有者的身份来进行。现在大家明白了么?在CentOS或RHEL中,根文件系统下的文件的属主绝大多数都是root,包括那些二进制文件,所以不管你是什么用户,一旦执行了设置了SUID的二进制文件,也就意味着能够以root用户的身份操纵这个二进制文件去访问所有属主为root的文件了。所以即便是无法登录到系统的系统用户,一旦因为这样的问题而获得root的身份之后,仍然可以为所欲为的。

比如说,CentOS或RHEL中的DNS服务在运行过程中,其进程会话被劫持,也就意味着***者已经获得了named用户的身份。此时,如果***者以named用户的身份,在/var/named/slaves目录中上传了一个带有SUID权限的二进制程序vim,这个vim跟系统中的vim是一模一样的,所需要的库也是一模一样的。于是,每次执行这个vim文件来查看系统中的其他文本文件的时候,都好像是root用户在执行这样的操作,那么接下来修改将文件修改成什么样子其实就看***者的心情了。

说了这么多,其实主要是想说明这样一个问题:传统的DAC固然能够有效的控制文件的访问,但是无法解决因为SUID等因素导致的root身份盗用带来的问题。

鉴于此,在防止root用户对资源误操作和权限滥用的问题上,就迫切需要行之有效的管理办法或解决方案,以增强系统的安全性和资源访问的安全性。

人们首先在文件系统上打起了主意。文件系统中被引入了一个新的挂载选项——nosuid,该选项不允许非root用户向文件系统中复制带有SUID的权限的文件,从而在一定程度上保证了root身份盗用的问题。但是这仍然是治标不治本的方法,最最核心的问题是root权限太大的问题。

于是,人们提出了强制访问控制(Mandatory Access Control——MAC,以下简称MAC)这一安全概念。MAC最早主要用于军方的应用中,通常与DAC结合使用。

首先让我们来了解两个至关重要的术语:

主体:

通常指用户,或由用户发起运行的进程或用户正在使用的设备。主体主动发起对资源的访问,它是系统中信息流的启动者。

客体:

通常是指信息的载体或从其他主体或客体接收信息的实体。主体有时也会成为访问或受控的对象,如一个主体可以向另一个主体授权,一个进程可能控制几个子进程等等,这时受控的主体或子进程也通常被认为是一种客体。

MAC是利用策略将访问控制规则“强加”给访问主体的,即系统强制主体服从访问控制策略。MAC的主要作用对象是所有主体及其所操作的客体(如:进程、文件等)。MAC为这些主体及其所操作的客体提供安全标记,这些标记是实施强制访问控制的依据。

系统通过比较主体和客体的安全标记来判断一个主体是否能够访问其要操作的客体。用户发起的进程无法改变其自身及其它客体的安全标记,利用这样的机制,系统可以比较有效地防止特洛伊******以及root身份冒用或盗用等安全威胁。

MAC一般与DAC共同使用,两种访问控制机制的过滤结果将累积,以此来达到更佳的访问控制效果。也就是说,一个主体只有通过了DAC限制检查与MAC限制检查的双重过滤装置之后,才能真正访问某个客体。一方面,用户可以利用DAC来防范其它用户对那些所有权归属于自己的客体的***;另一方面,由于用户不能直接改变MAC属性,所以MAC提供了一个不可逾越的、更强的安全保护层以防止其它用户偶然或故意地滥用DAC。

MAC的强制访问策略为每个用户、进程及文件赋于一个安全访问级别,即:

最高秘密级(Top Secret,一般标记为T);

秘密级(Secret,一般标记为S);

机密级(Confidential,一般标记为C);

无级别级(Unclassified,一般标记为U);

其级别为从高到低依次为:T>S>C>U,系统根据主体和客体的敏感标记来决定访问模式。通常情况下,访问模式包括:

下读(read down):用户级别大于文件级别的读操作;

上写(Write up):用户级别小于文件级别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值