SElinux

1.对系统的影响

在这里插入图片描述
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf##让匿名用户可以登录
在这里插入图片描述
[root@localhost ~]# systemctl restart vsftpd

在这里插入图片描述
##删除掉pub里面的文件,将输入文件的设置打开
##本地用户默认也不能上传信息,给他的家目录加上个w权限就行
在这里插入图片描述
在这里插入图片描述
##本地用户也可以上传文件了
[root@localhost ~]# touch /mnt/westosfile
[root@localhost ~]# mv /mnt/westosfile /var/ftp##把他移动到ftp匿名用户的家目录里面
[root@localhost ~]# ls /var/ftp

file  pub  westosfile

lftp cxg@192.168.0.100:~> lftp 192.168.0.100
lftp 192.168.0.100:~> ls##这个移动的文件可以发布出来

-rw-r--r--    1 0        0               0 Jun 28 03:57 file
drwxrwxr-x    2 0        50             20 Jul 02 05:40 pub
-rw-r--r--    1 0        0        1048576000 Jul 02 05:46 westosfile

[root@localhost ~]# getenforce##这个就是关闭的内核级加强火墙(selinux)

Disabled

[root@localhost ~]# vim /etc/sysconfig/selinux##将disabled改为enforcing

在这里插入图片描述
##因为这是内核级的插件,需要对内核进行初始化,因此必须重启
[root@localhost ~]# ps axZ |grep vsftpd ##这个Z是查看文件的安全上下文,查看vsftpd的安全上下文

-                                12499 ?        Ss     0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
-                                12943 pts/0    S+     0:00 grep --color=auto vsftpd

##发现内容是空的,信息是缺失的
[root@localhost ~]# ls -Z /var/ftp

-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 file
drwxrwxr-x. root ftp  system_u:object_r:public_content_t:s0 pub
-rw-r--r--  root root ?                                westosfile

##程序和文件有一部分内容是缺失的
[root@localhost ~]# reboot
在这里插入图片描述
##将disable调整为enforcing发现匿名用户不能上传文件了
[root@localhost ~]# lftp 192.168.0.100 -u westos
Password:
lftp westos@192.168.0.100:~> ls
lftp westos@192.168.0.100:~> put /etc/group

put: Access failed: 553 Could not create file. (group)

##本地用户也不能上传文件了
在这里插入图片描述
##移动文件到匿名用户的加目录也看不到了
在这里插入图片描述
在这里插入图片描述
ls -Z和ps axZ都已经有内容了,因此都是selinux写入的,当打开selinux服务,内核对程序的防控多了一条为selinux,给系统每个加载的程序和文件上加一个标签,特定标签的程序只能读取特定标签的文件,标签不一致,访问就会被禁止,程序看不到这个文件(ftp看不到我们的mv过来的westosfile1),可以看到上面pub,file westosfile都是同一个后缀的标签,就是同一个ftp程序的标签,但是westosfile1是另外的标签,这个叫做安全上下文,特定安全上下文的程序只能访问特定上下文的文件,所有westofile1访问不到(不是ftp程序的标签)
##为什么现在本地和匿名用户不能put进去文件了?
在这里插入图片描述
##因为selinux给这些个功能再开了个开关
##selinux给文件加上标签,让他只能访问特定上下文的文件,给程序加上哥开关(getsebool)bool就如同一个开关on和off,在程序里面分别是1和0来表示,getsebool的意思就是selinux的开关

2.基本设定

在这里插入图片描述
##这个selinux的配置有三种模式,enforcing(允许),permissive(警告不拒绝),disabled(拒绝)
在这里插入图片描述
##getenforce查看Selinux状态,然后setenforce后面加上数字1和0可以将它调整为Permessive状态和和Enforcing状态,但是不能调整成disabled状态

3.sebool设定

在这里插入图片描述
##ftp登录上cxg本地用户,因为sebool设定的是关掉
在这里插入图片描述
[root@localhost ~]# setsebool -P tftp_home_dir on/1##-P代表永久更改,不加-P开机后还原设置,后面这个可以是on也可以是1,都代表打开ftp本地用户的文件传输功能
在这里插入图片描述
##已经变成on
在这里插入图片描述
##本地用户传输文件的功能就可以使用
[root@localhost ~]# setsebool -P ftpd_anon_write on##打开匿名用户的传输功能,
[root@localhost ~]# ls -Zd /var/ftp/pub##传输到pub文件pub文件的安全上下文是只读的,需要加上w权限

