Linux中SELINUX状态的巨大影响

1.基本SELINUX安全性概念

SELINUX(安全性增强型linux,内核型的加强性防火墙)是可保护系统安全性的额外机制,在某种程度上,它可以被看作是与标准权限并行的权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限(控制哪些用户对哪些文件具有哪些访问权,SELINUX的另一个不同之处在于若要访问文件,必须具有普通访问权限和SELINUX访问权限。因此,即使以超级用户身份root运行进程,根据进程以及文件或资源的SELINUX安全性上下文可能拒绝访问文件或资源)标签

2.selinux的模式

Disabled 不警告不拒绝
Enforcing 1强制不可以访问
Permissive 0警告但可以访问

3.更改selinux状态

(1)在文件中修改selinux状态
<1>首先删除/etc/vsftpd中的内容,再重新下载,避免没有恢复成初始的设置,影响接下来的操作

[root@sshd_server ~]# rm -rf /etc/vsftpd
[root@station ~]# yum reinstall vsftpd 
[root@station ~]# systemctl restart vsftpd

在这里插入图片描述
<2>检查selinux的状态

[root@station ~]# getenforce

=========================11
<3>用匿名用户进行登陆,并查看家目录下的内容

[root@station ftp]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit

在这里插入图片描述
<4>进入/mnt目录下创建一个文件名为bai的文件,并将其移至/var/ftp目录下

[root@station ~]# cd /mnt
[root@station mnt]# ls
[root@station mnt]# touch bai
[root@station mnt]# mv /mnt/bai /var/ftp

在这里插入图片描述

<5>用匿名用户进行登陆,查看家目录时发现成功查看到刚刚建立的文件bai

[root@station ~]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit

在这里插入图片描述
<6>进入selinux配置文件并更改其状态,更改状态后需重启方可生效

