linux上安全软件SElinux

selinux简介

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的 实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的 任务中所需要文件。SELinux 默认安装在 Fedora Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到,2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中

DACDiscretionary Access Control自由访问控制

MACMandatory Access Control 强制访问控制

DAC环境下进程是无束缚的

MAC环境下策略的规则决定控制的严格程度

MAC环境下进程可以被限制的

策略被用来定义被限制的进程能够使用那些资源(文件和端口)

默认情况下,没有被明确允许的行为将被拒绝

 

 

selinux的工作类型

selinux一共有四种工作类型

strict:每个进程都受到selinux的控制

targeted:用来保护常见的网络服务,仅有限进程受到selinux控制,系统当中默认设置类型

minimum:这个模式在centos7上,是targeted的修改版,只对选择的网络服务,仅对选中的进程生效

mls:提供mls机制的安全性,国防级别的

 

 

selinux安全上下文

传统的linux,一切皆文件,由用户、组、权限来进行访问控制,这当中有很多的缺陷

selinux中,一切皆对象(进程),有存放在inode的扩展属性域的安全元素所控制其访问

所有文件和端口资源和进程都具备安全标签,这就是安全上下文

 

安全上下文有五个元素组成

system_u:object_r:admin_home_t:s0

userroletypesensitivitycategory

user:指示登录系统的用户类型,如rootuser_u,system_u,多数本地进程都属于自由进程

role:定义文件,进程和用户的用途,文件:object_r,进程和用户:system_r

type:指定数据类型,规则重定义何种进程类型访问何种文件,target策略基于type实现,多服务功用,public_content_t

sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassifiedsecrettop,一个对象有且只有一个sensitivity,分0-15个级别,s0最低,target策略默认使用是s0

category:对于特定组织划分不分层的分类,如FBI secretNSA secret,一个对象可以有多个category c0-c10231024个分类,target策略不适用category

 

查看安全上下文

ls –Z ; ps  -Z

期望(默认)上下文:存放在二进制的selinux策略库中

 

semanage  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-serif”; }.MsoChpDefault { font-family: “Calibri”,”sans-serif”; }div.WordSection1 { } 1.jpg

selinux策略

对象(object):所有可以读取的对象,包括文件、目录和进程,端口等

