MAC访问控制机制在Linux系统中的实现:SELinux

SELinux
全称:Security-Enhanced Linux,安全加强的Linux;
SELinux系统的本来名称为MAC:强制访问控制;SELinux就是MAC访问控制机制在Linux系统中的实现;

操作系统安全等级标准(橙皮书):
    D级别(最低安全级别)
    C级别:C1, C2  (DAC自主访问控制,例如windows等系统的安全级别为C1级别)
    B级别:B1, B2, B3 (强制访问控制级别MAC)
    A级别(最高安全级别)

访问控制机制:
    DAC:Discretionary Access Control,自主访问控制:
        基于文件或数据被文件系统赋予的访问权限(r,w,x)的方式实现的访问控制机制;

    MAC:Mandatory Access Control,强制访问控制:
        对于文件或数据的访问权限不是针对用户身份来设定,当某个用户发起某个进程之后,该进程是否能够操纵或处理此文件或数据,取决于进程和文件是否具备可以匹配的domain(进程的域)和type(文件的类型);

SELinux工作于Linux内核中:
    RHEL 4.0:测试性的加入了SELinux安全组件;
    RHEL 5.0:在安全操作系统时强制安装此组件,但可以在安装时选择关闭相应功能;
    RHEL 6.0+:在安装操作系统时强制安装此组件,且在系统启动之后自动启动其功能;

SELinux依赖于安全策略结果进行相应的访问控制管理,策略结果已知的有三种:
    1、strict(严格策略):对于每个文件都要严格的规定其类型,对于每个进程都要设定特定的域,进程的域和文件的类型必须严格匹配,才能允许进程访问此文件;
    2、mls:multi-level security,多级安全策略结果集;  //发行版内被去除
    3、targeted:仅对有限个进程进行SELinux的强制访问控制管控;只要进程的域和文件的类型属于某同一大类,就可以匹配,就可以允许进程访问文件;在RHEL系操作系统中为此策略结果;     //所有有限个进程:指的是那些容易被入侵并且会对系统造成安全隐患的进程

    注意:在targeted策略结果集中,仅关心进程的domain和文件的type能否匹配,与其他的安全上下文标识没有关系;

Sandbox(SELinux需要在沙箱中完成):
    在Linux系统中,能够完成真实操作的实体,是进程;
        subject, action(operation), object
            subject:进程
            action(operation)动作:open, close, read, write, modify, delete, chmod, chown, ...
            object:文件,进程,套接字,链接,...

    SELinux为每个文件和进程提供了一套安全标签,这些安全标签可以称为SELinux的安全上下文(security context);
        user-identify:role:domain|type:sencitivity
            user-identify:SELinux的用户身份标识,通常指用户的类型;
            role:角色
            domain|type:进程的域或文件的类型;
            sencitivity:敏感度;

    SELinux的策略库(规则库):用来存放规则
        规则:进程的哪个域可以以哪种方式访问或操纵哪些类型的文件;存放于/etc/selinux/targeted/policy目录中;

        /etc/sysconfig/selinux文件中定义了SELinux的工作模式和使用的策略结果集;
            SELINUX=enforcing
            SELINUXTYPE=targeted

    SELinux的工作模式(/etc/sysconfig/selinux文件中定义SELinux工作模式):
        enforcing - 强制开启SELinux机制
        permissive - 警告模式,所有动作被记录下来,但并不会阻止操作
        disabled - 关闭SELinux机制

        注意:
            1.凡是从enforcing或permissive模式切换至disabled模式,或者从disabled模式切换至enforcing或permissive模式,都必须经过操作系统的重新引导才能生效;
            2.从enforcing模式到permissive模式的切换,可以直接使用命令行工具完成且立即生效;
                setenforce命令:切换SELinux的工作模式
                    setenforce [ Enforcing | Permissive | 1 | 0 ]
                        1:Enforcing
                        0:Permissive
                getenforce命令:显示SELinux的工作模式

                注意:使用setenforce命令修改的SELinux的工作模式会立即生效,但并非永久有效;如果想要使被修改的SELinux的工作模式永久有效,则需要修改/etc/sysconfig/selinux文件中的SELINUX参数的值,并重新引导操作系统;

查看进程或文件的SELinux的安全上下文:
    文件安全上下文查看:
        ls -Z|--context [file]
    进程安全上下文查看:
        ps auxZ|-efZ

修改文件的安全上下文:
    chcon命令:
        常用选项:
            -t, --type=TYPE:直接设置目标文件的类型;
            -R, --recursive:递归地修改目录中所有文件,包括子目录中的文件;
            --reference=RFILE:参考RFILE所代表的文件的安全上下文,为目标文件设置完全相同的安全上下文;
        使用场景:
            通常在进程的安全上下文与文件的安全上下文类型不相符合或不能匹配的时候使用;

        示例:
            设置httpd虚拟主机对应的文档根目录的安全上下文:
                ~]# chcon -t httpd_sys_content_t -R /myweb
                ~]# chcon --reference=/var/www -R /myweb

    restorcon命令:
        常用选项:
            -R, -r:递归修改指定目录及其子目录的安全上下文为默认值;
        示例:
            撤销httpd虚拟主机对应的文档根目录的安全上下文:
                ~]# restorcon -R /myweb

