se linux ll-z,Linux中的SELinux

SElinux的前身是NSA(美国国家安全局)发起的一个项目。它的目的是将系统加固到可以达到军方级别。

为什么NSA选择Linux呢?

在目前市面上大多数操作系统都是商用闭源的,只有Linux是开源的,这样修改并加入这项功能就方便许多,而且没有版权纠纷。所以,现在selinux就成为了Linux内核的一部分。

在了解selinux之间,我们需要知道DAC和CS的概念,它们是linux系统本身的安全机制。

DAC:自主访问控制

每一个用户为了能够实现和其他用户共享文件,在使用ACL之前,只能通过改变这个文件其他用户的权限,但是这中方法给系统安全带来了无穷的隐患。

CS(安全上下文):取决于发起用户的权限和文本本身的权限

CS+DAC给系统的安全机制带来了漏洞,事想apache用户可以查看/etc/passwd,如果它有写权限,就可能被利用进而就修改passwd文件,危害系统安全。

所有才又了MAC强制访问控制的概念

MAC: Mandatory Access Control  强制访问控制,它是selinux实现访问控制的基础

还通过httpd服务来说明它的原理:

SELINUX通过type enforce (TE)强制类型策略将httpd的工作目录定义在一个特定的目录/var/www用户如果在定义其他目录,将不允许访问,从而实现mac的强制访问控制。

selinux是怎么工作的

它通过operation (操作)的主和宾打一个“标签”,在一个“类型”里只能由特定的目录或用户执行。这样可以限定一个进程的执行范围只能在一个“沙箱”(sandbox)内了(最小权限法则)

###operation: 读,写,执行,等。其实是一个主谓宾的结构 Subject Operation Object

###最小权限法则:例如定义Sbjiect httpd   的目录/var/www 为public_content_t类型,这样,httpd只能访问有这个特定类型的文件或目录,这些文件就叫沙箱“sendbox”

使用selinx,必须精心设计一套访问法则

给不同的进程打上不同的“域”,给不同的目录打上不同的”类型“通过定义“类型”和“域”的对应规则,来实现。selinx需要域和标签的对应关系,一对一对应     。但是系统上有上千个进程,实现起来很麻烦,所以一般情况下,并不是用selinx作为安全防范。

selinux的实现机制有两种

strict:       任何进程都受selinux的控制,一般不用,太难设定

targeted:   红帽开发,指定选定的进程来受SELINUX,这种机制使得selinx更加容易受到控制

policy: 规则组合起来就叫策略

规则通常是以二进制文件存在的(编辑完转换成二进制),这样可以降低系统资源占用

ll /etc/selinxu/policy

MLS  muiti level scurity

selinxu把一些规则里面可以方便控制的功能设定为on或者off,这些都成为布尔类型

getsebool -a   可以显示这些布尔型的内容

fcontext 规定目录属于哪个进程的范围

启动使用selinux

1.启用selinux

vim /etc/sysconfig/selinux

SELINUX=enforcing      #任何进程都受selinux控制

permissive    #仍然受控制,但是进程进入了别的目录会记录到日志

disable           #干净彻底的关闭

setenforce

genenforce

2.显示标签

ls -Z           显示文件的标签

一共五段     角色:selinux里另外定义的用户

object_r: 有点类似于组

user_home_t: 域或者类型(最重要)通过改变它可以控制访问。类型强制的机制就是通过它实现的

ps -Z          显示进程的标签

所有显示unconfined_t都表示不受selinux控制

ps auxZ | grep httpd

ls -dZ

在不同的目录建立的文件类型是不一样的,归不同的进程管理。

3.改变一个类型的标签

chcon     chage contex  改变上下文

chcon -t    改类型,指定为特定类型

-u

-R   递归修改,可以改变目录下所有目录

--reference=   以某个文件的标签为参照改变成一样的标签

chcon -R --reference=/var/www/html /www

chcon -t default_t /www/index.html

4.恢复默认安全上下文及修改

restorecon

-R                   递归

-F                                           强制

-v                                           显示详细信息

restorecon -R -v -F /www             # 显示/www目录的详细CS信息

semange

-d                  删除

-m                 修改

-r

-a                   附加

-t                    类型

6.开启布尔类型

getsebool -a  | grep httpd                   #查看某个对应的布尔类型的值

setsebool httpd_enable_cgi=on          # 加上-p选项永久有效

下面通过添加一个samba目录来测试selinux控制

1.添加tools文件夹

vim /etc/samba/smb.conf

[tools]

path = /share                        #没有的话事前创建一个

public= yes

write list = @mygrp                 #只允许mygrp组具有创建文件的权限

browseable = yes

service smb start

2.添加用户gentoo,并设置samba密码,允许器登陆samba服务器在tools下创建文件

groupadd mygrp

useradd gentoo -g mygrp

[root@station32 var]# smbpasswd -a gentoo

New SMB password:

RetypenewSMB password:

Added user gentoo.

smbclient -L 192.168.0.32 -U gentoo          # 查看samba服务器的内容

3.我们查看下/shared目录的CS,并且开启selinux

ls -dZ /share/

drwxrwxr-x root mygrp root:object_r:default_t          /share/

setenforce 1

4.开启selinux后,再使用smbclient命令就会报错,我们看下配置文件里面有这样一行 # To set a label use the following: chcon-t samba_share_t /path ,所以我们必须把/shared文件夹的CS修改后才能正常使用samba

chcon -t samba_share_t  /share

20be3b6dc983241d0027eae2e5299c31.gif

5.我们关闭samba里关于访问家目录的布尔类型

setsebool samba_enable_home_dirs off

这个时候使用win网络邻居,以用户gentoo登陆后,就不能进入gentoo家目录了

3174e9cc2eee3919ec9afc0be2dd2405.gif

6.我们将它开启就又能访问了,命令如下:

setsebool samba_enable_home_dirs on0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值