SELinux简介
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的 实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的 任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。 [1]
大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
seLinux内核级加强型火墙作用:
1.每个文件有一个标签CONTEXT(安全上下文),一个文件的安全上下文和程序的安全上下文匹配时,访问时被允许的,否则访问失败(这个程序可以看什么类型的文件)
2.默认情况下,ftp一些功能开启,给程序加了sebool开关,可以控制服务功能的开启和关闭
命令:
setenforce 0 #设置selinux为警告
setenforce 1 #设置selinux为强制
getenforce #查看selinux的状态
注意:
seLinux的配置文件为/etc/sysconfig/selinux,更改selinux的状态后要reboot重启,否则不会生效
enforcing 和 permissing都是开启,disabled是关闭
enforcing(强制) 访问被拒绝,也会产生警告信息,查看/var/log/messages
permissing(警告) 访问不被拒绝,但是会产生警告信息
实验1:将别的目录下的文件移动到/var/ftp目录下,在disable的状态下可以看到文件,但是在enforcing下不能看见文件
在selinux=disabled时,可以看见文件hellofile2
在selinux=enforcing时,不能看见hellofile2文件
安全上下文不一致
怎么处理SELinux中出现的问题
在enforcing状态下会有安全上下文显示,但是在disabled状态下没有安全上下显示
ls -Z 查看文件的安全上下文
临时更改安全上下文
chcon -t public_content_t /mnt/ -R
注意:将/etc/sysconfig/selinux更改为disabled,重启,再改为enforcing,设置消失
永久更改安全上下文
semanage fcontext -a -t public_content_t '/mnt(/.*)?'
在selinux=enforcing状态下如何上传??
第一步:在/etc/vsftpd/vsftpd.conf文件中设定
anon_upload_enable=YES
第二步:更改权限
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
此时在disable或者permissing情况下可以上传
更改为enforcing,不能上传,这就需要执行接下来的一步
第三步:设定匿名用户可以上传
setsebool ftp_home_dir on #本地用户可以上传
setsebool ftpd_anon_write #匿名可以上传
第四步:再一次更改/var/ftp/pub的权限
chcon -t public_content_rw_t /var/ftp/pub
注意:如果不添加这一条命令,则会出现553的错误
在客户端测试:可以在/var/ftp目录下上传文件
setroubleshoot软件
作用:做selinux排错
/var/log/audit/audit.log中是selinux的日志
软件分析报错日志,生成解决方案/var/log/messages中会有解决方法