DAC
:权限访问模型,称为Discretionary Access Control
表示的是自主访问控制模型,一个进程的权限总是超过它应该具有的权限;普通用户不具有修改文件的属主和属组的权限,但是可以修改属主和属主为自己的文件的权限;MAC
:表示强制访问控制,Mandatory Access Control
,用于确保进程运行在自己运行所需要的最小资源环境中;Selinux
:表示security Enhanced Linux
出现在1990
年代,用于实现让进程运行在资源所需要的最小资源环境中;安全级别为C1-->C2-->B1-->B2-->B3-->A1
,Linux
和Windows
都是在C2
级别,为了实现上述目的,由于Linux
是开源的,所以Selinux
逐渐变为Linux
内核的一部分;- 通过判断进程执行的操作,例如
rm -f /tmp/test
,那么就让进程运行在一个沙箱中,去执行上面的操作,进程可以访问的文件取决于沙箱在创建时,包含的文件; selinux
的组成包括三个部分:domain
:动作的发起者,通常是进程;action
:对于type
执行的操作;type
:domain
中包含什么样的文件取决于文件自身的上下文,这个上下文是在原来的属主和属组之上附加的额外的属性;- 通过命令
ls -Z
可以查看
root
:表示的是用户标识,这个用户表示的不是系统用户,但是和提供用户存在一定的关联性,对于subject
来说,主要是使得selinux user
能够工作在某个进程之下;对于object
而言用于标志object
的属主;Role
:类似于系统上面的组;type
:表示文件类别,用于说明在domain
何种进程访问何种type
的资源;- 对于进程的查看,其中
_t
表示的就是域,或者称为沙箱;
- 对于进程的查看,其中
- 其中
admin_user_home_t
:表示的就是type
类型,这个是需要selinux
管理员自己进行规划;selinux
的安全是交给selinux policy
,也就是安全策略;这个规则的指定需要处理系统上大量的任务,十分繁重; selinux
的类型:strict mode
:严格类型,就是为所有的进程运行都制定运行机制,保证在沙箱中运行;targeted mode
:目标模型,这种模型仅仅是用于控制有限的一部分进程,包括httpd nfs bind
;
- 配置文件在
/etc/sysconfig/selinux
- 策略在
/etc/selinux/targeted/policy/
目录里面,里面文件的类型比较特殊
- 这个规则库为了实现高效的检索,所以是二进制的格式存放的;
- 对于
subject
来说只能够是进程; - 对于
Objects
:目录,文件描述符[文件的元数据];文件,文件系统,链接文件,进程;各种类型的特殊文件,例如block device character device socket,FIFO and so on
; selinux
的设定对于管理员也是生效的;- 对于
Actions
包括:Append
:表示在文件的最后追加新的内容;Create
:表示创建新的文件;Exxcute
:表示执行新的文件;Get attribute
:表示用于获取属性;I/O cotrol
:表示IO
控制;Link
:表示链接文件;Lock
:表示创建锁文件;read
:表示读操作;Rename
:表示重命名;Unlink
:表示撤销链接文件;Write
:表示写操作;
- selinux的管理
- 获取
Selinux
的运行状态
- 设置
selinux
的状态
- 任何违反了
selinux
的日志信息都记录在/var/log/audit/
里面
Enforcing
仅仅对于违反策略的行为进行记录,并且拒绝违反策略的行为,对于permissive
来说,对于违反了策略的行为,进行记录单是不会被拒绝;- 如果如要关闭,只能够在通过配置文件
/etc/selinux/config
来实现更改,如果禁用了selinux
是查看不到标签等信息的,更改配置文件,需要通过重启生效;这个/selinux/enforce
是一个伪文件系统,是内核中selinux
的一个接口,可以通过直接更改这个文件来修改selinux
的工作状态;
- 对于文件进行重新标记:
- 通过命令
chon
来实现修改文件的标记-t
:用于修嘎一个文件的标签的类型;--reference=
:参考某个文件进行修改;
-u
:用于修改标签的用户属性-t
:用于修改类型是什么;-R
:用于递归进行修改;
- 对于不同目录里面创建的文件的默认标签类型是不一样的,这些标签取决于内置的
selinux
策略,根据策略在不同的路径底下创建的文件自动打上不同的标签; - 对于
targeted
模型下的selinux
为了能够改变某个subject
本身的工作属性,但是又不能够改变策略,并且进行重新的编译,这就需要selinux
的运行时配置, 进程的booleans
不同的服务的bool
值,是不一样的; - 通过命令
getsebool'
来查看:
- 这些都是系统内置的策略,通过查看
httpd
服务的相关属性
- 通过更改这些属性,可以更改服务的运行方式,更改的方式是
setsebool
- 安装
vsftpd
来测试
yum install vsftpd -y
- 查找关于
vsftpd
和selinux
的相关选项
- 通过更改上面参数,可以修改
ftp
的工作属性 - 如果需要恢复文件的标签为默认的类型,需要使用命令
restorecon
,用于恢复文件模型的上下文的,-R
表示递归修改; semange
:是selinux
的策略管理工具,用于修改策略属性;- 这里显示的是
selinux
对于某个目录的默认策略;
- 查看用户映射关系
- 端口的信息查看