1.selinux功能
selinux:内核级加强型火墙
selinux是用来保护系统安全性的一个插件
(1)seliux关闭状态时:
在/mnt/中建立文件,文件安全上下文为空,文件被移动到ftp默认发布目录中可以被访问,ftp程序安全上下文为空
用户可以上传文件
(2)当selinux开启后,以上功能操作均失败
不能访问新移动到ftp目录下的linuxfile文件,不能上传文件
selinux功能:
当selinux开启会给系统中的每一个文件及每一个程序加载安全上下文
特定安全上下文的程序只能访问特定安全上下文的文件
当selinux开启会对服务本身相对不安全的功能加载开关sebool并且设定开关为关闭状态以保证服务安全性
当需要此功能时需要超级用户手动调节
2.selinux状态
getenforce ##查看selinux状态
状态类型:
Disabled ##关闭
enforcing ##强制
permissive ##警告
setenforce 0|1 ##0表示警告模式 1表示强制模式
selinux开关:
vim /etc/sysconfig/selinux
SELINUX=[selinux的状态]
reboot #当Disabled <----> [enforcing|permissive] 都需要重启
强制(enforcing)和警告(permissive)的区别:
强制模式,既会警告,也会限制访问;警告模式,只会警告,不会限制访问
强制模式下:
警告模式下:
3.安全上下文
(1)安全上下文的临时更改
chcon -t 安全上下文 文件
chcon -R -t 安全上下文 目录
chcon -t public_content_t /var/ftp/linuxfile
lftp 访问服务器会发现此文件可被访问成功
selinux 关闭(disabled)重启后,更改安全上下文的文件(linuxfile)的安全上下文还是更改后的安全上下文(public_content_t);
在上一步的基础上,selinux 开启(enforcing)重启后,更改安全上下文的文件(linuxfile)的安全上下文会变为最初它本身的安全上下文(mnt_t)
(2)永久更改目录或文件的安全上下文
mkdir /ftpuserdir/westosdir
设定student用户登陆ftp服务时默认家目录为/ftpuserdir,当用student用户登陆ftp时/ftpuserdir中的内容无法访问,因为selinux安全上下文不匹配
semanager fcontext -a -t public_content_t /ftpuserdir(/.)?
##此命令只添加列表信息,当前不生效,(/.)? 表示目录中将要出现的内容(目录本身和里面的所有内容都会固定)
semanager fcontext -l | grep ftpuserdir ##内核安全上下文列表中有信息
restorecon -RvvF /ftpuserdir/ ##刷新文件安全上下文,vv表示目标不止一个,有很多个
4.sebool 值
SEBOOL: 是selinux 对服务功能能添加的开关
getsebool -a | grep ftp ##查看ftp的功能开关
setsebool -P ftpd_anon_write=1|on ##表示开启此匿名用户写的功能,-P 永久生效
注意:
初始的/var/ftp/pub目录的安全上下文是public_content_t,只能访问不能读写,所以在做实验前需要去重新贴标签(安全上下文)为public_content_rw_t,之后再去做测试就不会受到影响
5.selinux的排错(setrouble)
(1)dnf install setroubleshoot-server-3.3.19-1.el8.x86_64 -y ##安装排错服务程序
在/mnt目录下新建文件coffee,移动到/var/ftp目录下,当匿名访问这个共享发布目录时,不能浏览到coffee文件
(2)sealert -a /var/log/audit/audit.log ##分析日志并提供解决方案
读取/var/log/audit/audit.log里面的所有报告,并且分析里面所有报错的内容,提供给我们解决方式
setsebool -P ftpd_full_access 1,把这个打开了以后,selinux将不会对我们的ftp做任何的访问控制。所以这个打开后,我们的问题肯定就能解决了,但是安全性就变差了
运行/sbin/restorecon -v /var/ftp/coffee命令,可以刷新selinux策略,这个文件在当前是符合的,可以被访问,在重启系统之后就不符合了