目录
1.概述
1.1.概念
1.2.作用
1.3. SELinux与传统的权限区别
2. SELinux工作原理
2.1.名词解释
2.1.1.主体(Subject)
2.1.2.目标(Object)
2.1.3.策略(Policy)
2.1.4.安全上下文(Security Context)
2.2.文件安全.上下文查看
2.2.1.命令
2.2.2.分析
3. **SELinux的启动、关闭与查看**
3.1.三种配置模式
3.3.模式管理
3.3.1.查看当前工作模式
3.3.2.临时开启selinux/临时关闭selinux
3.3.3永久性关闭
3.3.4注意:
3.4selinux的状态
3.4.1命令
3.4.2分析
3.5selinux配置文件
4.修改安全上下文
4.1chcon命令
4.1.1作用
4.1.2格式编辑
4.1.3示例
4.3semanage命令
4.3.1作用
4.3.2格式1
4.3.3常用命令组
4.4实验
4.4.1实验1
4.4.2实验2
●SELinux (Security-Enhanced Linux)是美国国家安全局在Linux开源社区的帮助下开发的一
个强制访问控制(MAC, Mandatory Access Control)的安全子系统,用于各个服务进程都受
到约束,使其仅获取到本应获取的资源
●例如,电脑上下载了一个美图软件,当您全神贯注地使用它给照片进行美颜的时候,它却在后台
默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情
●SELinux域限制:对服务程序的功能进行限制,以确保服务程序做不了出格的事情
●SELinux安全上下文:对文件资源的访问限制,确保文件资源只能被其所属的服务程序访问
●传统的文件权限与账号的关系:属于自主访问控制DAC (Discretionary Access Control) ,当
某个进程想要对文件进行访问时,系统就会根据该进程的所有者/用户组,并比较文件的权限,若
通过权限检查,就可以访问该文件,注意:各种权限设置对root用户是无效的
●SELinux的以策略规则制定特定程序读取特定文件:属于强制访问控制MAC (Mandatory
Access Control),可以针对特定的进程与特定的文件资源来进行权限的控制,即使你是roo在
使用不同的进程时,你所能取得的权限并不-定是root, 而得要看当时该进程的设置而定,则就
可以针对进程来进行访问控制
●主体就是想要访问文件或目录资源的进程。
●进程得到资源流程:由用户调用命令,由命令产生进程,由进程去访问文件或目录资源。
●自主访问控制系统中(Linux默认权限中),靠权限控制的主体是用户
●强制访问控制系统中(SELinux中) ,靠策略规则控制的主体则是进程
●目标就是需要访问的文件或目录资源
●Linux系统中进程与文件的数量庞大,限制进程是否可以访问文件的SELinux规则数量就更加烦
琐,如果每个规则都需要管理员手工设定,那么SECinux的可用性就会极低,所以SELinux 默
认定义了两个策略来制订规则
●2个默认策略
。-targeted:默认策略,用于限制网络服务(dhcpd, httpd, named, nscd, ntpd,
portmap, snmpd, squid,以及syslogd) ,对本机系统的限制极少
。-mls:多级安全保护策略,该策略限制更为严格
●所有进程、文件和目录都有自己的安全上下文
●进程是否能够访问文件或目录,就要其安全上下文是否匹配
●例:找对象时,男人看作主体,女人就是目标,男人是否可以追到女人(主体是否可以访问目
标) ,主要看两人的性格是否合适(主体和目标的安全上下文是否匹配) ,但两个人的性格是否
合适,是需要靠生活习惯、为人处世、家庭环境等具体的条件来进行判断的(安全上下文是否匹
配是需要通过策略中的规则来确定的)
●解释:
。当主体(进程)访问目标(文件)时,首先和SELinux中定义好的策略进行匹配
。若符合定义的规则,且主体的安全上下文和目标的安全上下文匹配则允许访问文件
。若安全上下文比较失败,则拒绝访问,并通过AVC (Access Vector Cache, 访问向量缓
存,主要用于记录所有和SELinux相关的访问统计信息)生成拒绝访问信息
注意:最终是否可以访问到目标文件,还要匹配产生进程(主体)的用户是否对目标文件拥有
合理的rwx权限
●重点为: system_u:object r:admin_home_ t:s0
●安全上下文用冒号分为四个字段
●身份标识(Identify) :相当于账号方面的身份标识,有三种类型:
root:安全上下文的身份是root,默认会映射为unconfined _u,可以通过以下命令查看映
射关系:
。system. u:系统用户身份,其中" u”代表user
。注意: user字段只用于标识数据或进程被哪个身份所拥有,系统数据的user字段是
system_ u,用户数据user字段是user. u
。seinfo命令
■作用:查询身份、角色等信息,需要安装才可使用
■格式: seinfo -参数
■参数:
●**角色(roI2) :表示此数据是进程还是文件或目录包含(了解就行) **
object_r:代表该数据是文件或目录,r代表role (角色的意思)
system_ r:进程r代表role
●类型(type) :
最重要,进程是否可以访问文件,主要就是看进程的安全上下文类型字段是否和文件的安全上
下文类型字段相匹配
在默认的targeted策略中
。类型字段在主体(进程)的安全上下文中被称作域(domain)
。类型字段在目标(文件或目录)的安全上下文中被称作类型(type)
。进程的域与文件的类型是否匹配需要查询策略规则
●灵敏度:用s0、s1. s2来命名,数字为灵敏度分级,数值越大,灵敏度越高
●例:查看之前http的默认网页文件信息
●enforcing:强制模式,启用SELinux, 将拦截服务的不合法请求
●permissive:宽容模式,启用SELinux, 遇到服务越权访问时,只发出警告而不强制拦截
●disabled:关闭模式,sELinux没有运行
●enforcing状态与permissive状态之间切换时,不需要重启系统
●enforcing. permissive 与disabled之间切换时,必须重启系统才会生效
●手动修改目标的上下文策略
●例1:单独修改
●例2:按照范例文件修改
●例3:使用httpd服务演示安全上下文值的设定
●用于管理SELinux的策略,查询/修改/增加/删除文件的默认SELinux安全上下文,管理网络端口、
消息接口等
●选项: login|userlport|interface |fcontext |translation|boolean,注意: fcontext查询
默认安全上下文(重要)
●参数
●文件:设置对象文件或目录
●使用httpd服务的端口演示selinux的设定
●使用ssh设置新端口号,设置selinux端口策略