selinux简介
1.selinux的概念
安全增强型Linux(Security-Enhanced Linux)简称selinux,它是一个Linux内核模块,也是Linux的一个安全子系统。
2.selinux的作用
让其应用程序运行在其所需的最低权限上,为经过修改过的Linux系统是使用自主访问控制的,用户可以自己请求更高的权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果授予其root权限,那么它就无所不能了
在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法替代它。这意味着那些潜在的恶意软件所能造成的损害可以控制到最小。
3.selinux的状态
状态 解释
Enforcing 警告并拒绝
Permissive 警告并允许
Disabled 关闭
注:产生的警告信息一般度会保存到/var/log/message或/var/log/audit/audit.log中。
4,查看selinux命令
getenforce ##selinux状态
如果状态显示为disabled,则会出现如下情况:
则证明由于selinx的关闭,即使/mnt/test/与/var/ftp/的安全上下文不同,但通过lftp命令还是可以看到test。
5,配置环境
vim /etc/sysconfig/selinux ##更改参数,开启selinux
reboot ##重启虚拟机
rm -rf /etc/vsftpd/* ##更新ftp的环境
yum reinstall vsftpd -y ##重新安装vsftpd
systemctl start vsftpd ##开启服务
selinux安全上下文
1,安全上下文是指一类定义某个进程允许做什么的许可和权限的集合
ls -Z file ##查看那文件的安全上下文
2,文件安全上下文对ftp服务的影响:
文件安全上下文限制了访问用户的权限,有利于系统的安全性
由上图可见:由于selinux为enforcing,/mnt/test与/var/ftp文件的安全上下文不一致,即使移动/mnt/test到/var/ftp时,匿名用户也无法看到test
3,文件安全上下文的更改
(1)文件安全上下文的临时更改
当selinux为Enforcing状态时
chcon -t public_content_t /var/ftp/test ##更改test的安全上下文为public_content_t
重后虚拟机之后,安全上下文会恢复原样
(2)文件安全上下文的永久更改:
semanage fcontext -l | grep /westos ##查看该文件是否有默认的安全上下文
semanage fcontext -a -t public_content_t '/westos(/.*)?' ##永久更改目录安全上下文,使用该命令后需同步
restorecon -FvvR /westos/ ##同步该目录的安全上下文
4,设定selinux的安全上下文,实现本地用户文件的上传
命令如下:
getsebool -a | grep ftp ##查看关于ftp的所有sebool的值
setsebool -P ftp_home_dir on ##打开selinux本地用户上传开关,-P为永久开启
chmod 775 /home/*
chgrp ftp /home/*
验证:
5,设定selinux的安全上下文,实现匿名用户文件的上传
vim /etc/vsftpd/vsftpd.conf ##在配置文件中打开匿名用户上传参数
systemctl restart vsftpd ##重启服务
setsebool -P ftpd_anon_write on ##打开selinux匿名用户上传开关
semanage fcontext -a -t public_content_rw_t /var/ftp/pub ##安全上下文加入可写的权限说明
restorecon -FvvR /var/ftp/pub/ ##同步该目录的安全上下文
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
selinux的模式
enforcing ##强制并拒绝
setenforce 1 ##警告并拒绝
setenforce 0 ##会有警告但是不会有拒绝
注意: 1)当selinux关闭时,该命令无法使用
2)使用该命令时只能切换到开启时的俩种状态,即Enforcing和Permissive
3)使用该命令切换selinux的状态时,不需要重启虚拟机
准备工作:
getsebool -a | grep ftp ##查看文件安全上下文开关
发现/pub下没有zll
(2)setenforce 1 模式
setenforce 1与enforcing的模式的作用是相同的
(3)setenforce 0
可以看到zll在/var/ftp下,有警告但是不会拒绝,即是在/mnt/zll与/var/ftp的文件上下名不同的情况下.
解决selinux的报错问题
出现的报错:
解决方案:
1,
semanage fcontext -a -t public_content_rw_t
# restorecon -R -v
# setsebool -P allow_ftpd_anon_write 1
2,系统必须有setroubleshoot-server-3.2.17-2.el7.x86_64软件
lftp的报错后,若是与slinux有关的报错的解决方案会出现生成在/var/log/message
rpm -qa | grep setroubleshoot //查看报错的文件
setroubleshoot-server-3.2.17-2.el7.x86_64 //报错的文件
> /var/log/message ##清空日志文件
yum install setroubleshoot-server-3.2.17-2.el7.x86_64 -y ##安装报错软件
cat /etc/log/message ##查看日志文件