我有一台运行着 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
改为DetectionOnly
On
/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 生成的日志文件。