nginx waf安装配置

1、编译安装ModSecurity
1.1)安装依赖包
sudo apt install apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev

1.2)安装modsecurity
git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git submodule init
git submodule update
./build.sh
注:build时出现fatal: No names found, cannot describe anything.时不用管它
./configure
make
sudo make install
安装位置/usr/local/modsecurity

2、编译安装ModSecurity-nginx
2.1)下载连接器源码
git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git

2.2)查看nginx版本号
nginx -v
nginx version: nginx/1.14.0 (Ubuntu)

2.3)下载nginx对应版本号的源码包,并gpg验证
wget http://nginx.org/download/nginx-1.14.0.tar.gz

gpg签名验证
wget http://nginx.org/download/nginx-1.14.0.tar.gz.asc
wget http://nginx.org/keys/nginx_signing.key
gpg --import nginx_signing.key
gpg --verify nginx-1.14.0.tar.gz.asc nginx-1.14.0.tar.gz
如果还找不到public key时,可以按提示的KEY ID 搜索一下 gpg --search-keys 520A9993A1C052F8

2.4)编译模块,并配置到nginx中
编译模块:
tar zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0/
./configure (这里把nginx -V查看到配置参数全放到这里) --add-dynamic-module=../ModSecurity-nginx
配置提示error: SSL modules require the OpenSSL library时需要安装
sudo apt install libssl-dev
配置提示error: the HTTP XSLT module requires the libxml2/libxslt时需要安装
sudo apt install libxslt1-dev
配置提示 error: the HTTP image filter module requires the GD library时需要安装
sudo apt install libgd-dev
make modules

复制模块到对应位置:
sudo cp objs/ngx_http_modsecurity_module.so /usr/lib/nginx/modules
sudo chmod -x /usr/lib/nginx/modules/ngx_http_modsecurity_module.so

创建模块配置文件:
sudo cp /usr/share/nginx/modules-available/mod-http-geoip.conf /usr/share/nginx/modules-available/mod-http-modsecurity.conf

编辑模块配置文件:
load_module modules/ngx_http_modsecurity_module.so;

创建链接:
sudo ln -s /usr/share/nginx/modules-available/mod-http-modsecurity.conf /etc/nginx/modules-enabled/50-mod-http-modsecurity.conf

检查配置:
sudo nginx -t

3、nginx站点开启waf
sudo mkdir /etc/nginx/modsec
sudo cp ~/ModSecurity/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf
sudo cp ~/ModSecurity/unicode.mapping /etc/nginx/modsec/
modsecurity.conf中SecRuleEngine 设置为On

sudo touch /etc/nginx/modsec/main.conf
内容:
Include "/etc/nginx/modsec/modsecurity.conf"
SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"

默认站点配置启用WAF
server {
# ...
modsecurity on;
modsecurity_rules_file /etc/nginx/modsec/main.conf;
}
main.conf和modsecurity.conf修改后也需要sudo nginx -s reload
测试 curl localhost?testparam=test 返回403

4、modsecurity常用配置文件
TODO

posted @ 2019-10-18 11:14  小-马-过-河  阅读(1834)  评论(0编辑  收藏  举报