nginx安装modsecurity WAF防火墙

测试使用的地址

http://192.168.52.120/static/index.html?param="><script>alert(1);</script>"
http://192.168.52.120/static/index.html?param=--delete from user

扩展知识点

# 将请求的文件存放到指定的文件,File可以是一个绝对文件路径
wget -O FILE http://xxx

# 将请求的文件存放到指定的目录中
wget -P DIR http://xxx

# 将tar解压后的内容放在指定目录下
tar -xvzf xxxx.tar.gz -C DIR/

WAF防火墙

naxsi开源WAF

是第三方nginx模块,和Modsecurity都是开源的WAF,但是他们的防御模式不同,Naxsi 不依赖像防病毒软件这样的签名库,因此不会被“未知”攻击模式所规避(就像我们平常说的主动防御)。Naxsi 和其他 WAF 之间的另一个主要区别就是仅过滤 GET 和 POST 请求。
naxsi项目地址:https://github.com/nbs-system/naxsi

参考文件:

[1] https://zhuanlan.zhihu.com/p/455710474

Modsecurity开源WAF

modsecurity的下载,可以在modsecurity的官网首页中有下载链接
modsecurity安装参考[1]

一、安装相关依赖工具
二、下载modsecurity并安装modsecurity
三、安装nginx与ModSecurity-nginx
yum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake
yum install -y readline-devel curl-devel gcc gcc-c++ python-devel lua-devel doxygen perl yajl-devel GeoIP-devel lmdb-devel ssdeep-devel flex bison autoconf automake

cd /data/sources/
tar -xvzf modsecurity-v3.0.4.tar.gz
cd modsecurity-v3.0.4
./configure
make
make install

cd /data/sources/
tar -xvzf modsecurity-nginx-v1.0.2.tar.gz
tar -xvzf nginx-1.22.0.tar.gz
cd nginx-1.22.0
./configure --add-module=/data/sources/modsecurity-nginx-v1.0.2
make
make install

mkdir -p /usr/local/nginx/conf/modsecurity
cp /data/sources/modsecurity-v3.0.4/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /data/sources/modsecurity-v3.0.4/unicode.mapping /usr/local/nginx/conf/modsecurity/
# 下载规则文件压缩包owasp-modsecurity-crs-3.3-dev.zip,解压文件
cp /data/sources/owasp-modsecurity-crs-3.3-dev/crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
# 复制rules文件夹到/usr/local/nginx/conf/modsecurity/
cp -r /data/sources/owasp-modsecurity-crs-3.3-dev/rules /usr/local/nginx/conf/modsecurity/
cd /usr/local/nginx/conf/modsecurity/rules/
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
四、配置modsecurity到nginx中

echo-nginx 目录 /data/sources/echo-nginx-module-0.62
ModSecurity-nginx 目录 /data/sources/ModSecurity-nginx
modsecurity 目录 /data/sources/modsecurity-v3.0.4
nginx源码 目录 /data/sources/nginx-1.22.0
nginx安装 目录 /usr/local/nginx

cd /usr/local/nginx/conf/
mkdir modsecurity
cp /data/sources/modsecurity-v3.0.4/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /data/sources/modsecurity-v3.0.4/unicode.mapping /usr/local/nginx/conf/modsecurity/
# 下载规则文件压缩包owasp-modsecurity-crs-3.3-dev.zip,解压文件
cp /data/sources/owasp-modsecurity-crs-3.3-dev/crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
# 复制rules文件夹到/usr/local/nginx/conf/modsecurity/
cp -r /data/sources/owasp-modsecurity-crs-3.3-dev/rules /usr/local/nginx/conf/modsecurity/
cd /usr/local/nginx/conf/modsecurity/rules/
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

说明:owasp-modsecurity-crs-3.3-dev.zip下载

编辑nginx.conf
在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置):

server {
    modsecurity on;
    modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;
}

编辑/usr/local/nginx/conf/modsecurity/modsecurity.conf文件内容:
SecRuleEngine DetectionOnly 改为 SecRuleEngine On
在文件末尾同时添加以下内容:

Include /usr/local/nginx/conf/modsecurity/crs-setup.conf
Include /usr/local/nginx/conf/modsecurity/rules/*.conf

重新加载Nginx测试效果
http://192.168.52.120/static/index.html?param="><script>alert(1);</script>" 访问会返回403状态码,被拦截处理了

参考:

[1] CentOS下Nginx+ModSecurity(3.0.x)安装教程及配置WAF规则文件
[2] CentOS下对安装不同ModSecurity版本的Nginx的并发性能测试结果
[3] modsecurity官网
[4] CentOS下Nginx+ModSecurity(2.9.3)安装教程及配置WAF规则文件

posted @ 2022-08-02 16:03  理舞  阅读(634)  评论(0编辑  收藏  举报