安全防护软件Selinux使用详解
网络安全是目前互联网的热门话题之一,作为个人用户的我们同样需要关注,做好防护。SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux® 上最杰出的新安全子系统。今天小编要为大家带来的就是CentOS上的安全防护软件Selinux详解,希望对大家会有帮助,有需要的朋友一起去看看吧
具体介绍
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的 实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的 任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterpri Linux 上,也可以作为其他发行版上容易安装的包得到,2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中
DAC:Discretionary Access Control自由访问控制
MAC:Mandatory Access Control 强制访问控制
DAC环境下进程是无束缚的
MAC环境下策略的规则决定控制的严格程度
MAC环境下进程可以被限制的
策略被用来定义被限制的进程能够使用那些资源(文件和端口)
默认情况下,没有被明确允许的行为将被拒绝
linux的工作类型
linux一共有四种工作类型
strict:每个进程都受到linux的控制
targeted:用来保护常见的网络服务,仅有限进程受到linux控制,系统当中默认设置类型
minimum:这个模式在centos7上,是targeted的修改版,只对选择的网络服务,仅对选中
的进程生效
mls:提供mls机制的安全性,国防级别的
linux安全上下文
传统的linux,一切皆文件,由用户、组、权限来进行访问控制,这当中有很多的缺陷
在linux中,一切皆对象(进程),有存放在inode的扩展属性域的安全元素所控制其访问
所有文件和端口资源和进程都具备安全标签,这就是安全上下文
安全上下文有五个元素组成
system_u:object_r:admin_home_t:s0
ur:role:type:nsitivity:category
ur:指示登录系统的用户类型,如root,ur_u,system_u,多数本地进程都属于自由进程
role:定义文件,进程和用户的用途,文件:object_r,进程和用户:system_r
type:指定数据类型,规则重定义何种进程类型访问何种文件,target策略基于type实现,多服务功用,public_content_t
nsitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,cret,top,一个对象有且只有一个nsitivity,分0-15个级别,s0最低,target策略默认使用是s0
category:对于特定组织划分不分层的分类,如FBI cret,NSA cret,一个对象可以有多个category, c0-c1023共1024个分类,target策略不适用category
查看安全上下文
ls –Z ; ps -Z
期望(默认)上下文:存放在二进制的linux策略库中
manage fcontext –l 查看系统中的默认安全上下文
@font-face {
font-family: “宋体”;
}@font-face {
font-family: “Cambria Math”;
}@font-face {
font-family: “Calibri”;
}@font-face {
font-family: “@宋体”;
}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: “Calibri”,”sans-rif”; }.MsoChpDefault { font-family: “Calibri”,”sans-rif”; }div.WordSection1 { }
linux策略
对象(object):所有可以读取的对象,包括文件、目录和进程,端口等
主体:进程称为主题(subject)
linux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain标签。domain标签能够执行的操作由安全策略里定义
当一个subject视图访问一个object,kernel中的粗略执行服务器将检查AVC,在AVC中,subject和object的权限被缓存,查找应用+文件的安全环境,然后根据查询结果允许或拒绝访问
安全策略:定义主体读取对象的规则数据库,规则中记录了那个类型的主体使用了那个方法读取哪一个对象是允许还是拒绝的,并且定义了那种行为是允许或拒绝
设置linux
配置linux
linux是否启用
给文件重新打安全标签
给端口设置安全标签
设定某些操作的布尔型开关
linux的日志管理
linux的状态
enforcing:强制,每个受限的进程都必然受限
permissive:允许;每个受限的进程违规操作不会被禁止,但会被记录与审计日志
disabled:禁用,允许任何操作
getenforce:获取linux当前状态
status:查看linux状态
tenforce 0|1
0:设置为permissive
影楼写真
1:设置为enforcing
配置文件
咸菜炒肉/etc/sysconfig/linux链接文件链接到/etc/linux/config幼猫怎么养
/etc/linux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of the three values:
# enforcing – SELinux curity policy is enforced.
# permissive – SELinux prints warnings instead of enforcing.
# disabled – SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in u. Possible values are:
劳动法规定
# targeted – Only targeted network daemons are protected.
易上火体质# strict – Full SELinux protection.
SELINUXTYPE=targeted
SELINUX=enforcing 设置linux的状态
SELINUXTYPE=targeted 设置linux的工作类型
设置linux也可以在开机的时候设定,在/boot/f文件内核那一行后面设定linux的状态linux=0|1,只要配置文件或内核设定为禁用,最后linux的状态为禁用
注意:在从disabled状态切换至enforcing或permissive状态需要重启系统,这时候系统会对每一个文件一一重打标签,需要花费一定的时间。
修改linux 的安全标签
给文件重新打安全标签
chcon [OPTION]… [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE..
chcon [OPTION]… –reference=RFILE FILE..
-R:递归打标,对目录而言
例如我想给自己定义的web文档根目录自定义为/htdocs
chcon -R httpd_sys_content_t /htdocs
恢复目录或文件默认的安全上下文
resotrecon [-R] /path/to/somewhere
例如:我又将web的文档根目录改为原来的目录,这时候自定义的目录的标签需要还原
古风网名两个字
restorecon -R /htdocs
恢复是根据策略库当中的策略进行还原
默认安全上下文查询与修改
图书馆管理制度manage来自policycoreutils-python包,有些系统默认没有安装,安装次包即可使用manage命令
查看默认的安全上下文
manage fcontext –l
添加安全上下文
manage fcontext -a –t httpd_sys_content_t ‘/home/hadoop(/.*)?’
restorecon –Rv /home/hadoop 此步骤一定不能忘记,它从策略库进行还原安全上下文,执行此命令才会生效
删除安全上下文
manage fcontext –d –t httpd_sys_content_t ‘/home/hadoop(/.*)?’
linux端口标签
查看端口标签
manage port -l
添加端口
manage port -a -t port_label –p tcp|udp port
manage port –a -t htt_port_t -p tcp 8080
删除端口
manage port -d -t port_label -p tcp|udp port
公顷平方公里manage port -d -t htt_port_t -p tcp 8080
修改现有(已存在)端口为新标签
manage port -m –t port_label –p tcp|udp port
manage port –m –t ssh_port_t –p tcp 8080 将ssh服务的端口改为8080
linux布尔值
查看布尔值命令
getbool [-a] [boolean]
manage boolean –l -C 查看修改过的布尔值
设置bool值命令
tbool [-P] boolean value (on|off|1|0)
tbool httpd_enable_homedirs on|1 开启httpd家目录访问,但不会写入策略库中