Linux安全之SELinux理解( 二 )


getenforce 命令
 

  • 可能返回结果有三种:Enforcing、Permissive 和 DisabledDisabled 代表 SELinux 被禁用Permissive 代表仅记录安全警告但不阻止可疑行为Enforcing 代表记录警告且阻止可疑行为 。
 
# getenforce Disabled2.3 改变 SELinux 运行状态
临时修改
 
  • setenforce命令setenforce [ Enforcing | Permissive | 1 | 0 ]
  • 注意事项该命令可以立刻改变 SELinux 运行状态,在 Enforcing 和 Permissive 之间切换,结果保持至关机 。若是在 setenforce 0 之后服务或者程序依然无法运行,那么就可以肯定不是 SELinux 导致的 。
 
# 强制访问控制 setenforce 1 # 自主访问控制 setenforce 0
永久修改
 
  • 修改配置文件/etc/sysconfig/selinux或者/etc/selinux/config
  • SELINUX=disabled为主开关,只有它打开了,设定访问控制才有意义
 
# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted2.4 布尔型规则
因为在SELinux中有些类型没有被启动或者你需要关闭某些类型,这个时候你就需要使用下列命令来修改SELinux的类型了
 
获取类型状态
 
  • getsebool命令:
  • 语法:getsebool [-a] [boolean]
 
# 获取所以类型及其运行状态 getsebool -a # 获取某个类型及其运行状态 getsebool httpd_t
修改类型状态
 
  • setsebool命令:
  • 语法:setsebool [ -P] boolean value | bool1=val1 bool2=val2 ...
 
# 临时修改 setsebool httpd_t 1 # 永久修改 setsebool -P httpd_t 13. SELinux 政策
配置文件 /etc/sysconfig/selinux 还包含了 SELinux 运行策略的信息,通过改变变量 SELINUXTYPE 的值实现 。
两种策略
 
  • targeted 代表仅针对预制的几种网络服务和访问请求使用 SELinux 保护
  • strict 代表所有网络服务和访问请求都要经过 SELinux
 
注意事项
 
  • 可以在/etc/sysconfig/selinux中对其进行修改
  • RHELFedora默认设置为 targeted,包含了对几乎所有常见网络服务的 SELinux 策略配置,已经默认安装并且可以无需修改直接使用 。
 
# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=strict4. SELinux 访问控制4.1 三种访问控制方法
  • 强制类型(TE)TE 是针对型政策所采用的主要访问控制机制
  • 基于?色的访问控制(RBAC)它以 SELinux 用户(未必等同 Linux 用户)为基础,但缺省的针对型政策并未采用它
  • 多层保障(MLS)普遍不获采用,而且经常隐藏在缺省的针对型政策内
4.2 访问控制规则解析 
所有进程及文件都拥有一个 SELinux 的安全性脉络,我们这里查看 Apache 的主页,来看看 SELinux 安全性脉络来看看它们如何运作的 。
# 查看 Apache 的主页 # -Z 这个标旗在多数工具内都可用来显示 SELinux 安全性脉络(例如:ls -Z、 ps axZ 等) # ls -Z /var/www/html/index.html -rw-r--r-- username username system_u:object_r:httpd_sys_content_t /var/www/html/index.html
SELinux 脉络栏
 
  • system_u:object_r:httpd_sys_content_t基于「用户:角色:类型:多层保障」在上述例子里,「用户:角色:类型」栏都有显示,而「多层保障」是隐藏的在缺省的针对型政策里,类型是用来实施「强制类型」的重要字段,在这里它是 httpd_sys_content_t
  • httpd进程的 SELinux 安全性脉络从类型栏可以看出 Apache 在 httpd_t 这个类型本地内运行
 
# ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd


推荐阅读