selinux即(Security-Enhanced Linux)安全增强型Linux,它是一个Linux内核模块,也是Linux的一个安全子系统。
selinux有三种模式:
Enforcing:强制模式,在selinux运作时,已经开始限制domain/type。
permissive:警告模式,在selinux运作时,会有警告信息,但不会限制domain/type的存取。
disabled:关闭模式。
使用getenforce命令查看当前模式
selinux对文件的作用
当开启selinux后,selinux会给每个文件加载标签context,安全上下文必须配对,否则文件不能访问
例如:
开启selinux为Enforcing强制模式
在根目录下创建一个目录在此目录中新建一个文件,并且移动到ftp中的pub目录
用户登陆ftp查看文件
可以发现移动的文件看不到
使用ls -Z /var/ftp/
命令查看该文件的安全上下文
可以看到两个文件的安全上下文并不相同,因此不会显示
临时更改安全上下文
chcon -t public_content_t /westos/ -R
临时更改安全上下文
登陆ftp查看文件
(注意:chcon只是对安全上下文的临时修改,当系统selinux重启后,修改会失效)
永久修改安全上下文
semanage fcontext -a -t public_content_t '/westos(/.*)?'
(/westos(/.*)?'表示目录及目录里面的内容)
semanage fcontext -l | grep westos
restorecon -FvvR /westos/
(-R:递归;-vv:显示目录下的子目录或文件修改信息;-F:强制设置目录中文件和目录安全上下文一致)
安全上下文已经修改完成
selinux对服务的作用
在selinux开启(Enforcing)的状态下,登陆ftp来测试selinux对服务的开关作用
本地用户上传:
getsebool -a | grep ftp
(查看seLinux对ftp开关状态)
setsebool -P ftp_home_dir on
(允许本地用户上传文件)
登陆ftp,本地用户可以上传文件
注意:上传文件时需要将目录权限修改为775,所属分组为ftp,如下图:
匿名用户上传:
getsebool -a | grep ftp
setsebool -P ftpd_anon_write on
semanage fcontext -a -t public_content_rw_t /var/ftp/pub
restorecon -RvvF /var/ftp/pub/
使用匿名用户上传文件:
(注意:setenforce 0 (警告)1(拒绝),设置成0以后,在/mnt下建立的文件mv到/var/ftp/pub下可见 会有警告 cat /var/log/audit/audit.log 查看报错)
安装setroubleshoot ,可以对selinux错误日志,可以提供解决方案
yum install setroubleshoot-server.x86_64
cat /var/log/audit/audit.log
(记录selinux采集的日志)
cat /var/log/messages
(记录日志和解决方案)