selinux

一,什么是selinux?
selinux称为内核级加强型防火墙。
selinux’的目的在于明确的指明某个进程可以访问那些资源(文件,网络端口等)。
selinux是由美国国家安全局(NSA)开发的。
selinux是整合到linux内核的一个模块。

二,selinux的主要作用:
1.针对文件,会对系统中每个文件添加安全上下文(context)
2,针对进程会对系统中的每个进程添加安全上下文
3,会在系统服务上设定sebool开关
4,当进程的安全上下文和文件的安全上下文不匹配时,进程无法访问文件
5,sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值

三,管理selinux:
selinux的开关:
vim /etc/sysconfig/selinux
SELINUX=enforcing #selinux开启,并且级别为强制,既警告也拒绝
SELINUX=permissive #selinux开启,级别为警告

enforcing和permissive的区别:
Enforcing模式就是应用SELinux所设定的Policy,
所有违反Policy的规则(Rules)都会被SELinux拒绝
Permissive和Enforcing的区别就在于它还是会遵循SELinux的Policy,但是对于违反规则的操作只会予以记录而并不会拒绝操作
setenforce 0|1 #更改selinux当前的级别,0表示警告,1表示强制

四,selinux的运作模式:
主体:SElinux主要管理的就是程序,所以可以将『主体』跟 process 划上等号;
目标 (Object): 主体程序能否存取的『目标资源』一般就是文件系统。因此这个目标项目可以等文件系统划上等号;
政策 (Policy): 由于程序与档案数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。
安全性本文 (security context): 我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了要符合政策指定之外,主体与目标的安全性本文必须一致才能够顺利存取。 这个安全性本文 (security context) 有点类似文件系统的 rwx 啦!安全性本文的内容与设定是非常重要的! 如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),当然就会一直出现『权限不符』的错误信息了!
下图可以正确解释:
这里写图片描述
(1)主体程序必须要通过 SELinux 政策内的规则放行后,就可以与目标资源进行安全性本文的对比
(2)若比对失败则无法存取目标,若比对成功则可以开始存取目标。

五,安全性本文详解:
这里写图片描述
身份识别 (Identify): 相当于账号方面的身份识别!主要的身份识别则有底下三种常见的类型:
root:表示 root 的账号身份,如同上面的表格显示的是 root 家目录下的数据啊!
system_u:表示系统程序方面的识别,通常就是程序啰;
user_u:代表的是一般使用者账号相关的身份。

角色 (Role): 透过角色字段,我们可以知道这个数据是属于程序、档案资源还是代表使用者。一般的角色有:
    object_r:代表的是档案或目录等档案资源,这应该是最常见的啰;
    system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r 喔!

类型 (Type): 在预设的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型 (type) 字段! 基本上,一个主体程序能不能读取到这个档案资源,与类型字段有关!而类型字段在档案与程序的定义不太相同,分别是:
    type:在档案资源 (Object) 上面称为类型 (Type);
    domain:在主体程序 (Subject) 则称为领域 (domain) 了!
domain 需要与 type 搭配,则该程序才能够顺利的读取档案资源啦!

六,selinux中对安全上下文的设定(包括文件和目录):

临时设定:重启selinux两次,即回到最设定的级别之后,而且安全上下文的类型会回到开始的时候。
[root@localhost ~]# chcon -t public_content_t /var/ftp/file1 #临时指定file1的安全上下文类型。-t 指定类型。
chcon
-R :递归处理所有的文件及子目录
-t:后面接安全上下文的类型子段
-v:为处理的所有文件显示诊断信息
-u:设置指定用户的目标安全环境
-r:设置指定角色的目标安全环境
-t:设置指定类型的目标安全环境
示例:
如果想把ftp共享给匿名用户的话,需要开启以下:
chcon -R -t public_content_t /var/ftp

设定后要复原为原有的安全上下文类型:
restorecon -RvvF filename|directory
-R:连同次目录一起修改
-v:将过程显示到屏幕上
chcon命令是修改对象(文件)的安全上下文,比如:用户,角色,类型,安全级别。也就是将每个文件的安全环境变更为指定环境。使用–reference选项时,把指定文件的安全环境设置为和参考文件相同。chco命令位于/usr/bin/chcon。

永久设定:
semanage fcontext - {a|d|m}
fcontext:主要用在安全上下文方面的用途
-l:查询的意思
-a:增加的意思,增加一些目录的安全上下文的设定
-m:修改的意思
-d;删除的意思
semanage 命令用来查询和修改SElinux默认目录的安全上下文.

实验一:在/mnt里建立两个文件file1和file2,在/var/ftp里建立一个testfile文件。将file1‘移动‘到/var/ftp中,在命令行使用ls命令可以查看到file1,但是使用lftp登陆到ftp服务器时无法查看到file1,只可查看到testfile,但是将/mnt下的file2‘复制‘到/var/ftp中时。登陆ftp服务器也可以查看到file2。
解释原因:ftp服务器中看不见file1的原因在于file1在/mnt中建立,和/var/ftp目录下的文件又不一样的安全上下文,两者的安全上下文不匹配,所以在ftp服务器中无法查看到file1。file2可以看到是因为file2时复制过去的,复制过去之后就会同步/var/ftp目录的安全上下文,所以在ftp服务器中可以看见file2。
注:单纯的复制文件时,SELinux 的 type 字段是会继承目标目录的(即会变成和所到的目录的一样); 如果是移动,那么连同 SELinux 的类型也会被移动过去。
操作如下:
在/mnt和/var/ftp目录下分别建立文件并查看文件的安全上下文:
这里写图片描述
将file1‘移动‘到/var/ftp目录下,将file2‘复制‘到/var/ftp下:
[root@localhost ~]# mv /mnt/file1 /var/ftp/
[root@localhost ~]# cp /mnt/file2 /var/ftp/
=登陆ftp服务器查看:
这里写图片描述
查看/var/ftp目录下的文件及其安全上下文:
这里写图片描述
可以看出file1和file2的安全上下文类型不同。、

实验二:
打开SELinux后,SELinux会阻止ftp daemon读取用户home目录
如图;这里写图片描述
student用户没有删除和上传的权限,解决办法有两种:
方法一:降低selinux的安全级别
这里写图片描述
方法二:利用sebool值来设定
注意;selinux的bool值相当于selinux开关
selinux的布尔变量
作用:
利用布尔变量,在系统运行情况下可以实现:
调整网络服务的部分SELinux策略,
而不用知道具体的SELinux策略如何编写,
也不需要重新加载或重新编译SELinux策略。

这里写图片描述
默认是关闭的,现在打开
这里写图片描述
可以实现删除和上传;
这里写图片描述
注意:这两种设置权限的方法是针对用户而言,对于匿名用户不起作用:
这里写图片描述
注意:曾在网上看到一种解释:setsebool -P ftp_home_dir 1这条命令的作用了,一直以为这个home是开启每个用户的家目录的意思,但现在看来它指的单单是/home这个位置了。设置为开启后对用户开启上传和删除的权限

实验三,关于日志
selinux的默认官方日志在:/var/log/audit/audit.log下,但是如果有setroubleshoot-server之后会将日志同步到/var/log/messages中,并在此日志纪录中显示解决问题的的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值