[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# getenforce
[root@station ~]# reboot

在这里插入图片描述
将SELINUX=disabled更改成SELINUX=enforcing
在这里插入图片描述
注意:
1.selinux是内核上的插件,如果需要改变selinux状态,必须对需要改变的主机进行重启
2.将selinux状态更改成enforcing时,开机时间会更久,需要耐心等待
<7>开机后查看selinux状态,会发现此时是enforcing

[root@station ~]# getenforce

在这里插入图片描述<8>匿名用户再次进行登陆,依旧可以看到之前的内容(一定要重新开启vsftpd服务)

[root@station ~]# systemctl restart vsftpd
[root@station ~]# lftp 172.25.254.133

在这里插入图片描述
<9>再次在/mnt目录下创建一个文件,并移至/var/ftp目录下

[root@station ~]# cd /mnt
[root@station mnt]# touch gege
[root@station mnt]# mv /mnt/gege /var/ftp

在这里插入图片描述
<10>匿名用户再次进行登陆,发现无法看到新建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
<11>利用ls -lZ /var/ftp/ 可以查看文件的安全上下文,会发现更改了selinux状态后的文件的上下文与更改前文件的上下文是不同的

[root@station mnt]# ls -lZ /var/ftp

在这里插入图片描述
(2)使用命令修改selinux状态
<1>为了不影响接下来的操作,删除之前移至/var/ftp下的文件

[root@station mnt]# cd /var/ftp
[root@station ftp]# ls
[root@station ftp]# rm -rf gege bai
[root@station ftp]# ls

在这里插入图片描述
<2>查看selinux并在/mnt下新创建一个文件,同样移至/var/ftp目录下

[root@station ~]# getenforce
[root@station ~]# cd /mnt
[root@station mnt]# touch haha
[root@station mnt]# mv /mnt/haha /var/ftp

在这里插入图片描述
<3>用匿名用户登陆,发现依旧无法查看到新创建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
-1-设置selinux状态为0
<4>将selinux状态设置为警告(但可以访问)并查看

[root@station mnt]# setenforce 0
[root@station mnt]# getenforce

在这里插入图片描述
<5>用匿名用户登陆后,会发现可以查看到之前建立的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
-2-设置selinux状态为1
<6>将selinux状态设置为强制(不可以访问)并查看

[root@station mnt]# setenforce 1
[root@station mnt]# getenforce

在这里插入图片描述
<7>用匿名用户登陆,发现依旧无法查看到新创建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
-3-临时更改安全上下文
<8>如果在此时还想查看文件,需要改变安全上下文

[root@station mnt]# ls -Z /var/ftp		##查看安全上下文
[root@station mnt]# chcon -t public_content_t /var/ftp/haha
[root@station mnt]# ls -Z /var/ftp		##更改后查看安全上下文

在这里插入图片描述
<9>更改安全上下文后,用用匿名用户登陆后,会发现可以查看到之前建立的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述

4.更改安全上下文

(1)临时更改安全上下文
<1>删除/var/ftp下所有之前建立的文件

[root@station ~]# cd /var/ftp
[root@station ftp]# ls
[root@station ftp]# rm -rf haha
[root@station ftp]# ls
[root@station ftp]# cd

在这里插入图片描述
<2>新建一个/westos目录,然后建立三个文件,并查看目录下文件的安全上下文

[root@station ~]# mkdir /westos
[root@station ~]# touch /westos/file{1..3}
[root@station ~]# ls -Z /westos

在这里插入图片描述
<3>编辑vsftpd服务的配置文件并使其生效,设置匿名用户登陆的家目录为新建的/westos目录

[root@station ~]# vim /etc/vsftpd/vsftpd.conf
[root@station ~]# systemcrl restart vsftpd

在这里插入图片描述
配置中写入的文件如下:
anon_root=/westos
在这里插入图片描述
<4>用匿名用户登陆,发现无法访问/westos下的文件

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
<5>临时更改/westos目录及目录下所有文件的安全上下文

[root@station ~]# ls -Zd /westos
[root@station ~]# chcon -t public_content_t /westos -R
[root@station ~]# ls -Z /westos

在这里插入图片描述
<6>再次用匿名用户登陆,发现可以访问/westos下的文件

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
<7>更改selinux状态为disabled并重启

[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# reboot

在这里插入图片描述
配置文件中更改的内容如下:
SELINUX=disabled
在这里插入图片描述
<8>重启后查看其selinux状态(更改成disabled)并查看/westos目录的安全上下文(没有改变),再次改变selinux的状态为enforcing并进行重启

[root@station ~]# getenforce
[root@station ~]# ls -Zd /westos
[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# reboot

在这里插入图片描述
配置文件中更改的内容如下:

SELINUX=enforcing

在这里插入图片描述
<9>重启后查看其selinux状态(更改成enforcing)并查看/westos目录的安全上下文(恢复到了先开始默认的状态)

[root@station ~]# getenforce
[root@station ~]# ls -Zd /westos

在这里插入图片描述
<10><6>再次用匿名用户登陆,发现不可以访问/westos下的文件

[root@station ~]# systemctl restart vsftpd
[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
注意:每次重启后,都需要重新开启vsftpd服务
总结:临时更改安全上下文需将selinux转换两次才生效(即先更改成disabled,重启,再更改成enforcing方可恢复成本来的样子)
(2)永久更改安全上下文
<1>更改/westos目录及目录下文件的安全上下文

[root@station ~]# semanage fcontext -a -t public_content_t '/westos(/.*)?'	##永久的修改/westos目录及目录下文件的安全上下文
[root@station ~]# semanage fcontext -l | grep westos	##查看
[root@station ~]# restorecon -FvvR /westos/	##刷新

在这里插入图片描述
<2>查看/westos目录的安全上下文,发现成功被修改

[root@station ~]# ls -Zd /westos

在这里插入图片描述
<3>用匿名用户登陆,发现可以成功访问

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

在这里插入图片描述
注意:
1.特定的程序只能访问安全上下文匹配的文件,如果不匹配会被内核禁止,而且可能会影响服务本身的功能
2.default_t是默认的
3.getsebool -a查看开关是否开启
4.setsebool -P xxx on 开启功能

5.用户上传文件

(1)让本地用户上传文件(用server)
<1>本地用户登陆,发现可以成功查看文件但无法上传文件,出现报错553

[root@station ~]# lftp 172.25.254.155 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> quit

在这里插入图片描述
<2>查看ftp相关功能的状态,发现本地用户上传文件的功能没有开启

[root@station ~]# getsebool -a | grep ftp

在这里插入图片描述
<3>开启本地用户上传文件的功能并再次查看确认已经开启(P是大写)

[root@station ~]# setsebool -P ftp_home_dir on
[root@station ~]# getsebool -a | grep ftp

在这里插入图片描述
<4>再次让本地用户登陆,发现可以成功上传文件

[root@station ~]# lftp 172.25.254.155 -u westos
Password: 
lftp [email protected]:~> ls       
lftp [email protected]:~> put /etc/group
lftp [email protected]:~> ls
lftp [email protected]:~> quit

在这里插入图片描述
<5>查看selinux的状态(状态一直是enforcing)
[root@station ~]# getenforce
在这里插入图片描述
(2)让匿名用户具备上传能力(一定注意在/pub目录下上传文件)
<1>使匿名用户登陆,发现可以成功登陆,但无法上传文件,出现550报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit

在这里插入图片描述
<2>进入vsftpd配置服务并生效,更改其匿名用户的上传权限
[root@station ~]# vim /etc/vsftpd/vsftpd.conf
[root@station ~]# systemctl restart vsftpd
在这里插入图片描述
将配置中以下内容前的注释符号删除:anon_upload_enable=YES
在这里插入图片描述
<3>更改/var/ftp/pub的所属组及权限

[root@station ~]# ll -ld /var/ftp/pub
[root@station ~]# chgrp ftp /var/ftp/pub
[root@station ~]# chmod 775 /var/ftp/pub
[root@station ~]# ll -ld /var/ftp/pub

在这里插入图片描述
<4>再次使匿名用户登陆,发现依旧无法上传文件,出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/passwd
lftp 172.25.254.155:/pub> quit

在这里插入图片描述
<5>查看ftp相关功能的状态,发现匿名用户上传文件的功能没有开启

[root@station ~]# getsebool -a | grep ftp

在这里插入图片描述
<6>开启匿名用户上传文件的功能并再次查看确认已经开启

[root@station ~]# setsebool -P ftpd_anon_write on
[root@station ~]# getsebool -a | grep ftp

在这里插入图片描述
<7>再次使匿名用户登陆,发现依旧无法上传文件,出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/passwd
lftp 172.25.254.155:/pub> quit

在这里插入图片描述
<8>设置目录可以写

[root@station ~]# ls -Zd /var/ftp/pub
[root@station ~]# semanage fcontext -a -t public_content_rw_t /var/ftp/pub
[root@station ~]# restorecon -FvvR /var/ftp/pub
[root@station ~]# ls -Zd /var/ftp/pub

在这里插入图片描述
<9>再次使匿名用户登陆,发现成功上传文件

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> ls
lftp 172.25.254.155:/pub> quit

在这里插入图片描述

6.报错的解决方法

-1-出现报错并显示
<1>删除/var/ftp/pub下的目录并重新建立,然后更改其权限及所属组

[root@station ~]# rm -rf /var/ftp/pub
[root@station ~]# mkdir /var/ftp/pub
[root@station ~]# ll -d /var/ftp/pub
[root@station ~]# chgrp ftp /var/ftp/pub
[root@station ~]# chmod 775 /var/ftp/pub
[root@station ~]# ll -d /var/ftp/pub

在这里插入图片描述
<2>清空日志

[root@station ~]# > /var/log/messages
[root@station ~]# > /var/log/audit/audit.log

在这里插入图片描述
<3>使用匿名用户登陆并上传,会出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub            
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit

在这里插入图片描述
<4>查看报错的日志文件及解决方法的日志文件(/var/log/messages)

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages

在这里插入图片描述
在这里插入图片描述
-2-卸载报错的解决方法软件包后将不会出现解决方法
<1>卸载报错的解决方法的软件包(setroubleshoot-server-3.2.17-2.el7.x86_64)

[root@station ~]# rpm -qa | grep setroubleshoot
[root@station ~]# yum remove setroubleshoot-server-3.2.17-2.el7.x86_64

在这里插入图片描述
在这里插入图片描述
<2>清空日志文件

[root@station ~]# > /var/log/messages
[root@station ~]# > /var/log/audit/audit.log

在这里插入图片描述
<3>使用匿名用户登陆并上传,会出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub            
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit

在这里插入图片描述
<4>查看报错的日志文件及解决方法的日志文件(/var/log/messages),发现没有解决方法

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages

在这里插入图片描述
在这里插入图片描述
<5>若想要得到解决方法,则重新安装解决方法的安装包即可

[root@station ~]# yum install setroubleshoot-server.x86_64 

在这里插入图片描述
<6>清空日志并进行匿名用户的登陆

[root@station ~]# > /var/log/audit/audit.log
[root@station ~]# > /var/log/messages
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit

在这里插入图片描述

<7>查看报错的日志文件及解决方法的日志文件(/var/log/messages),发现有解决方法

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages

在这里插入图片描述
(我写情话的时候,只要想一想你,便能才思泉涌)

猜你喜欢

转载自blog.csdn.net/qq_39376481/article/details/87043817
今日推荐