自由决定的访问控制:基于用户和组的模型,标准的用户/组/其他权限安全模型
强制访问控制:基于对象并由更加复杂的规则控制,SELinux安全模型
SELinux:用于确定哪个进程可以访问哪些文件、目录和端口的安全规则
SELinux上下文:每个文件、进程和端口都具有特别的安全标签,策略用它来确定某个进程能否访问文件、目录和端口
SELinux上下文的种类:用户、角色、类型、敏感度
目标策略根据类型上下文来制定自己的规则,类型上下文以_t结尾
eg:
httpd_t:web服务器的类型上下文
http_port_t:web服务器的端口类型上下文
httpd_sys_content_t:/var/www/html中的文件和目录的类型上下文
tmp_t:/tmp 和/var/tmp 中的文件和目录类型的上下文
ps、ls、cp、mkdir都是用-Z来显示或设置SELinux上下文
SELinux的三种模式:
强制模式enforcing:不仅记录而且提供保护,主动拒绝访问尝试tmp_t 的文件
许可模式permissive:用于对问题进行故障排除,会记录在强制模式下拒绝的交互,暂时允许访问selinux正在限制的内容
禁用模式disable:完全禁用selinux,需重启系统才能彻底禁用,或切换为另一模式
getenforce:显示当前使用的有效selinux模式
setenforce:修改当前的selinux模式,0 表示许可模式,1表示强制模式
另一种方法:启动时将参数传递给内核,
传递内核参数enforcing=0,系统进入许可模式
enforcing=1,系统进入强制模式
指定selinux=0参数,表示禁用SELinux
selinux=1参数,表示启用SELinux
设置默认SELinux模式
使用配置文件/etc/selinux/config来更改默认的SELinux模式
传递selinux=和enforcing=内核参数会覆盖在/etc/selinux/config中的任何默认值
更改SELinux上下文
通常父目录的上下文会分配给新建文件(适于vim,touch,cp),若文件是在其他位置创建并且权限得以保留,那么原始SELinux上下文将不会发生改变(mv,cp �Ca等)
chcon:将文件上下文更改成已指定为该命令参数的上下文,-t指定上下文的类型
eg: chcon �Ct httpd_sys_content_t /virtual
restorecon:更改selinux上下文的首选方法,不会明确指定上下文,使用selinux策略中的规则来确定应该是那种上下文
eg:
定义SELinux默认文件上下文规则
Semanage fcontext 命令用于显示或修改restorecon命令用来设置默认文件上下文的规则,使用扩展正则表达式来指定路径和文件名,fcontext规则中最常用的扩展正则表达式是(/.*)?:匹配/后跟任意数量的字符,它将会匹配在表达式前面列出的目录并递归,restorecon命令是policycoreutil软件包的一部分,semanage是policycoreutil-python软件包的一部分
eg:semanage fcontext -a -t httpd_sys_content_t ‘/virtual(/.*)?’
restorecon /virtual
SElinux布尔值
是更改SELinux策略行为的开关,可以启用或禁用的规则
getsebool:显示selinux布尔值及其当前值
setsebool:修改selinux布尔值
-P 修改selinux的策略,并使修改永久保留
semanage boolean -l:显示布尔值是否为永久值,并提供该布尔值的简短描述
semanage Boolean -l �CC:仅列出进过本地修改的SELinux布尔值状态