zoukankan      html  css  js  c++  java
  • 安全强化机制——SELinux

    1.基本 SELINUX 安全性概念

    SELINUX(Security Enhanced Linux),意思是安全增强型Linux, 是可保护你系统安全性的额外机制

    在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 (若要访问文件 ,你必须具有普通访问权限和 SELinux 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源) 标签

    2.SELINUX的状态

    三种状态: <1>enfirocing? ##强制模式? <2>permissive ##警告模式? <3>disabled? ##关闭模式

    【1】更改 selinux的开机状态,重启生效!

    vim /etc/sysconfig/selinux? ##selinux的配置文件

    SELINUX=enforcing|permissive|disabled

    【2】显示及更改 SELINUX 模式

    显示:getenforce
    更改:setenforce 0|1
    0 表示 permissive? 警告但不阻止可疑行为

    1 表示 enforcing? 强制阻止可疑行为


    3.SELINUX的安全上下文

    selinux 安全上下文访问规则
    WEB 服务器的 HTTPD 进程设置了 SELINUX 上下文system_u:system_r:httpd_t 标签。该上下文的重要部分是第三个用冒号分隔的字段 SELINUX 类型 : httpd_t

    系统上的文件和资源也设置了 SELINUX 上下文标签 , 并且重要的部分是 SELINUX 类型。例如 , /var/www/html 中的文件具
    有类型 httpd_sys_content_t . /tmp 和 /var/tmp 中的文件通常具有类型 tmp_t

    Seliux 策略具有允许以 httpd_t 身份运行的进程访问标记为httpd_sys_content_t 的文件的规则。没有规则允许这些进程访问标记有 tmp_t 的文件 ,因此将拒绝这些访问

    【1】暂时性更改文件的安全上下文

    ls -Z ##查看安全上下文

    chcon -t public_content_t file##修改安全上下文

    一次性定制安全上下文 , 执行 restorecon 刷新后还原

    实验:

    将/mnt的文件移动到/var/ftp中

    查看/var/ftp的安全上下文

    因为安全上下文不同,故用lftp链接时不显示文件

    更改westos的安全上下文

    再次连接显示文件

    【2】永久性修改安全上下文

    semanage fcontext -a -t public_content_t? ‘/westos(/.*)?‘ ##(/.*)?表示westos后的所有文件和目录

    fcontext 规则中最常用的扩展正则表达式是 (/.*)?, 表示随意匹配 / 后跟任何数量的字符

    restorecon -FvvR /westos/ ##使更改的内容生效

    实验:

    新建目录、文件,查看其默认上下文

    修改安全上下文

    在系统中搜索/westos的安全上下文

    添加成功!

    4.管理 SELinux 布尔值

    SELinux 布尔值是更改 SELinux 策略行为的开关, 是可以启用或禁用的规则

    安全管理员可以使 SELinux 布尔值来调整策略 , 以有选择地进行调整

    getsebool 用于显示布尔值 , setsebool 用于修改布尔值

    setsebool -P 修改 SELinux 策略 , 以永久保留修改。

    实验环境:selinux状态为警告/强制,在强制状态下,客户端切换到student用户,是不可以上传文件的

    设置布尔值(1开启,0关闭)

    测试:可登录、上传

    5.监控 SELinux 冲突

    • 必须安装 setroubleshoot-server 软件包 , 才能将 SELinux消息发送至 /var/log/messages
    • setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
    • 摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ), 可用于收集更多信息
    • Sealert -l UUID 用于生成特定事件的报告。Sealert-a/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
    • 当setroubleshoot-server 软件包存在时,客户端如果访问失败,cat /var/log/messages日志中会有解决方案
    • 如果卸载setroubleshoot-server 软件包? 日志中没有解决方案。
    /var/log/audit/audit.log selinux日志存放位置
    /var/log/messages
    selinux解决方案

    安装软件:

    setroubleshoot-server.x86_64 : SELinux troubleshoot server

    清空日志:

    > /var/log/audit/audit.log

    >/var/log/messages

    实验:
    touch /mnt/westos? ?
    mv /mnt/westos? /var/ftp/

    ftp://172.25.254.205? ##看不到westos

    ?cat /var/log/audit/audit.log? ##查看问题出在哪里

    cat /var/log/messages? ##查看解决方案

    【1】方案一:修改安全上下文

    【2】方案二:修改布尔值

    restorecon -v /var/ftp/*?

    ftp://172.25.254.205? ##可以看到westos

    6.SELINUX影响服务资源

    yum install httpd ##安装Apache

    vim /etc/httpd/conf/httpd.conf

    修改前

    修改后

    systemctl restart httpd? ##服务不能重启

    setenforce? 0 ?

    systemctl restart httpd ##服务开启证明是selinux的问题

    semanage port -l |grep http? ##查看http的端口


    semanage port -a -t? http_port_t -p tcp 6666 ##添加6666端口
    semanage port -l |grep http ##6666已经添加



    systemctl restart httpd ##重启成功

    补充:通过以下方式查看服务端口
    cat /etc/services |grep ftp ##查看服务的端口

    可以看到ftp服务的端口是21

  • 相关阅读:
    记支付宝接口对接,涉及到提取证书SN号的解决方案
    Second Level Cache for Entity Framework 6.1
    记一个dynamic的坑
    使用EntityFramwork[6.1]进行级联保存的时候出现异常
    转:Transform Web.Config when Deploying a Web Application Project
    转:程序员如何增加收入
    超实用的JavaScript技巧及最佳实践(下)
    超实用的JavaScript技巧及最佳实践(上)
    Oracle PL/SQL入门语法点
    轻量级IOC框架:Ninject (下)
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/9928968.html
Copyright © 2011-2022 走看看