drwxrwxr-x. root ftp system_u:object_r:public_content_t:s0 /var/ftp/pub

在这里插入图片描述
##semanage就是调整安全上下文的权限中间comtent_rw_t的rw就是加上的权限
在这里插入图片描述
##restorecon就是刷新安全上下文的文件
##匿名用户就可以上传文件数据了

4.修改文件安全上下文

##刚刚上面的westosfile1和westofile的安全上下文不一致,导致lftp的时候看不到和他安全上下文不一致的westosfile1,那将westosfile1的安全上下文修改成一样的
[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# ls -Z

-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 file
drwxrwxr-x. root ftp  system_u:object_r:public_content_rw_t:s0 pub
-rw-r--r--. root root system_u:object_r:public_content_t:s0 westosfile
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0   westosfile1

[root@localhost ftp]# chcon -t public_content_t westosfile1
[root@localhost ftp]# ls -Z

-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 file
drwxrwxr-x. root ftp  system_u:object_r:public_content_rw_t:s0 pub
-rw-r--r--. root root system_u:object_r:public_content_t:s0 westosfile
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 westosfile1

在这里插入图片描述
##westosfile1可以访问到了,
##在其他目录下(除过/var/ftp/)也可以修改安全上下文,但是安全上下文是临时的
在这里插入图片描述
##前面建立的westos安全上下文是admin_home_t让他在lftp里面显示就需要修改他的安全上下文为public
在这里插入图片描述
[root@localhost ~]# vim /etc/sysconfig/selinux##将enforcing改为disabled,再重启reboot
在这里插入图片描述
##westos的安全上下文是修改后的public,然后在selinux配置文件中改回enforcing,再reboot
在这里插入图片描述
##安全上下文已经还原了,但是/var/ftp/里面的文件就不会还原,因为他们有固定的安全上下文的设置如下
在这里插入图片描述
##ftp的安全上下文第一个就是
在这里插入图片描述
##给westos这个目录加上安全上下文,后面的‘westos(/。*)?'里面westos是目录后面括号和里面的内容代表里面所有的文件的安全上下文都设置为public_content_
[root@localhost ~]# semanage fcontext -l |grep westos##westos的安全上下文也已经有了

westos(/.*)?                                       all files          system_u:object_r:public_content_t:s0 

[root@localhost ~]# restorecon -RvvF westos##再刷新westos的安全上下文就完成了将wetos目录设置为安全上下文固定为public_content_t了

5.selinux排错

在这里插入图片描述
##删除日志和审计(audit)文件,情况/var/ftp里面的其他文件,只留一个pub
[root@localhost ~]# cat /var/log/messages##查看日志,里面提供两个方法,一个是
restorecon -v /var/ftp
[root@localhost ~]# restorecon -v /var/ftp##刷新ftp
[root@localhost ~]# lftp 192.168.0.100

lftp 192.168.0.100:~> ls
drwxrwxr-x    2 0        50             20 Jul 02 05:40 pub

##并没有解决
在这里插入图片描述
##刷新file文件就解决了,这是因为selinux里面有一个可以帮排错的工具
在这里插入图片描述
##setroubleshoot-server就是排错的工具(就是audit.log里面查看允许情况)
[root@localhost ~]# yum remove setroubleshoot-server-3.2.30-3.el7.x86_64##删除排错工具
[root@localhost ~]# > /var/log/audit/audit.log##清空审计
[root@localhost ~]# touch /mnt/file1
[root@localhost ~]# mv /mnt/file1 /var/ftp/
[root@localhost ~]# lftp 192.168.0.100

lftp 192.168.0.100:~> ls
-rw-r--r--    1 0        0               0 Jul 05 08:36 file
drwxrwxr-x    2 0        50             20 Jul 02 05:40 pub

##新建一个file1到ftp里面使用lftp无法显示
在这里插入图片描述
##使用vsftpd访问file1被拒绝了
[root@localhost ~]# cat /var/log/messages##这次针对file1文件日志没有提供解决方案(因为没有setroubleshoot)
[root@localhost ~]# yum install setroubleshoot-server##重新安装上排错服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值