ModSecurity部署和安装

今天部署个web服务,还没怎么用,扫描器就上来了,是需要部署个WAF来防御下了。

一. Nginx的access.log被扫描信息

日志信息如下:

170.238.36.66 - - [23/Nov/2019:11:26:32 +0800] "GET / HTTP/1.0" 200 2286 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)" "-"

二. WAF 选择

先简单介绍下WAF,WAF就是Web Application Firewall 直译过来就是网络应用防火墙。开源的WAF和Nginx配合最好的据说是ModSecurity,那就是它了。
先简单看看介绍如下:

ModSecurity是Trustwave的SpiderLabs开发的,用于Apache,IIS和Nginx的开源,跨平台Web应用程序防火墙(WAF)引擎。它具有强大的基于事件的编程语言,可提供针对Web应用程序的各种攻击的保护,并允许HTTP流量监视,日志记录和实时分析…https://www.modsecurity.org

三. 安装步骤:

3.1 安装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
$ ./configure
$ make && make install

configure的时候,会显示很多not found信息,可以先不管,至此已经安装好了ModSecurity。

3.2 安装nginx-ModSecurity连接器

git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
#下载最新的nginx
wget  http://nginx.org/download/nginx-1.17.6.tar.gz 
cd nginx-1.17.6
##添加动态模块
#./configure --with-compat --add-dynamic-module=../ModSecurity-nginx

$ make modules
cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules/
#将以下load_module指令添加到/etc/nginx/nginx.conf的main中:
load_module modules/ngx_http_modsecurity_module.so;

我是顺手安装了最新的nginx,默认安装在/usr/local/nginx里面的。

3.3 配置ModSecurity

mkdir /usr/local/nginx/conf/modsec
#下载配置文件
wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
mv modsecurity.conf-recommended modsecurity.conf
#编辑添加如下内容:第一句已经有了
SecRuleEngine DetectionOnly
SecRuleEngine On

#/usr/local/nginx/conf/modsec新建main.conf 添加一句内容
cd /usr/local/nginx/conf/modsec
#如下这一句
Include  /usr/local/nginx/conf/modsec/modsecurity.conf

下载规则:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

报错:

[root@izbp14xswj2tx6qgnz9dllz nginx]# ./sbin/nginx  -s reload
nginx: [emerg] "modsecurity_rules_file" directive Rules error. File: /usr/local/nginx/conf/modsec/modsecurity.conf. Line: 237. Column: 17. Failed to locate the unicode map file from: unicode.mapping Looking at: 'unicode.mapping', 'unicode.mapping', '/usr/local/nginx/conf/modsec/unicode.mapping', '/usr/local/nginx/conf/modsec/unicode.mapping'.  in /usr/local/nginx/conf/nginx.conf:42

参考安装GeoIP:
https://www.cnblogs.com/faberbeta/p/maxmind001.html
https://blog.csdn.net/tadwork/article/details/80742904

参考:
https://www.freebuf.com/sectool/211354.html
https://www.jianshu.com/p/d22f3914d153

你可能感兴趣的:(ModSecurity部署和安装)