Linux系统中的selinux设定

一、selinux简介

selinux: 内核级加强型防火墙

作用:
对于文件的影响:特定的程序只能访问特定的文件(文件上加标签),
对服务的影响:seliux可以给服务加开关(bol值0和1)
selinux的三种状态:
enforcing   强制模式
permissive  警告模式
disabled   关闭

二、selinux安全上下文

安全上下文简介:
  所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的
  在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文
  比如:我们从别的地方移动一个文件到/var/ftp,而当我们登陆lftp之后,发现看不到该文件,是因为这个文件的安全上下文和/var/ftp的安全上下文不匹配,这就是selinux的保护机制,所以我们需要将这个文件的安全上下文修改和/var/ftp的达到一致

环境:  
rm -rf /etc/vsftpd/
yum reinstall vsftpd -y

vim /etc/sysconfig/selinux
改为enforcing

1.selinux文件测试
1.在/mnt/创建文件test
2.mv移动到/var/ftp/
Linux系统中的selinux设定_第1张图片
3.在另一台主机lftp登录看不到test文件
在这里插入图片描述

解决办法:
cd /var/ftp
chcon -t public_content_t test
ls -Z test
在这里插入图片描述
在这里插入图片描述
注意:
mv是重命名的过程,文件的属性和权限不会改变(文件上下文类型不会改变)
cp新建的过程,文件的属性和权限会改变(会重新生成安全上下文)
(1)ls  -Z  查看文件的安全上下文
(2)ls  -Zd   查看目录的安全上下文

2.selinux临时性测试
mkdir /westos
touch /westos/file1
在这里插入图片描述
ls -Z /westos/
在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
在这里插入图片描述
测试:
在这里插入图片描述
解决方法:
在这里插入图片描述
在这里插入图片描述
具有临时性:
semanage fcontext -l | grep /var/ftp       ##/var/ftp具有安全上下文
Linux系统中的selinux设定_第2张图片
semanage fcontext -l | grep /westos         ##/westos没有
在这里插入图片描述
将selinux从enforcing---->Disabled---->enforcing
在这里插入图片描述
Linux系统中的selinux设定_第3张图片
在这里插入图片描述
Linux系统中的selinux设定_第4张图片
在这里插入图片描述
在这里插入图片描述
3.永久设定selinux文件下上文,即添加到上下文列表
semanage fcontext -a -t public_content_t "/westos(/.*)?"       ##/westos(/.*)表示westos目录本身和里面的所有内容
semanage fcontext -l | grep /westos
ls -Zd /westos/          ##会发现没有更改
Linux系统中的selinux设定_第5张图片
restorecon -FvvR /westos/      ##重新刷新服务
ls -Zd /westos/
Linux系统中的selinux设定_第6张图片

三、selinux开启时本地用户上传

在selinux开启的状态下,默认本地用户是没有上传权限的
Linux系统中的selinux设定_第7张图片
getsebool -a | grep ftp查看开关
setsebool -P ftp_home_dir on
getsebool -a | grep ftp
(553的话chmod u+w /home/*)

四、selinux开启时匿名用户上传

第一:
vim /etc/vsftpd/vsftpd.conf(开启匿名用户上传功能)
systemctl restart vsftpd

第二:
chmod 775 /var/ftp/pub/
chgrp ftp /var/ftp/pub/
getsebool -a | grep ftp(发现匿名用户的上传功能被关)

setsebool -P ftpd_anon_write on##-P永久开启
semanage fcontext -a -t public_content_rw_t /var/ftp/pub##给他读写权限
restorecon -FvvR /var/ftp/pub/ ##重新刷新

五、selinux开启有两种状态

enforcing ##强制警告并拒绝
permissive ##警告
setenforce 0 -----> permissive
setenforce 1 -----> enforcing

cd /mnt/
touch file
lftp 172.25.254.211 ##看不见file
getenforce ##查看selinux状态
setenforce 1 ##改成permissive ##只警告不拒绝可以看见
setenforce 0 ##改成enforcing ##强制警告并拒绝

报错信息查看:

setenforce 1
/var/log/audit/audit.log
lftp 172.25.254.211
cat /var/log/audit/audit.log

提供报错解决方案的软件
rm -rf /var/ftp/pub ##删除原有的pub
在/var/ftp/下新建pub
chmod 775 /var/ftp/pub/
chgrp ftp /var/ftp/pub/

> /var/log/messages
lftp 172.25.254.211  ##进入pub上传文件出现553报错
cat /var/log/messages   ##日志里会出现解决方案

yum remove setroubelshoot
删除后messages日志不会出现解决方案
在/var/log/audit/audit.log ##有报错但没有解决方案
rpm -qa | grep setroubleshoot
yum install setroubleshoot-server-3.2.17-2.el7.x86_64 -y

你可能感兴趣的:(Linux系统中的selinux设定)