微信订阅号二维码
本栏目热门内容
  • 微软安全合规工具包(SCT...
  • SELINUX介绍连载#3:什么...
  • Windows 系统安全基线及软...
  • SELINUX介绍连载#2:模式...
  • 详细了解微软安全合规工具...
  • CIS关键安全控制措施#7持...
  • 从甲方角度介绍“CIS互联...
  • 关于OpenSCAP/SCAP安全策...
  • CIS关键安全控制措施#8审...
  • SELINUX介绍连载#1:基础...
  • CIS关键安全控制措施#9电...
  • 安装RHEL/CentOS时如何选...
  • CIS关键安全控制措施#5账...
  • CIS关键安全控制措施#2软...
  • CIS关键安全控制措施#6访...
  • SELINUX介绍连载#4:策略...
  • 什么是网络行为异常检测(...
  • CIS关键安全控制措施#12网...
  • CIS关键安全控制措施#11数...
  • 网络行为异常检测(NBAD)...
  • 如何使用OpenSCAP检查工具...
  • CIS关键安全控制措施#14安...
  • CIS关键安全控制措施#10防...
  • CIS关键安全控制措施#1总...
  • CIS关键安全控制措施#15服...
  • CIS关键安全控制措施#16应...
  • CIS关键安全控制措施#4企...
  • CIS关键安全控制措施#18渗...
  • CIS关键安全控制措施#16应...
  • 更多...

    网络安全等级保护之SELINUX介绍连载之四(策略设置)
    作者:Sender  来源:WaveCN.com  发布日期:2022-03-10  最后修改日期:2022-03-10

      SELinux的策略设置主要是通过布尔开关控制。开关的方式使得修改SELinux设置的过程还是很简单的。但首先我们要按在《基础知识篇》中所描述的,安装好所有相关的包,否则没有命令可以操作。

      运行semanage命令可以查看到有什么可以修改的布尔开关:

    semanage boolean -l | less
    

     

      输出内容包括了开关名称、当前状态、默认值和用途简介:

    SELinux boolean                State  Default Description
    
    privoxy_connect_any            (on   ,   on)  Allow privoxy to connect any
    smartmon_3ware                 (off  ,  off)  Allow smartmon to 3ware
    mpd_enable_homedirs            (off  ,  off)  Allow mpd to enable homedirs
    xdm_sysadm_login               (off  ,  off)  Allow xdm to sysadm login
    xen_use_nfs                    (off  ,  off)  Allow xen to use nfs
    mozilla_read_content           (off  ,  off)  Allow mozilla to read content
    ssh_chroot_rw_homedirs         (off  ,  off)  Allow ssh to chroot rw homedirs
    mount_anyfile                  (on   ,   on)  Allow mount to anyfile
    cron_userdomain_transition     (on   ,   on)  Allow cron to userdomain transition
    xdm_write_home                 (off  ,  off)  Allow xdm to write home
    openvpn_can_network_connect    (on   ,   on)  Allow openvpn to can network connect
    xserver_execmem                (off  ,  off)  Allow xserver to execmem
    

     

      比如其中xen_use_nfs,用途是“是否允许XEN服务使用NFS网络共享”。在当前是处于关闭状态,即禁止这种访问行为,默认值也是关闭的。

     

      要修改设置,可以通过 setsebool 命令。例如一个(存在一定危险性的)设置叫“ftpd_anon_write”,是否允许匿名FTP用户写入文件,我们先查看其当前状态:

    getsebool ftpd_anon_write
    ftpd_anon_write --> off 
    

     

      因为实际生产需要,经慎重考虑和进行了其它防范措施后,我们打开这个设置:

    setsebool ftpd_anon_write on
    

     

      随后再查看一次:

    getsebool ftpd_anon_write
    ftpd_anon_write --> on
    

     

      注意:修改后的布尔开关并不是永久的,系统重启后就会恢复原来的值。如果要把设置固化,需要在设置的同时带上-P参数。例如:

    setsebool -P ftpd_anon_write on
    

     

      下面给出一些笔者在实际生产环境中碰到需要开启的设置,逐一介绍如下:

      允许反病毒软件扫描检查系统。设置如下:

    setsebool -P antivirus_can_scan_system on
    

    这是因为等级保护测评时都要求要安装杀毒软件。Linux发行版一般都带有clamav杀毒软件,安装后会设置cronjob定期扫描系统。但如果不开启这个布尔开关,clamscan程序就无法扫描读取所有文件,然后报错。有些发行版会把这个设置名称改为 clamscan_can_scan_system ,需要注意。

      注:clamav的误报是实在厉害,只能用来检查,绝对不能设置自动清除。本号会另外介绍CLAMAV在生产实际中的部署。

      允许反病毒软件clamav使用jit引擎进行查杀:

    setsebool -P clamd_use_jit on
    

    因为clamscan使用jit引擎时会占用CPU资源,有可能被恶意利用。所以这个设置可以控制clamscan的行为。

      允许logwatch服务通过网络发送邮件:

    setsebool -P logwatch_can_network_connect_mail on
    

    logwatch定时运行,扫描各种日志并产生摘要邮件发给root用户(或指定用户)。这个设置用于允许logwatch对本服务器之外的邮件地址发送邮件。这个做法存在一定风险性,比如错误地把信息发给了不相关的人。

      允许httpd服务发送邮件:

    setsebool -P httpd_can_sendmail on
    

    httpd即apache,允许发送邮件有可能由于邮件堵塞之类问题而导致httpd的服务效能下降,也有可能错误发送邮件导致信息外泄。

      允许httpd服务连接网络、连接数据库。

    setsebool -P httpd_can_network_connect on
    setsebool -P httpd_can_network_connect_db on
    

    如果不开启,会导致PHP程序出现类似这样的错误:

    Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Permission denied'
    

    所以只要用了PHP就必须开了。

      设置SAMBA服务的共享是可读写

    setsebool -P samba_export_all_rw on
    

    设置SAMBA服务的共享是只读

    setsebool -P samba_export_all_ro on
    

    以上两个一般同时开,也就是具体的共享目录究竟是读写还是只读,交回给SAMBA自己根据配置文件去判断和控制。

      以下四个设置都有一定风险,所以一般不开,仅作为说明。第一个是设置SAMBA服务默认共享用户的主目录(仿照WINDOWS的做法)

    setsebool -P samba_enable_home_dirs on
    

    设置SAMBA服务可以为用户创建主目录,如果发起访问的用户名的主目录未创建时:

    setsebool -P samba_create_home_dirs=1
    

    设置Linux可以使用远端的SAMBA共享目录作为本机用户的主目录:

    setsebool -P use_samba_home_dirs=1
    

    设置SAMBA可以把NFS共享目录作为SAMBA的共享目录:

    setsebool -P samba_share_nfs=1
    

      设置系统可以运行NIS服务:

    setsebool -P nis_enabled on
    

    NIS服务即Network Information Service,用于在网络上的系统之间共享重要信息,而这些重要信息在服务器内通常是平直的纯文本。这个选项一般在服务器运行了监控程序时需要启用。

      运行httpd服务使用nfs方式访问文件:

    setsebool -P httpd_use_nfs on
    

    和允许SAMBA使用NFS共享目录同样道理,这个设置有一定风险,要严格控制,笔者仅用于实现内网YUM仓库的httpd服务。

      设置GIT可以使用NFS

    setsebool -P git_system_use_nfs on
    

    基本上对NFS共享的限制的道理都是一样的,不再赘述。

      最后要介绍一下如何排查服务或程序出错,是否被SELinux拦截所导致。排查方法是检查审计日志/var/log/audit/audit.log。注意审计日志本身是二进制编码而不可直读的,需要通过audit2why命令转换为可读内容,比如:

    audit2why < /var/log/audit/audit.log
    

    如果没有任何输出,那就是没有异常情况。

      但如果有输出,则需要仔细观察。例如下面的输出内容(为方便阅读,做了换行):

    type=AVC msg=audit(1556285271.219:351): avc:  denied  { getattr } for  pid=15790 comm="httpd" 
    path="/var/www/mirrors/centos/7/centosplus/x86_64/repodata/4cb48cde2c2bbe00ffa303766009f7b41706409d75dda8673e03afdd06ea7a4d-filelists.sqlite.bz2" 
    dev="0:42"
    ino=844424930310159
    scontext=system_u:system_r:httpd_t:s0
    tcontext=system_u:object_r:nfs_t:s0
    tclass=file permissive=0
            Was caused by:
            One of the following booleans was set incorrectly.
            Description:
            Allow httpd to use nfs
    
    
            Allow access by executing:
            # setsebool -P httpd_use_nfs 1
            Description:
            Allow git to system use nfs
    
    
            Allow access by executing:
            # setsebool -P git_system_use_nfs 1这个例子,就是httpd想访问笔者设置在网络NFS共享上的YUM仓库,但被SELinux规则拦截的实际情况。

    可以发现是没有允许httpd服务、git服务使用nfs共享。我们从审计日志也可以了解到,需要开启什么设置才能实现允许访问。一般地,按提示修改布尔开关就可以了。

      但最关键的是,在打开开关前,要想清楚是否必须打开,打开了会有什么连带产生的不安全因素,如何防止或避免这些不安全因素。

    本栏目相关
  •  2022-03-18 微软安全合规工具包(SCT)操作实战
  •  2022-03-09 网络安全等级保护之SELINUX介绍连载之三(什么是策略)
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-03-08 网络安全等级保护之SELINUX介绍连载之二(模式切换篇)
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  •  2022-04-06 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之七:持续的漏洞管理
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-13 关于OpenSCAP/SCAP安全策略的介绍
  •  2022-04-07 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之八:审计日志管理