SELinux基础/激活或关闭SELinux/改变object的域/启用或关闭程序功能
获取更多帮助 《SELinux权威指南》
或许应该叫:如何理解Windows
Linux比Windows更安全,这样说不合理.
安全等级: A>B>C>D
Linux(c2) Windows(c2)
GUI界面:MAC>Windows
图形工作站:mac
Windows 专业普及计算机系统。图形不如mac,又不够安全。
SELinux基础
1)访问模型
Linux原有访问模型:自主访问控制 DAC
安全隐患: 进程所能访问资源的范围 为用户所能访问的资源范围
1
2
3
4
5
<code>后门: rootkit程序</code>
<code>进程被胁持:</code>
<code> </code><code>基于进程作为跳板,就有了进程属主的权限 </code>
<code> </code><code>root</code>
<code> </code><code>普通用户--> 查看其他文件 --> 找到漏洞,提权操作</code>
SELinux访问模型: 强制访问机制 MAC
类似sandbox机制:进程启动在一个沙箱内部,
为进程运行,启用一个专用的沙箱
<code>sandbox 沙箱: 最小资源集合</code>
<code>进程脱离控制时,不能访问用户所有能访问的文件</code>
2)SELinux工作级别
<a href="https://s2.51cto.com/wyfs02/M00/A4/E7/wKioL1mz6YWBNZtlAAARy9FjKRo167.png" target="_blank"></a>
strict 严格级别 每个进程都受到SELinux的控制
targetted 有限个进程受SELinux控制,监控容易被入侵的进程
3)SELinux工作方式
subject(主语) operation(谓) object(宾)
subject: 进程
operation: 取决于被操作对象支持的模式 及 操作者是否在有效区域内
object: 进程、文件、用户
文件: operation: open, read, write, close, chown, chmod
活动范围(域):
subject: domain
object: type
4)SELinux安全标签显示
SELinux为每个文件、进程提供安全标签
查看:
进程:ps axuZ
- 没有激活SELinux
<code>例如:- root </code><code>26238</code> <code>3.0</code> <code>0.4</code> <code>4936</code> <code>1076</code> <code>pts/</code><code>0</code> <code>R+ </code><code>21</code><code>:</code><code>24</code> <code>0</code><code>:</code><code>00</code> <code>ps axuZ</code>
文件: ls -Z 显示SELinux的安全上下文
<code>例如:-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg</code>
user:role:type
user: SELinux的user
role: 角色,类似linux的组
type: 类型, 沙箱的范围
subject: domain
object: type
object能被subject操作只有:type是domain的子集:domain == type 或 domain包含type
激活SELinux
1)配置文件位置:
<a href="https://s4.51cto.com/wyfs02/M01/A4/E8/wKioL1mz7FvQCZUuAAAcFRya6Cg261.png" target="_blank"></a>
2)SELinux状态
获取SELinux当前状态
<code>getenforce</code>
设定状态:当前有效,重启失效
<code>setenforce </code><code>#</code>
<code> </code><code>0 设定为permissive</code>
<code> </code><code>1 设定为enforce</code>
<a href="https://s2.51cto.com/wyfs02/M01/06/36/wKiom1mz7VDR3iMBAAATLYWfOQs953.png" target="_blank"></a>
enforcing 强制:受限的进程必然受限,不受限的进程不受限。
permissive 允许:受限的进程违规操作不会禁止,但会被记录于审计日志中。 日志位置:/var/log/audit.log
disabled 关闭
3)激活或关闭SELinux
开启selinux: disabled --> enforcing/permissive
<code>sed</code> <code>-i </code><code>'s,SELINUX=disabled,SELINUX=enforcing,'</code> <code>/etc/selinux/config</code>
开启SELinux必须重启,在/重新挂载后,重新对所有文件打标才可以对selinux操作
<a href="https://s1.51cto.com/wyfs02/M01/06/37/wKiom1mz7_jRvdMRAAAWGGVlWv0453.png" target="_blank"></a>
关闭selinux:enforcing/permissive --> disabled
<code>sed</code> <code>-i -r </code><code>'s@(SELINUX=)(enforcing|permissive)@\1disabled@'</code> <code>/etc/sysconfig/selinux</code>
激活SELinux后
1)进程访问文件的安全上下文
1)、进程的属主对文件的权限,通过
2)、文件的type是否是进程domain的子集
进程查看规则库,查看进程所属的domain是否被授权了能够访问文件所属type
是:能访问
否:被SELinux规则所拒绝,并记录至日志文件中 /var/log/audit.log,审计:在合理的使用范围内,进程对文件可执行的合理的操作
<code>SELinux的规则库:</code>
<code> </code><code>规则:哪种域能访问哪种或哪些和类型内文件</code>
<code> </code><code>法无授权即禁止 --> 在SELinux规则库中没有定义的规则,均被禁止</code>
<code>进程如何访问非本域domain的文件?</code>
<code> </code><code>修改文件的type 属于进程domain即可</code>
2)改变文件所属的域
<a href="https://s2.51cto.com/wyfs02/M00/A4/E8/wKioL1mz8j7DcRerAAAMximtTWI905.png" target="_blank"></a>
使用示例
<a href="https://s3.51cto.com/wyfs02/M01/06/37/wKiom1mz_DTwQUgKAAAeYlq1EjQ343.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M02/A4/E8/wKioL1mz_DSis3ydAABBWOIy1ss324.png" target="_blank"></a>
3)还原标签
<a href="https://s5.51cto.com/wyfs02/M00/06/37/wKiom1mz_JTj5robAAAWQqJTMmI406.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M01/A4/E8/wKioL1mz_KbRnxK7AAB1UB72zBI888.png" target="_blank"></a>
4)设定程序功能开启或关闭
默认对于某些程序的功能,相对安全级别较低的功能,将被SELinux自动被禁止,例如ftp的匿名用户:任何用户可以上传文件
获取程序功能sebool
getsebool -a 所有程序功能
getsebool ftp_home_dir
设置程序功能
setsebool [-P] sebool=value
-P 永久有效,将修改的结果保存至策略库中 (需要一定时间:找到规则库,设定,转换为binary格式 )
例如:
setsebool ftp_home_dir 1
setsebool ftp_home_dir 0
setsebool ftp_home_dir on
setsebool ftp_home_dir off
本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1964022,如需转载请自行联系原作者