nginx 使用waf组件 modsecurity ,安装过程,仅作学习参考
本文环境:centos8
安装包下载:
wget https://github.com/SpiderLabs/ModSecurity/releases/download/v2.9.4/modsecurity-2.9.4.tar.gz
wget https://github.com/SpiderLabs/ModSecurity-nginx/releases/download/v1.0.2/modsecurity-nginx-v1.0.2.tar.gz
wget https://github.com/libgd/libgd/releases/download/gd-2.3.2/libgd-2.3.2.tar.gz
wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/refs/tags/v3.2.0.tar.gz
如果要使用代理的话可以加这个参数:
wget -e use_proxy=yes -e https_proxy=192.168.1.100:7890 downurl
依赖项安装
yum install libtool
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
yum install httpd-devel apr apr-util-devel apr-devel pcre pcre-devel libxml2 libxml2-devel
安装:
#modsecurity安装
tar zxvf modsecurity-2.9.4.tar.gz
cd modsecurity-2.9.4
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make && make install
#gd库安装
tar zxvf libgd-2.3.2.tar.gz
cd libgd-2.3.2
./configure
mask && make install
#nginx安装,参照了bt的nginx安装参数
tar zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --user=www --group=www --prefix=/www/server/nginx --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=/root/modsecurity-2.9.4/nginx/modsecurity/
#modsecurityf规则配置(owasp-modsecurity-crs)
mkdir /www/server/nginx/conf/modsecurity
tar zxvf owasp-modsecurity-crs-3.2.0.tar.gz
cd owasp-modsecurity-crs-3.2.0/
cp crs-setup.conf.example /www/server/nginx/conf/modsecurity/crs-setup.conf
cp rules/ util/ /www/server/nginx/conf/modsecurity/ -r
cd modsecurity-2.9.4/
cp modsecurity.conf-recommended /www/server/nginx/conf/modsecurity/modsecurity.conf
cp unicode.mapping /www/server/nginx/conf/modsecurity/
cd /www/server/nginx/conf/modsecurity/
vim /www/server/nginx/conf/modsecurity/modsecurity.conf
//默认值为DetectOnly 即为观察模式,建议大家在安装时先默认使用这个模式,观察一段时间,看是否对网站、服务器有某些不可知的影响
#SecRuleEngine DetectionOnly
SecRuleEngine On
#是文件最后加入下面两行
Include crs-setup.conf
Include rules/*.conf
#虽然规则很牛B,但不一定都符合线上产生的业务,建议只引入具体最核心最重要的规则或者开始观察模式,以免业务出现问题
#测试是否可以正常使用,配置nginx.conf,在server {} 中添加配置
server {
...
ModSecurityEnabled on;
ModSecurityConfig modsecurity/modsecurity.conf;
...
}
访问 127.0.0.1 正常显示 nginx的欢迎使用页面
访问 127.0.0.1/?eval( 如果得到403拒绝访问,则表示请求被拦截了,符合预期