SELinux 策略配置与 Web 应用限制实践
1. SELinux 策略基础与约束
在 SELinux 环境中,Snort 初始化脚本(以 initrc_t 运行)会过渡到 snort_t 域,同时活动敏感度范围会更改为第三个参数。例如,第三个参数为 s3:mcs_allcats ,其中 mcs_allcats 表示策略支持的所有类别(若策略支持 256 个类别,则如 c0.c255)。
对于 MLS(多级安全),会调用 mls_rangetrans_target 接口,此接口为 snort_t 域设置属性,这是策略中启用的 MLS 约束所必需的。
在展开的代码中,有 ifdef() 语句,这些是基于构建时参数启用或忽略的 SELinux 策略规则块。若启用 MCS 或 MLS 策略,则会设置 enable_mcs 和 enable_mls 参数。其他常用的构建时参数包括发行版选择(如 distro_redhat 用于特定于 Red Hat Enterprise Linux 和 Fedora 系统的 SELinux 策略规则)以及 enable_ubac(启用基于用户的访问控制时使用)。
SELinux 策略开发大多侧重于类型强制规则和上下文定义,但也支持其他语句,如用于实现约束的 constrain 语句。与 mlsrangetrans 属性相关的约束如下:
mlsconstrain process transition (( h1 dom h2 ) and (( l1 eq l2 ) or ( t1 == mlsprocsetsl ) or (( t1 =