SELinux介绍

SELinux概念

        安全加强的Linux,早期的Linux系统安全由系统管理员控制.SELinux就是一些安全规则的集合,类似于人类生活中的法律.

        DAC:   自由访问控制(以前的linux版本)

             DAC环境下的进程是无束缚的

        MAC:  强制访问控制(即使是root用户也会受到MAC的控制)

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

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

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

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

SELinux工作类型

    SELinux有四种工作类型:

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

          targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易 被入侵的进程,centos4只保护13个服务,centos5保护88个服务

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

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

    targeted为默认类型,minimum和mls稳定性不足,未加以应用,strict已不再使用

SELinux安全上下文

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

       规定每个进程只能访问哪些文件和端口

       chcon    -t      var_log_t       /var/log/messages

       restorecon   /var/log/messages

       semanage  fcontext  -l | grep   /var/log/messages

       semanage  fcontext   -a    -t    httpd_sys_content_t      "/data/html(/.*)?" 

       semanage命令需要安装软件包 policycoreutils-python

启用和禁用SELinux

  查看当前系统是否启用了SELinux  查看文件或者进程信息加 -Z 选项,如果LABEL信息不为空则表示已经启动了SELinux,如果为空则表示禁用了SELinux.

 1 [root@centos7 ~]# ll -Z guess.sh 
 2 -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 guess.sh
 3 [root@centos7 ~]# ps auxZ
 4 LABEL                           USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
 5 system_u:system_r:init_t:s0     root          1  0.0  0.3 193704  6844 ?        Ss   15:55   0:04 /usr/lib/systemd/
 6 system_u:system_r:kernel_t:s0   root          2  0.0  0.0      0     0 ?        S    15:55   0:00 [kthreadd]
 7 system_u:system_r:kernel_t:s0   root          3  0.0  0.0      0     0 ?        S    15:55   0:00 [ksoftirqd/0]
 8 system_u:system_r:kernel_t:s0   root          4  0.1  0.0      0     0 ?        S    15:55   0:18 [kworker/0:0]
 9 system_u:system_r:kernel_t:s0   root          5  0.0  0.0      0     0 ?        S<   15:55   0:00 [kworker/0:0H]
10 system_u:system_r:kernel_t:s0   root          7  0.0  0.0      0     0 ?        S    15:55   0:00 [migration/0]
View Code

临时切换成enforcing            setenforce  1         启用所有规则

临时切换成permissive         setenforce  0         提示告警信息,但不会真正阻止程序执行

永久启用(enforcing)或者禁用(disabled)    vim  /etc/selinux/config   

SELinux中(enforcing和permissive)两者和disabled无法直接相互切换.如果需要进行切换,必须修改配置文件,重启机器才能生效.

管理端口标签

   一个服务不能够随意使用任何一个端口,它的端口使用范围收到SELinux的策略限制.

   查看端口标签    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

管理SELinux布尔值的开关

      布尔型规则:  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)

管理日志

     SELinux会把日志信息写入到/var/log/messages中,通过查看分析日志来判定某个服务不能正常运行是不是由于SELinux设置的策略不对导致的.

     SElinux会把告警信息全部写入日志   grep    setroubleshoot      /var/log/messages

     sealert  -l UUID 列出具体的SELinux的详细问题信息包括解决方法

     

     

原文地址:https://www.cnblogs.com/yxh168/p/9040350.html