??云主机低折扣年付还赠送90天?? 广告位招租 - 15元/月全站展示
??伍彩集团官网直营彩票 ??言情小说??
??私有威屁恩(独享/安全/稳定/高速/低价) ??Google Facebook Youtube 科学上网
广告位招租 - 15元/月全站展示 广告位招租 - 15元/月全站展示
MAC访问控制机制在Linux系统中的实现:SELinux

转载   花火殊途   2018-05-23   浏览量:453


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 

转载自://blog.51cto.com/chenliangdeeper/2119357



mac设置环境变量使得vim命令失效的原因及解决方式
原因:环境变量设置出错1,在命令行中输入exportPATH=usrbin:usrsbin:bin:sbin:usrX11R6bin这样可以保证命令行命令暂时可以使用。命令暂时可以使用。命令执行完之后先不要关闭终端或者cdusrbin下执行vi命令。
Tensorflow安装与环境配置(MacOS)
Tensorflow安装与环境配置(MacOS),pyhon安装pip安装virtualenv方式安装tensorflow验证安装。1python下载及安装,2pip3安装,3virtualenv方式安装tensorflow,4验证安装
Mac下安装TensorFlow出现权限不足解决方案
Mac下安装TensorFlow出现权限不足解决方案。
seaborn在mac中中文字体问题
seaborn在mac中无论用anaconda,还是直接shell的python运行,都会涉及到中文的显示。
mac安装nginx
由于mac的80端口收到访问限制,所以在开发过程中要使用的时候比较麻烦。前期都是通过做host,并在链接上拼接端口的方式访问本地代码。一切都是那么的相安无事,直到有一天,微信推出了web版调试工具。我勒个去啊
mac装双系统 分区合并问题 彻底删除win10分区
mac装双系统分区合并问题彻底删除win10分区。
mac brewinstallnginx,出现编译错误怎么办?
错误如下:==>Downloadinghttp:nginxorgdownloadnginx-162targzAlreadydownloaded:LibraryCachesHomebrewnginx-162targz==>configure--prefix=usrlocalCellarnginx162
Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决
Linux无法启用网卡:Deviceeth0hasdifferentMACaddressthanexpected,ignoring解决遇到这样一个错误:在linux上面,无法成功启动网卡,当我们Activate一个网卡的时候,提示下面的错误.Cannotact...
安装与运行thin, eventmachine CentOS6
安装与运行thin,eventmachine[CentOS6]安装难点主要是关联扩展,这个没装会报错Java代码yuminstalllibeventlibevent-develJava代码geminstallthin运行假如公网ip10.21.133.2,(cd入co...