Core Rule Set (CRS) 开源项目教程
1. 项目的目录结构及介绍
Core Rule Set (CRS) 是一个用于 Apache 的 ModSecurity 模块的开源规则集,旨在帮助保护 Web 应用程序免受各种攻击。项目的目录结构如下:
coreruleset/
├── CHANGES
├── README.md
├── RELEASE-NOTES-3.3.2.md
├── ctl/
├── dev/
├── docs/
├── examples/
├── http-request-bodies/
├── lua/
├── rules/
├── setup/
└── tests/
CHANGES
: 记录项目的变更历史。README.md
: 项目的基本介绍和使用说明。RELEASE-NOTES-3.3.2.md
: 特定版本的发布说明。ctl/
: 包含用于管理规则集的控制脚本。dev/
: 开发相关的文件和脚本。docs/
: 项目的文档,包括用户指南和开发指南。examples/
: 示例配置文件和规则。http-request-bodies/
: 包含 HTTP 请求体的处理规则。lua/
: 包含 Lua 脚本,用于扩展 ModSecurity 功能。rules/
: 核心规则集,包含各种安全规则。setup/
: 安装和配置指南。tests/
: 测试脚本和测试用例。
2. 项目的启动文件介绍
Core Rule Set 本身不包含直接的启动文件,因为它是一个规则集,需要与 ModSecurity 结合使用。ModSecurity 的配置文件通常位于 Apache 的配置目录中,例如 httpd.conf
或 apache2.conf
。在这些配置文件中,你需要包含 ModSecurity 的配置和 CRS 规则集的路径。
例如,在 httpd.conf
中,你可能需要添加以下内容:
<IfModule mod_security2.c>
SecRuleEngine On
Include /path/to/coreruleset/crs-setup.conf
Include /path/to/coreruleset/rules/*.conf
</IfModule>
3. 项目的配置文件介绍
Core Rule Set 的配置文件主要位于 rules/
目录中,其中最重要的是 crs-setup.conf
文件。这个文件包含了 CRS 的全局配置和默认设置。
crs-setup.conf
: 全局配置文件,定义了 CRS 的基本行为和默认规则。rules/*.conf
: 包含各种具体的规则文件,用于检测和阻止各种攻击。
在 crs-setup.conf
中,你可以找到以下关键配置:
SecAction "id:900000, phase:1, nolog, pass, t:none, setvar:tx.inbound_anomaly_score_threshold=5"
SecAction "id:900001, phase:1, nolog, pass, t:none, setvar:tx.outbound_anomaly_score_threshold=4"
这些配置定义了异常分数的阈值,用于决定何时触发警报或阻止请求。
其他重要的配置文件包括:
REQUEST-901-INITIALIZATION.conf
: 初始化规则。REQUEST-905-COMMON-EXCEPTIONS.conf
: 常见例外规则。REQUEST-910-IP-REPUTATION.conf
: IP 信誉规则。REQUEST-911-METHOD-ENFORCEMENT.conf
: 方法强制规则。REQUEST-912-DOS-PROTECTION.conf
: 拒绝服务保护规则。REQUEST-920-PROTOCOL-ENFORCEMENT.conf
: 协议强制规则。REQUEST-921-PROTOCOL-ATTACK.conf
: 协议攻击规则。REQUEST-930-APPLICATION-ATTACK-LFI.conf
: 本地文件包含攻击规则。REQUEST-931-APPLICATION-ATTACK-RFI.conf
: 远程文件包含攻击规则。REQUEST-932-APPLICATION-ATTACK-RCE.conf
: 远程代码执行攻击规则。REQUEST-933-APPLICATION-ATTACK-PHP.conf
: PHP 攻击规则。REQUEST-941-APPLICATION-ATTACK-XSS.conf
: XSS 攻击规则。