查看或修改策略中的内容:
    getsebool命令:查看SELinux的布尔值
        常用选项:-a:查看所有SELinux的布尔值
    setsebool命令:修改SELinux的布尔值
        常用选项:
            -P:如果添加-P选项,则将附加的值直接写入磁盘中的策略文件中,永久生效;如果不添加-P选项,则重启后恢复默认布尔值
        使用场景:支持二进制策略修改的系统服务;
            1.vsftpd的匿名用户的上传功能被SELinux限制的场景:
                ~]# setsebool -P ftpd_anon_write on
                ~]# setsebool -P ftpd_full_access=1
            2.samba服务中samba用户访问自己的家目录的共享结果被SELinux限制的场景:
                ~]# setsebool -P samba_enable_home_dirs on
            3.samba服务中共享的目录是由管理员自行创建并指定的:
                chcon -t samba_share_t /path/to/directory

    semanage命令:SELinux的策略管理工具  //如果没有此命令,安装policycoreutils-python程序包
            semanage port命令:
                -a, --add:添加一个端口号
                -d, --delete:删除一个端口号
                -m, --modify:修改一个端口号
                -l, --list:列出已被定义的端口号
            示例:

                ~]# semanage port -a -t http_port_t -p tcp 8088 

原文地址:http://blog.51cto.com/chenliangdeeper/2119357

时间: 2024-11-09 23:27:06

MAC访问控制机制在Linux系统中的实现:SELinux的相关文章

获得Unix/Linux系统中的IP、MAC地址等信息

获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 作者:diaoyf  |  文章来源:http://programmerdigest.cn 实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP.端口信息.但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地

Linux 系统中 如何配置自定义命令 (Mac本同样适用)

我相信  熟悉Linux的同学们  都有一个烦恼  就是 如果要查看某一个文件的时候   要一级或者多级的去cd切换目录,哪有木有便捷的方法来随意切换呢?  就像快捷键一样这就是在 Linux 系统中配置自定义命令,很简单?? 在文件/root/.bashrc中,添加以下行: alias mycommand = "cd /root" 在终端直接执行mycommand就会执行cd /root ??:    source ~/.bash_profile  这个命令一定要记得执行,这一行命令

Linux系统中的防火墙的实现:iptables/netfilter

防火墙:包括软件防火墙(基于iptables/netfilter的包过滤防火墙)和硬件防火墙,在主机或网络边缘对经由防火墙的报文以一定条件进行检测过滤的一系列组件. Linux系统中的防火墙的实现:利用iptables/netfilter既可以实现主机防火墙(安全服务范围仅限于当前某台主机),又可以实现网络防火墙(安全服务范围为当前局域网).netfilter:Linux系统内核中防火墙的框架,防火墙功能实现的主体:iptables:为netfilter编写数据传输的匹配规则的用户空间中的应用程

在Linux系统中文件(资源)和用户的管理

一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程.也可以说进程是程序的一个实例,是程序的动态表现. 在 Linux 系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的.大家都知道,程序有输入和输出,也称这为程序IO.如果我们程序数据输入是磁盘.如,Web 服务器,接收用户的请求之后,把网页数据从磁盘中读入加工之后再把数据响应给用户.如果,发起Web 服务进程的用户没有读取该用户请求网页文件的权限.则无法响应用户的请求了.所以,文件(资

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格

Linux系统中DHCP服务实战

Linux系统中DHCP服务实战部署 一.实验要求 1.将系统的主机名改成s01.benet.com 2.搭建一台dhcp服务器为局域网分配IP地址,要求分配192.168.40.0/24 3.为boss保留192.168.40.188地址 二.实验环境 虚拟机VMware Workstation11.0 RED HET 6.5 三.实验步骤 1.将系统的主机名改成s01.benet.com 2.搭建dhcp服务.为局域网分配IP地址 3.测试主机分配地址效果 4.给boss分配192.168.

在LINUX系统中安装KVM虚拟化

首先CPU要支持虚拟化(Intel是vmx,AMD是svm)[[email protected] ~]# egrep '(vmx|svm)' --color /proc/cpuinfo确保BIOS里开启VT,如果无法安装会有未开启虚似化的提示,去BISO里开启Intel(R) Virtualization Tech [Enabled] 安装虚拟化套件,由于安装包较多,应该先配置好YUM库,然后用YUM安装虚似化的四个组,完装完无法打开有可能是你少装包了,检查一下是不是有错字.[[email pr

老男孩教育每日一题-2017年5月2日-Linux系统中,不小心把chmod命令的权限弄没了,怎么解决?

老男孩教育每日一题-2017年5月2日-Linux系统中,chmod命令没有执行权限(x权限)或者chmod命令文件的权限为000,怎么解决? 解决方法有两种: 方法一: [[email protected] bin]# cp cp /oldboy/chmod.new (此时复制cp命令文件命名叫chmod.new,此时chmod.new文件有就x的权限,但chmod.new不具备有chmod命令的共功能) [[email protected] bin]# cd /oldboy/ [[email

Linux系统中“动态库”和“静态库”那点事儿【转】

转自:http://blog.chinaunix.net/uid-23069658-id-3142046.html 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情. 在Linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式.ELF(Executable and Linking Format,可执行连接格式)是UNIX系统实验室(USL)作为应用程序二进制