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)
megedugaomegedugao
上一篇 2016-09-18 15:10
下一篇 2016-09-18 15:49

相关推荐

  • Hadoop简介

    Hadoop的概要介绍 Hadoop,是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。 简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。该平台使用的是面向对象编程语言Java实现的,具有良好的可移植性。 Hadoop的发展历史 &nbsp…

    Linux干货 2015-04-13
  • shell脚本编程之一

    shell脚本编程之一 shell脚本基础 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 格式要求:首行shebang机制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl shell脚本的用途有: 自动化常用命令 执行系统管理和故障排除 常见简单的应用程序 处理文本或文件 创建shell脚本 第一步…

    Linux干货 2016-08-18
  • Shell——Linux基本命令(2)

    1.Shell Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行. shell也被称为LINUX的命令解释器(commandinterpreter). vshell是一种高级程序设计语言. 2.bash shell GNUBourne-AgainShell(bash)是GNU计划中重要的工…

    2017-07-13
  • Linux文件系统

    Linux:glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关:操作引导启动过程当中自动启动 操作系统的组成: 静态:kernel, application 文件系统:层级结构 FHS: Filesystem Hierarchy Standard /bin:所有用户可用的基本命…

    Linux干货 2016-11-10
  • 创建及管理KVM工具之virsh

    一、什么是虚拟化 虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。 二、虚拟化能做什么 CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 三、虚拟化…

    Linux干货 2017-01-19
  • 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

评论列表(1条)

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

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