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是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
一、查看警告日志
cat /var/log/audit/audit.log
1. 先清空警告日志
2. 查看配置文件,修改selinux 的选项为enforcing (强制启动)
注:当SELINUX 在enforcing 与disabled 之间进行切换时,需要修改配置文件后,reboot重启
重启后,利用getenforce 命令查看selinux 状态
3. 在/mnt 目录下建立文件后移动到默认发布目录下,再用匿名用户登陆查看
匿名用户登陆后并没有看到westos1 文件
4. 查看警告日志
发现关于vsftpd 的警告
5. 查看文件安全上下文
当安全上下文和ftp (public_content_t)默认安全上下文不一致时,且selinux 为enforcing 状态,远程连接时无法查看
6. 用命令修改selinux 状态
setenforce 0 #将状态从enforcing (强制状态) 修改为permissive (警告状态),无需重启即能生效
setenforce 1 #将状态从permissive (警告状态)修改为enforcing (强制状态),无需重启即能生效
7. 当selinux 为permissive 状态时,远程连接可以查看安全上下文不同的文件,但依然会有警告
二、修改安全上下文
1. 修改文件
chcon -t public_content_t /var/ftp/westos1
在强制状态下,安全上下文与ftp 默认的一致时,远程连接时即能查看
2. 修改目录及目录内的文件
chcon -t public_content_t dir/ -R
先在其他目录下建立目录及其目录下的文件,并将其移动到默认发布目录下
查看其安全上下文
修改安全上下文并查看
此时,远程连接即能查看该目录及其内容
三、永久修改安全上下文
之前用chcon 命令修改的安全上下文只是临时的,重启后还是会恢复到原有状态
首先创建目录及其目录下的文件,并查看其安全上下文
永久修改安全上下文:semanage fcontext -a -t public_content_t '/dir(/.*)?' #可修改目录及目录中所有
当目录有内容时,可以用restorecon 命令查看
该命令还能显示,原有的安全上下文
四、sebool 值
1. 查看ftp 的sebool值设置
getsebool -a | grep ftp
各项设置默认关闭
其中,ftp_home_dir 为关闭状态,此时,本地用户连接后无法上传文件
修改ftp_home_dir 为开启状态后,此时,本地用户连接后就可以上传文件
五、selinux 的排错
提供日志的插件
setroubleshoot-server.x86_64