本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安世加的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作!
欢迎各位添加微信号:asj-jacky
加入安世加 交流群 和大佬们一起交流安全技术
SELinux
SELinux(Security-Enhanced Linux)是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
SElinux的前世今生
SELinux出现之前,Linux上的安全模型叫DAC(Discretionary Access Control 自主访问控制)。DAC的核心思想很简单,就是:进程理论上所拥有的权限与执行它的用户的权限相同。比如,以root用户启动firefox,那么firefox就有root用户的权限,在Linux系统上能干任何事情。
显然,DAC太过宽松了,所以各路高手想方设法都要在Android系统上搞到root权限。那么SELinux如何解决这个问题呢?原来,它在DAC之外,设计了一个新的安全模型,叫MAC(Mandatory Access Control 强制访问控制)。MAC的处世哲学非常简单:即任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限。凡是没有出现在安全策略配置文件中的权限,进程就没有该权限。
关于DAC和MAC:
-
Linux系统先做DAC检查。如果没有通过DAC权限检查,则操作直接失败。通过DAC检查之后,再做MAC权限检查。
-
SELinux中也有用户的概念,但它和Linux中原有的user 不是同一个概念。比如,Linux中的超级用户 root 在SELinux中可能就是一个没权限,没地位,打打酱油的"路人甲"。当然,这一切都由SELinux安全策略的制定者来决定。
SELinux的模式
-
enforcing:既阻止用户的违规行为,同时又对违规行为作日志记录
-
permissive:不对违规行为作阻止,只记录日志
-
disabled:SELinux不开启
获取当前的工作模式:getenforce
修改工作模式:
也可以通过图形化工具管理,yum install policycoreutils-gui 安装插件,然后 system-config-selinux 启动图形化界面。
安全属性
Linux中有两种东西,一种死的(Inactive),一种活的(Active)。活的东西就是进程,而死的东西就是资源(文件、套接字等)。他们之间就是一种操作和被操作,或者说使用与被使用的关系。进程能发起动作,例如它能打开文件并操作它。而文件只能被进程操作。SElinux Policy语言就是将死的和活的东西都给打上"标签",通过"标签"将系统内的资源(包括进程)分成不同的角色(比如:用户、客体),进而对整个系统资源(包括进程)进行合理安全的管控。
在SELinux世界里,每种东西都会被赋予一个安全属性,官方说法叫Security Context ,也可以理解为上面所提到的"标签"。通过每个资源的属性,对他们进行归类管理。Security Context(以后用SContext表示)是一个字符串,由四部分组成,被分为两类:进程SContext和资源SContext。根据SELinux规范,完整的SContext字符串为:user : role : type : range range是可选项,表示安全级别。
查看文件或文件夹的SContext:ls Z 文件 或 ls -dZ 文件夹查看进程的sContext:ps -auxZ
修改SContext:我们一般修改的是type字段
布尔值:布尔决定是否在运行时应用某些规则
获取端口的标签:semanage port -
lSELinux日志机制:
如果SElinux的监听服务开启,setroubleshootd(RHEL5/6)/auditd(RHEL7),SElinux相关的日志存放在/var/log/audit/audit.log文件中。如果SElinux的监听服务没有开启,则日志机制会被 rsyslog 代理监听,SElinux相关的日志就会被存放在/var/log/messages文件中
相关链接:
本文始发于微信公众号(安世加):Linux系统安全(二) | SELinux入门
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论