主体:进程称为主题(subject

selinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain标签。domain标签能够执行的操作由安全策略里定义

当一个subject视图访问一个objectkernel中的粗略执行服务器将检查AVC,在AVC中,subjectobject的权限被缓存,查找应用+文件的安全环境,然后根据查询结果允许或拒绝访问

安全策略:定义主体读取对象的规则数据库,规则中记录了那个类型的主体使用了那个方法读取哪一个对象是允许还是拒绝的,并且定义了那种行为是允许或拒绝

 

设置selinux

配置selinux

selinux是否启用

给文件重新打安全标签

给端口设置安全标签

设定某些操作的布尔型开关

selinux的日志管理

 

selinux的状态

enforcing:强制,每个受限的进程都必然受限

permissive:允许;每个受限的进程违规操作不会被禁止,但会被记录与审计日志

disabled:禁用,允许任何操作

 

getenforce:获取selinux当前状态

sestatus:查看selinux状态

setenforce  0|1

         0:设置为permissive

         1:设置为enforcing

 

配置文件

/etc/sysconfig/selinux链接文件链接到/etc/selinux/config

/etc/selinux/config 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing – SELinux security policy is enforced.

#       permissive – SELinux prints warnings instead of enforcing.

#       disabled – SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted – Only targeted network daemons are protected.

#       strict – Full SELinux protection.

SELINUXTYPE=targeted

 

SELINUX=enforcing 设置selinux的状态

SELINUXTYPE=targeted 设置selinux的工作类型

 

设置selinux也可以在开机的时候设定,在/boot/grub/grub.conf文件内核那一行后面设定selinux的状态selinux=0|1,只要配置文件或内核设定为禁用,最后selinux的状态为禁用

注意:在从disabled状态切换至enforcingpermissive状态需要重启系统,这时候系统会对每一个文件一一重打标签,需要花费一定的时间。

 

修改selinux 的安全标签

给文件重新打安全标签

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     

恢复是根据策略库当中的策略进行还原

 

默认安全上下文查询与修改

semanage来自policycoreutils-python包,有些系统默认没有安装,安装次包即可使用semanage命令

 

查看默认的安全上下文

semanage fcontext –l

2.jpg

添加安全上下文

semanage fcontext  -a –t  httpd_sys_content_t ‘/home/hadoop(/.*)?’

restorecon –Rv  /home/hadoop  此步骤一定不能忘记,它从策略库进行还原安全上下文,执行此命令才会生效

 

删除安全上下文

semanage fcontext –d –t httpd_sys_content_t ‘/home/hadoop(/.*)?’

 

selinux端口标签

查看端口标签

semanage  port  -l

3.jpg

 

添加端口

semanage port  -a  -t  port_label –p  tcp|udp  port

semanage port –a  -t htt_port_t   -p tcp   8080

 

删除端口

semanage port  -d  -t port_label  -p tcp|udp  port

semanage port  -d  -t  htt_port_t  -p tcp 8080

 

修改现有(已存在)端口为新标签

semanage  port  -m –t port_label –p tcp|udp  port

semanage port –m –t  ssh_port_t –p tcp 8080   ssh服务的端口改为8080

 

selinux布尔值

查看布尔值命令

getsebool [-a] [boolean]

semanage  boolean –l  -C  查看修改过的布尔值

4.jpg

 

 

设置bool值命令

setsebool [-P] boolean  value on|off|1|0 

setsebool  httpd_enable_homedirs  on|1  开启httpd家目录访问,但不会写入策略库中

setsebool  -P   httpd_enable_homedirs  on|1

 

修改bool值时后面的值可以对布尔值类型后跟=加值的设置方法

setsebool  httpd_enable_homedirs=on

 

 

selinux的日志管理

需要安装settroublesshoot*安装此包需要重启系统才能生效,它会将错误日志记录到/var/log/message

grep setroubleshoot  /var/log/message

sealer  -l  UUID

查看安全事件日志说明

sealert  -a  /var/log/audit/audit.log

5.png

扫描并分析日志

yum -y install selinux-policy-develcentos7

yum –y install selinux-policy-doc centos6

mandb | makewhatis 需要更新man帮助的数据才能查询

man -k _selinux

 

例如man  httpd_selinux

 6.png

总结:selinux在安全防护上确实起到了一定的作用,它是在内核层面来工作,往往有许多的漏洞,一旦黑客利用漏洞入侵系统后果不堪设想,还有其操作的繁琐和稳定性的欠缺的导致很多企业不愿意用到selinux ,一般都会使用硬件的安全防护设备,所以我们只需要作为了解,知道有这么个东西,如何开关闭及一些简单的操作即可。

 

 

 

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/47073

(0)
fszxxxksfszxxxks
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • corosync + pacemaker搭建高可用http

    一、实验图:    二、实验环境准备:  1)时间同步(172.16.2.15是时间服务器) [root@web1 ~]# crontab  -e   */5 * * * * /usr/sbin/ntpdate&nbsp…

    Linux干货 2015-06-30
  • 精解局域网访问及共享(三)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/155109    上一节中的2种情况都是默认的简单共享,下面我们着重分析一下高级共享方式下的各种访问情况。毕竟这种方式用的很普遍,而且在权限…

    Linux干货 2015-03-25
  • 关于压测的宏观个人总结

    工作角色定位 首先先从宏观角度来评估下本次的压测工作. 从工作职责上说本次压测理应由组内其它同学来完成,个人从旁协助或指导即可。团队成员的成长对我个人来说才是更大的成长。所以即使这次压测工作完成的再出色,都会因为是由我来完成的,所以都不能称之为优秀的。对我个人的成长最多是项目经验的增长和问题的积累,但对组员来说如何让他们做到现有成果的80%是我需要帮助他们来…

    Linux干货 2015-04-21
  • 四大开源协议比较:BSD、Apache、GPL、LGPL

          现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种。我们现在常见的开源协议如BSD, GPL, LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。   这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开…

    系统运维 2016-08-15
  • 线上多服务管理工具实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1583156        公司线上对nginx、tomcat和jar包的java应用的服务管理脚本之前都是单独分离开…

    Linux干货 2016-08-15
  • 10个必需的iOS开发工具和资源

       界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自10 Essential iOS Developer Tools & Resources,这个文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iO…

    Linux干货 2015-04-01