Linux系统中 SElinux的介绍

什么是SElinux:

      

         SELinux(Security-Enhanced Linux) 【安全增强型linux】美国国家安全局(NSA)对于强制访问控制的实现,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

         SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)

 

#SElinux运行状态的查看:

1.我们可以通过 getenforce命令来查看SElinux服务的运行状态:

总共有三种状态:

第一种: 关闭状态 disabled

第二种: 开启状态下的警告级别 Permissive

第三种: 开启状态下的强制级别 Enforcing

其中   开启状态下的级别转换通过setenforce  0/1来进行改变!

2.如何开启关闭SElinux服务:

vim   /etc/sysconfig/selinux

打开可以看到文件内容:

将 disabled 改为enforcing

注因为 SElinux为内核级别的服务,所以需要重启系统才能生效!

重启系统:

reboot命令

重启之后可以看到SElinux的状态:(更改为了 Enforcing)

开启状态的级别转换操作如下:

setenforce 0  :更改为 Permissive

但配置文件里面没有更改!

setenforce 1: 更改为 Enforcing

如果想要关闭SElinux服务就需要将配置文件里的enforcing 或者 permissive 改为disabled 并且重启系统(reboot)才可关闭生效!

###########selinux的用法之   影响文件的安全上下文!##########

1上下文的基本实验:

当selinux为关闭(disabled)状态的时候:

我们作如下操作:

新建一个 /mnt目录下的 westosfile文件,并把该文件移动到 匿名用户家目录 /var/ftp/目录下看看会发生什么:

mv 移动是一个重命名的过程,cp复制是一个新建的过程,cp可能会使文件的属性,权限发生一些变化,不利于我们实验.)

在客户端匿名登陆ftp:(可以看到我们刚才移动到家目录里面的westosfile文件)

通过 ls -Z + 目录的命令可以查看 文件的上下文信息:

可以看到原本属于家目录的下的pub目录上下文为public_content_t:s0;  而从/mnt底下移动过来的westosfile文件显示的是(问号)【即上下文不一致】

当selinux服务开启时:(Enforcing状态时)

我们重复上述操作可以看到:

新建westosfile1 移动到匿名用户家目录

匿名用户登陆访问ftp:(看不到我们刚才上传的westosfile1文件)

查看安全上下文:(selinux开启状态下如果上下文不一致不会显示家目录里面不一致的文件,目录)

但是当selinux开启状态为(Permissive)时:

建一个/mnt底下的ccc文件,移动到匿名用户家目录下

观察文件的安全上下文:(可以发现ccc和其他三个都不一样)

但是ccc还是可以在Permissive状态下显示出来:

另外:

当 selinux为关闭(disabled)状态时,只要/etc/vsftpd/vsftpd.conf 配置文件里配置好文件上传功能,且家目录权限,组更改好就可以正常上传!

当selinu为开启(Permissive)状态时,只要/etc/vsftpd/vsftpd.conf 配置文件里配置好文件上传功能且家目录权限,组更改好,也可以上传!

可以看到上传/etc/passwd文件成功

当selinux为开启(Enforcing)状态时,不管满足什么条件,都是无法上传文件的,错误为553:

2.修改上下文的方法:

A:临时修改:

我们建立一个目录/ftphome,可以用ls -Zd + 目录  查看 目录的上下文信息,/ftphome的安全上下文为:default_t:s0

现在我们临时修改它:(利用chcon 命令, -t 表示修改上下文为后面跟的字符)

chcon -t public_content_t /ftphome

可以看到更改成功:

我们将它移动到匿名用户家目录下(Enforcing状态下):

可以看到临时更改上下文是有效果的:

所谓临时更改是指: 当我们更改配置文件/etc/sysconfig/selinux 为disabled ,reboot系统 ,再改回enforcing开启后可以看到临时更改的文件上下文恢复原样了!:(注:在这我们需要将/var/ftp/ftphome 移动回 / 下

B:永久更改:

首先查看 /var/ftp   和 /ftphome的上下文列表:

/var/ftp 的上下文列表如下:

/ftphome 的上下文列表:(可以看到没有信息,因为ftphome是我们新建的目录)

新建一个/ftphome下的kkk目录:

永久修改/ftphome及其底下的目录,文件的安全上下文:(-a 增加, -t 修改内容     /ftphome(/.*)?表示 ftphome目录及其下面的所以文件,目录全部内容。)

可以看到效果:

首先上下文列表有了:

上下文更改也完成了:

这种更改,不会受到reboot重启系统影响!

####管理selinux布尔(sebool)值#########

selinux布尔值相当于是一个功能开关,可以启用或者关闭相关策略行为:

比如

(1)匿名用户上传文件:

默认的,在selinux开启(enforcing)的状态下本地用户是没有上传权限的:

可以看到:无法上传!

此时我们可以查看selinux布尔值开关:

getsebool -a |grep ftp

可以看到匿名用户上传开关是关闭状态:

开启上传服务:

开启匿名用户上传服务:

查看:

再添加匿名用户默认家目录的安全上下文类型的读写权限!:

读写权限添加成功:

继续上传:

此时上传成功!

#########selinux的排错工具: setroubleshoot-server###########

selinux的日志信息目录为:  /var/log/audit/audit.log

查看selinux排错工具的软件包:

可以看到我们已经安装了排错软件:

开始实验:

首先:我们在/mnt目录下新建一个 aaa文件,并且把它移动到/var/ftp/匿名用户家目录底下去:

其次:先清空一次selinux日志信息和常规日志信息(/var/log/messages),便于我们观察所需的报错信息:

登陆ftp服务端,看不到我们移动到匿名用户家目录里的文件(安全上下文的关系),查看selinux日志信息:

该日志会报错,但是不提供解决方法!

查看常规日志信息:(/var/log/messages)

此段开始给你解决方法(需要细心读!)

注:!!!当我们没有安装,或者卸载了 settoubleshoot-server排错软件时:

查看 selinux 日志(/var/log/audit/audit.log)还是会报错,且没有解决办法;

另一方面,查看常规日志(/var/log/messages)也会没有解决方法了!

猜你喜欢

转载自blog.csdn.net/Asukaaaa/article/details/83794326