一.SELinux简介
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是
Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux
默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
二.SELinux的简单应用
(1)使用vim编辑/etc/sysconfig/selinux
,主要用于开启或关闭
说明:
enforcing - SELinux security policy is enforced. 强制模式
permissive - SELinux prints warnings instead of enforcing. 警告模式
disabled - No SELinux policy is loaded. 处于关闭状态
SELINUX=disabled 默认采集的目录
(2)如何查看SELinux的运行状态
(3).切换状态
强制模式
警告模式
三.SELinuxd的安全上下文
所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的
在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文
比如:我们从别的地方移动一个文件到/var/ftp,而当我们登陆lftp之后,发现看不到该文件,是因为这个文件的安全上下文和/var/ftp的安全上下文不匹配,这就是selinux的保护机制,所以我们需要将这个文件的安全上下文修改和/var/ftp的达到一致
(1)在不同目录下创立文件
(2)将/etc下的westos1移动到/mnt下,使用ls -Z查看文件的安全上下文
发现二者的上下文不同,一个属于mnt,一个属于etc
注意:
mv是重命名的过程,文件的属性和权限不会改变(文件上下文类型不会改变)
cp新建的过程,文件的属性和权限会改变(会重新生成安全上下文)
(3)如何临时修改
chcon -t public_content_t /mnt/westos1
四.管理selinux 布尔(sebool)值
SELinux默认情况是关闭了很多服务,例如ftp
(1)查询
getsebool -a | grep ftpd
(2)开启ftp匿名用户上传
五.selinux的排错工具: setroubleshoot-server
(1)查看selinux排错工具软件包
(2)在/mnt下新建一个文件file,并将它移动到 /var/ftp下
(3)清空日志
lftp登录服务端,看不到自己建立的文件,这是由于安全上下文的关系
查看selinux的报错日志/var/log/audit/audit.log,会有报错信息产生
看/var/log/messages 日志,里面会有报错的解决方案(排错指令)
先安装setroubleshoot-server软件
再次清空日志信息方便测试
再次登录服务端并退出
selinux报错日志/var/log/audit/audit.log中仍有报错
但是/var/log/messages就不会有排错指令了