SELinux
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SELinux相关的知识,希望对你有一定的参考价值。
Linux 系统的实现是基于MAC访问控制机制的SELinux;
访问控制机制又分为两类:
DAC:自主访问控制机制;
积极与文件或数据被文件系统赋予的访问权限(r,w,x)的方式实现的访问控制;
MAC:强制访问控制机制;
对于文件或数据的访问权限不是针对用户身份来设定,当某个用户发起某个进程之后,该进程是否能够操纵或处理此文件或数据,取决于进程和文件是否具备可以匹配的domain和type;
SElinux为每个文件提供了一套安全标签,也为每个进程提供了一套安全标签,这些安全标签可以称为SELinux的安全上下文(Security context);
user-identify:role:domain|type:sencitivity
user-identify:Selinux的用户身份标识,通常指用户的类型;
role:角色
domain|type:进程的域或文件的类型;
sencitivity:敏感度;
Selinux的策略库:
规则库:存放规则
规则:进程的那个域可以以哪种方式访问或操纵那些类型的文件,存放于/etc/selinux/targeted/policy目录中;
/etc/sysconfig/selinux文件中定义了SElinux的工作模式和使用的策略结果集;
image.png
SElinux的工作模式:
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
注意:
1.凡是从enforcing或premissive模式切换至disabled模式,或者从disabled模式切换至enforcing或premissive模式,都必须经过操作系统的重新引导才能生效;
2.从enforcing切换至premissive模式,可以使用命令行工具完成且立即生效;
setenforce命令:
setenforce - modify the mode SELinux is running in
setenforce [Enforcing|Permissive|1|0]
1:Enforcing
0:Permissive
getenforce命令:
getenforce - get the current mode of SELinux
注意:使用setenfoce命令修改的SELinux的工作模式会立即生效,但并非永久生效;
如果向SELinux的工作模式永久生效,需要修改/etc/sysconfig/selinux文件中的内容,并需要重新引导;
查看进程或文件的SElinux的安全上下文;
文件安全上下文查看:
ls -Z|--context
image.png
进程安全上下文查看;
ps -auxZ
ps -efZ
image.png
查看或修改策略中的内容:
getsebool命令:
getsebool - get SELinux boolean value(s)
-a:Show all SELinux booleans.
setsebool命令:
setsebool - set SELinux boolean value
-P:If the -P option is given, all pending values are written to the policy file on disk. So they will be persistent across reboots.
使用场景:支持二进制策略修改的系统服务;
vsftpd的匿名用户的上传功能被SELinux限制的场景:
~]# setsebool -P ftpd_anon_write on
~]# setsebool -P ftpd_full_access=1
samba服务中samba用户访问自己的家目录的共享结果被SELinux限制的场景:
~]# setsebool -P samba_enable_home_dirs on
samba服务中共享的目录是由管理员自行创建并指定的:
chcon -t samba_share_t /path/to/directory
semanage命令:
semanage - SELinux Policy Management tool
注意:如果没有此命令,需要安装policycoreutils-python程序包即可;
semanage port命令:
-a, --add
Add a record of the specified object type
-d, --delete
Delete a record of the specified object type
-m, --modify
Modify a record of the specified object type
-l, --list
List records of the specified object type
示例:
~]# semanage port -a -t http_port_t -p tcp 8088
以上是关于SELinux的主要内容,如果未能解决你的问题,请参考以下文章