SElinux是美国国家安全局(NSA)对于强制访问控制的实现,是linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发的一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要的文件。SElinux默认安装在Fedora和RedHat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到。
DAC,自主访问控制,任何程序对其资源享有完全的控制权,每个用户或进程可以随意修改自己的文件的权限,将其他权限授予给其他人而具有任意的访问权限、所有/组+权限标记通常称为自主访问控制。
MAC,强制访问控制,一个进程能否访问某个资源,取决于运行这个进程的用户权限已经访问的资源的属主属组等属性。
Selinux有两种工作级别:
Strict:每个进程都受到selinux的控制;
Targeted:仅有限个进程收到selinux控制,只监控容易被入侵的进程;
Sandbox:subject operationobject
Subject:(主)process…:进程
Object:(宾)directory…:进程,文件,
文件:open,read,write,close,chown,chmod
Subject:domain
Object:type
Selinux为每个文件提供了安全标签,也为进程提供了安全标签;
user:role:type
user:selinux的user
role:角色
type:类型
通过ls –Z可以查看文件的标签:
同样可以查看进程的selinux属性:
selinux规则库:
规则:哪种域能访问哪种或哪些种类型的文件;
配置selinux:
Selinux是否启用;
给文件重新打标;
设定某些布型特性;
Selinux的状态:
enforcing:强制,每个受限的进程都必然受限;
permissive:启用,每个受限的进程违规操作不会被禁止,而被记录在审计日志中;
disabled:关闭;
相关命令:
getenforece:获取selinux的当前状态;
setenforce 0|1
0:设置为permissive
1:设置为enforcing
此设定重启系统无效,并且在selinux不处于disabled状态才能设定;
配置文件:/etc/sysconfig/selinux,/etc/selinux/config
SELINUX=[disabled][enforcing][permissive]
给文件重新打标:
chcon命令:
chcon - change file SELinux securitycontext
chcon [OPTION]... CONTEXTFILE...
chcon[OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
chcon[OPTION]... --reference=RFILE FILE...
-R:递归打标;
--reference=FILE:以FILE的标签为参照类型
-t TYPE:修改指定类型
-u:修改指定user
-r:修改指定role
恢复默认标
restorecon[-R] /path/to/somewhere
布尔型规则:
getsebool命令:
getsebool [-a] [boolean]
setsebool;
setsebool [ -PV] boolean value |bool1=val1 bool2=val2 ...