SELinux——有趣的标签

SELinux


·SELinux: Secure Enhanced linux,工作与Linux内核中

·DAC:Discretionary Access Control 自由访问控制

·MAC:Mandatory Access Control  强制访问控制

         DAC环境下进程是无束缚的

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

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

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

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

·SELinux有四种工作级别:

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

         targeted:仅有限个进程受到selinux控制

                 只监控容易被入侵的进程

         minimum:centos7,修改过的targeted,只对选择的网络服务

         mls:提供MLS(多级安全)机制的安全性

                 minimum和mls稳定性不足,未加以应用

·sandbox:

         传统Linux,一切皆文件,由用户,组,权限控制访问

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

         所有文件和端口资源和进程都具备安全标签:安全上下文(security context)

        

         格式:

                 subject operation object

                 subject:进程

                 object:进程,文件,

                         文件:open,read,write,close,chown,chmod

                

                 subject:domain

                 object:type

        

         SELinux为每个文件提供了安全标签,也为进程提供了安全标签

                 user:role:type

                         user:SELinux的user

                         role:SELinux的角色

                         type:SELinux的的类型

        

         实际上下文:存放在文件系统中,

                 ls –Z;ps –Z

         期望(默认)上下文:存放在二进制的SELinux策略库(映射目录和期望安全上下文)中

                 semanage fcontext –l

        

         SELinux规则库:

                 规则:那种域能访问那种或那些种类型的文件

·配置SELinux:

         SELinux是否启用

         给文件重新打标

         给端口设置安全标签

         设定某些操作的布尔型特性

         SELinux的日志管理        

        

         1、SELinux的状态:

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

                 ·permissive:启用,每个受限的进程违规操作不会被禁止,但会被记录于审计日志

                 ·disabled:关闭

                

                 ·相关命令:        

                           sestatus

                               查看selinux的状态


                         getenforce:获取当前selinux状态

                         setenforce 0|1

                                 0:设置为permissive

                                 1:设置为enforcing

                        

                              此设定:重启系统后无效

                        

                         配置文件:

                                 /etc/selinux/config,/etc/sysconfig/selinux

                                         SELinux={disabled|permissive|enforcing}

                                 /boot/grub/grub.conf

                                         在kernel行追加内核参数:使用selinux=0禁用SELinux

        

         2、给配置文件重新打标:

                 chcon

                        chcon [OPTION]… CONTEXT FILE…

                        chcon [OPTION]… [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE…

                        chcon [OPTION]… –reference=RFILE FILE…

                        

                        -R:递归打标

        

        3、还原文件的默认标签:

                restorecon [-R] /path/to/somewhere

        

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

                 ·需要用到的包:semanage来自policycoreutils-python包

                

                 ·查看默认的安全上下文

                         semanage fcontext –l

                

                 ·添加安全上下文

                         semanage fcontext -a –t httpd_sys_content_t '/testdir(/.*)?'

                         restorecon –Rv /testdir

                        

                 ·删除安全上下文

                         semanage fcontext -d –t httpd_sys_content_t '/testdir(/.*)?'

                

                 ·查看端口标签

                         semanage port –l

                

                 ·添加端口

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

                         semanage port -a -t http_port_t -p tcp 9527

                        

                 ·删除端口

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

                         semanage port -d -t http_port_t -p tcp 9527

                

                 ·修改现有端口为新标签

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

                         semanage port -m -t http_port_t -p tcp 9527                

        

        5、布尔型规则:

                getsebool

                setsebool

                

                 ·查看bool值命令:

                         getsebool [-a] [boolean]

                         semanage boolean –l

                         semanage boolean -l –C

                

                 ·设置bool 值命令:

                         setsebool [-P] boolean value (on,off)

                         setsebool [-P] Boolean=value (0 ,1)

        

         6、SELinux日志管理:

                 安装包:yum install setroublesshoot* (重启生效)

                

                 将错误的信息写入/var/log/message

                 grep setroubleshoot /var/log/messages

                

                 sealert -l UUID

                         查看安全事件日志说明

                

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

                         扫描并分析日志        

        

         7、SELinux帮助:

                  yum -y install selinux-policy-devel (centos7)

                 yum -y install selinux-policy-doc  (centos6)

                 mandb | makewhatis

                 man -k _selinux

练习:


1、启用SELinux策略并安装httpd服务,改变网站的默认主目录为/website,添加SELinux文件标签规则,使网站可访问

SELinux——有趣的标签SELinux——有趣的标签

SELinux——有趣的标签

SELinux——有趣的标签

SELinux——有趣的标签

216.png

2、修改上述网站的http端口为9527,增加SELinux端口标签,使网站可访问

SELinux——有趣的标签

SELinux——有趣的标签

212.png

SELinux——有趣的标签

SELinux——有趣的标签

SELinux——有趣的标签SELinux——有趣的标签

SELinux——有趣的标签

SELinux——有趣的标签

3、启用相关的SELinux布尔值,使上述网站的用户student的家目录可通过http访问

SELinux——有趣的标签

SELinux——有趣的标签

SELinux——有趣的标签SELinux——有趣的标签

SELinux——有趣的标签SELinux——有趣的标签

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

(0)
上一篇 2016-09-18 15:10
下一篇 2016-09-18 15:49

相关推荐

  • 8月2日作业

    1、在/testdir/data里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。 答: ~]# groupadd g1 ~]# groupadd g2 ~]# groupadd g3 ~]# useradd -G g2 alic…

    Linux干货 2016-08-04
  • B-树和B+树的应用:数据搜索和数据库索引

    B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用。 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树; ⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据:    &nb…

    Linux干货 2015-07-30
  • 一个“蝇量级” C 语言协程库

    协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以…

    Linux干货 2016-08-15
  • 数组

    一.数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合。 索引:编号从0 开始,属于数值索引  注:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0 版本之后开始支持,bash 的数组支持稀疏格式(索引不连续) 二.数组的声明 declare -a ARRAY_NAME decla…

    Linux干货 2016-11-23
  • 用户和组

    用户和组 touch /etc/nologin     系统做维护时不想普通用户登录,就可以创建这个文件,也可以在里面写一些提示。     维护完之后删除这个文件就可以自动恢复      touch /run/nolog…

    Linux干货 2016-08-03
  • 从shell眼中看世界–展开和引用

    这篇博客的目的在于加深对于展开和引用的理解,阐释展开和引用之间联系。 ‘ ‘ :强引用,其中的变量引用不会被替换为变量值,而保持原字符串       ” “:弱引用,其中的变量引用会被替换为变量值    如果之前对于’ …

    Linux干货 2017-04-16

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-20 14:14

    总结的很好,理论与实践相结合起来了,赞一个。