问题需求
apache安装好了modsecurity之后,发现有错误日志:
[Thu Apr 07 12:09:53.068764 2022] [:notice] [pid 31898] ModSecurity: PCRE compiled version="8.39 "; loaded version="8.32 2012-11-30"
[Thu Apr 07 12:09:53.068774 2022] [:warn] [pid 31898] ModSecurity: Loaded PCRE do not match with compiled!
问题原因
因为apache在安装的时候用了源码安装的方式,取的pcre依赖是8.39的,modsecurity安装用的是apache的apxs,所以依赖也是8.39的,但是系统存在yum安装的pcre,版本是8.32,环境变量与安装版本不符合造成的问题。
可以用
pcre-config --version
验证,发现输出的8.32;
解决办法
升级pcre;
找到modsecurity依赖的pcre版本,进行源码编译安装;
./configure --prefix=/usr --docdir=/usr/share/doc/pcre-8.39 --libdir=/usr/lib64 --enable-unicode-properties --enable-pcre16 --enable-pcre32 --enable-pcregrep-libz --enable-pcregrep-libbz2 --disable-static --enable-utf8 --enable-shared
make -j8 && make install
–libdir注意是多少位的操作系统,32位的就是lib,64位的就是lib64;
yum查询pcre发现还是3.32
# yum list | grep pcre
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
pcre.x86_64 8.32-17.el7 @anaconda
pcre-devel.x86_64 8.32-17.el7 @base
但是运行pcre命令发现系统环境版本已经变了
# pcre-config --version
8.39
重启apache,发现没有报错了
systemctl restart httpd