modsecurity 无法通过 apache 服务器启动

modsecurity 无法通过 apache 服务器启动

我有一台运行着 apache2 的 Debian 服务器。我想用它modsecurity来进行节流。

apache2 信息

$ apache2ctl -v
Server version: Apache/2.4.29 (Debian)
Server built:   2018-01-14T11:01:58

我安装libapache2-mod-security2

sudo apt install libapache2-mod-security2

使用以下代码创建了 modsecurity conf 文件

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

SecRuleEngine改为DetectionOnlyOn/etc/modsecurity/modsecurity.conf

重启apache2服务

此时,理想情况下我应该看到一个/var/log/apache2/modsec_audit.log文件,但我没有看到。

这是 apache error.log 文件;

[Thu Sep 15 13:03:13.707900 2022] [:notice] [pid 5215] ModSecurity for Apache/2.9.1 (http://www.modsecurity.org/) configured.
[Thu Sep 15 13:03:13.707908 2022] [:notice] [pid 5215] ModSecurity: APR compiled version="1.5.2"; loaded version="1.6.2"
[Thu Sep 15 13:03:13.707910 2022] [:warn] [pid 5215] ModSecurity: Loaded APR do not match with compiled!
[Thu Sep 15 13:03:13.707912 2022] [:notice] [pid 5215] ModSecurity: PCRE compiled version="8.39 "; loaded version="8.39 2016-06-14"
[Thu Sep 15 13:03:13.707914 2022] [:notice] [pid 5215] ModSecurity: LUA compiled version="Lua 5.1"
[Thu Sep 15 13:03:13.707916 2022] [:notice] [pid 5215] ModSecurity: YAJL compiled version="2.1.0"
[Thu Sep 15 13:03:13.707917 2022] [:notice] [pid 5215] ModSecurity: LIBXML compiled version="2.9.4"
[Thu Sep 15 13:03:13.707919 2022] [:notice] [pid 5215] ModSecurity: Status engine is currently disabled, enable it by set SecStatusEngine to On.

我也尝试输入乱码文本/etc/modsecurity/modsecurity.conf,但 apache2 重启仍然不会失败。这意味着 apache 没有读取/etc/modsecurity/modsecurity.conf

我这里遗漏了什么?我该如何调试它?

答案1

如果你在这里遇到问题,这里就是答案。我仍然不知道为什么 modsecurity 无法正常工作,我猜是因为 modsecurity 编译的 APR 和运行时加载的 APR 版本不匹配,如日志中所述,但只有一个warn

无论如何,我通过完全删除现有的 modsecurity 然后从源代码构建它来使其工作。

你做

sudo apt autoremove --purge libapache2-mod-security2

删除现有的 modsecurtiy。

那么您可能/可能不必安装 modsecurtity 所依赖的一些开发包。

sudo apt install apache2-dev libxml2-dev

然后从 repo 中克隆 modsecurity 代码 https://github.com/SpiderLabs/ModSecurity.git

检查版本v2/master

然后按顺序进行如下操作;

./autogen.sh
./configure
make
make test
make install

这将创建一个共享对象文件/usr/local/modsecurity/lib/mod_security2.so

你可以在 apache.conf 中添加这个,这样 apache 就知道要加载哪个模块。将以下行放入apache2.conf

LoadModule security2_module /usr/local/modsecurity/lib/mod_security2.so

也来自模式安全repo 你必须modsecurity.conf-recommended重命名它以modsecurity.conf将其放在你喜欢的位置。然后添加

Include /<your path to/modsecurity.conf

到您的apache2.conf文件中。

此后,您重新启动 apache2 并祈祷上天保佑您找到 modsecurity 生成的日志文件。

相关内容