selinux:
SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,是由NSA编写并设计成内核模块包含到内核中
扩展
UNIX的安全模型是:任意的访问控制(DAC)。任何程序对其资源享有完全控制权限
DAC和MAC的特点:
1.DAC环境下进程是无束缚的
2.MAC环境下策略的规则决定控制的严格程度
3.MAC环境下进程可以被限定的
4.策略被用来定义被限定的进程能够使用那些资源(文件和端口)
5.默认情况下,没有被明确允许的行为将被拒绝
Selinux安全上下文工作类型:三种工作类型
1.targetd:对大部分网络服务进程进行管制。
2.minimum:以targetd为基础,仅对选定的网络服务进程进行管制。一般不用
3.mis:多级安全保护。对所有的进程进行管制。最严格的政策,配置难度最大,一般不用,除非对安全性有极高的要求。
安全上下文:
可以使用ll -Z 查看安全上下文
安全上下文是selinux的核心。
安全上下文的五个元素(用冒号隔开)
user:role:type:sensitivity:category
1.user:指示登录系统的用户类型,如root、user_u、system_u,多数本地进程属于自由(unconfined)。可以使用seinfo -u查看。
2.role:定义文件,进程和用户的用途;文件:object_r,进程和用户:system_r。可以使用seinfo -r查看
3.type:指定数据类型,规则中定义何种进程类型访问何种文件terget策略基于type实现的,多服务公用:public_content_t。可以使用seinfo -t 查看
4.seneitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secrt,top,secret,一个对象有且只有一个seneitivity,分别是0-15级,最低s0,target策略默认为s0。
5.Category:对特定的组织划分不划分层的分类,如FBI secret,NSA secrt,一个对象可以有多个categroy,c0-c1023共1024个分类,target策略不使用category。
列如:
user_u:object_r:tmp_t:s0:c0
( 补充:一般没安装
yum -y install setools-console
seinfo(选项)
-A:列出SELinux的状态、规则布尔值、身份识别、角色、类型等所有信息。
-t:列出SELinux所有类型(type)的种类。
-r:列出SELinux所有角色(role)的种类。
-u:列出SELinux所有身份识别(user)的种类。
-b:列出所有规则的种类(布尔值)。
)
SELinux策略
对象(object):所有可读的对象,包括文件、目录、进程和端口等。
主体:进程称为主体(subject)。
SELinux中对所有文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain的标签。domain标签能够执行的操作由安全策略里定义
安全策略:定义主体读取对象的规则数据库,规则中记录了那个类型的主体使用那个方法读取哪一项对象是允许还是拒绝的,并且定义了那种行为是运行或者拒绝。
启用SELinux
配置SELiunx:
1.Selinux是否启用
2.给文件重新打安全标签
3.给端口设备安全标签
4.设定某些操作的布尔型开关
5.selinux的管理日志
selinux的状态
1.enforcing:强制,每个受限的进程都是必然受限的。
2.permissive:允许,每个受限的进程违规操作不会被禁止,但是会被记录与审计日志。
3.disabled:禁用
配置selinux——是否启用
设置slinux模式开关:
getenforce: (查看当前selinux状态)
status:(查看selinux的当前状态)
setenforce:0|1 开启或关闭
o:设置为permissive
1:设置为enforcing
注意:如果当前系统的selinux状态为disabled时,使用setenforce 0 或者1切换时,要想生效,必须reboot重启。
修改配置文件:/etc/sysconfig/config
SELINUX={disabled|enforcing|permissive}
管理文件安全标签
修改文件的selinux标签的命令:
**chcon 命令
-h, --no-dereference:影响符号连接而非引用的文件。
–reference=参考文件:使用指定参考文件的安全环境,而非指定值。
-R, --recursive:递归处理所有的文件及子目录。
-v, --verbose:为处理的所有文件显示诊断信息。 # 学习目标
-u, --user=用户:设置指定用户的目标安全环境。
-r, --role=角色:设置指定角色的目标安全环境。
-t, --type=类型:设置指定类型的目标安全环境。
-l, --range=范围:设置指定范围的目标安全环境。
选项
-l:查询。
fcontext:主要用在安全上下文方面。
-a:增加,你可以增加一些目录的默认安全上下文类型设置。
-m:修改。
-d:删除。
以下选项是在指定了-R选项时被用于设置如何穿越目录结构体系
-H:如果命令行参数是一个通到目录的符号链接,则遍历符号链接。
-L:遍历每一个遇到的通到目录的符号链接。
-P:不遍历任何符号链接(默认)。
–help:显示此帮助信息并退出。
–version:显示版本信息并退出.
使用:
先查看需要修改的安全标签
比如需要修改用户环境标签,先用seinfo -u 查看用户环境标签
再用chcon -u 修改
(如果是目录需要加上R递归)
安全文件规则管理工具
semanage 命令
查看默认所有安全上下文列表
semanage fcontext -l
添加安全上下文
semanage fcontex -a -t
删除安全上下文
semanage fcontex -d -t
如:
semanage fcontext -a -t httpd_sys_content_t ‘/testdir(/.)?’
semanage fcontext -d -t httpd_sys_content_t ‘/testdir(/,)?’
管理端口标签
查询端口标签
semanage port -l
添加端口标签
semanage port -a -t http_port -t -p tcp 9527
删除端口标签
semanage port -d -t http_port -t -p tcp 9527
修改端口标签
semanage port -m -t http_port -t -p tcp 9527
管理selinux的bool(布尔值)开关
bool值为0:off开关关闭。
bool值为1:on开关开启。
查看:getsebool -a
(可能没有安装:yum -y install serrublesshoot*(重启后生效))
查看更为详细的bool
semanage boolean -l
查看修改过的值:
semanage boolean -l -C
设置bool值:
setsebool -P value (on,off)(这样修改是永久的)
selinux的管理日志
SElinux日志管理:
setrublesshhoot
一般没有安装需要安装:yum -y install setrublesshhoot
setrub 会将错误信息写入/var/log/message,使用方法如下
grep ‘setroubleshoot’ /var/log/messages
sealert -l UUID