WAF:ModSecurity on Nginx

Modsecurity概述

ModSecurity是一个入侵检测与防护引擎,主要适用于Web应用程序,所以也被称为Web应用程序防火墙。 它可以作为Apache Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web application的安全性和保护Web application以避免遭受来自已知与未知的攻击。

ModSecurity计划是从2002年开始,后来由Breach Security Inc.收购,但Breach Security Inc.允诺ModSecurity仍旧为open source,并开放源代码给大家使用。最新版的ModSecurity(一个开源的Web应用防火墙,即WAF)开始支持核心规则集(Core Rule Set,即CRS,可用于定义旨在保护Web应用免受零日及其他安全攻击的规则)了。ModSecurity团队发布的2.5.10 版以后还包含了其他一些特性,如并行文本匹配、Geo IP解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证。此外,它还提供了一个面向Lua语言的新的API,为开发者提供一个脚本平台以实现用于保护Web应用的复杂逻辑。

ModSecurity的运作设计有以下的基础概念:

  • 让使用者可以做任何想做的事情(Empower users to do what they want)
  • 使用者设定的动作才会执行(Don’t do anything implicitly)
  • 预设是不做任何动作(Be passive)

ModSecurity的部署架构

  1. Web Server结合。
  2. Apache/Nginx结合部署为网关,当做一个反向代理

软件下载地址

[Nginx][http://nginx.org/en/download.html]

[ModSecurity][https://www.modsecurity.org/download.html]

[OWASP规则集][https://github.com/SpiderLabs/owasp-modsecurity-crs]

Install Nginx with ModSecurity

1、安装依赖包和其他必须的包

 yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel zlib zlib-devel openssl openssl-devel apr apr-util-devel apr-devel -y

2、下载Nginx和ModSecurity源码

wget http://nginx.org/download/nginx-1.9.15.tar.gz
wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz

3、编译ModSecurity

# 先解压
# 此处下载到/opt目录
cd /opt
gunzip -c modsecurity.2.9.1.tar.gz | tar xvf -

# 解压后进入目录执行
./autogen.sh
./configure --enable-standalone-module --disable-mlogc
# 编译安装
make
make instal

4、编译Nginx并添加ModSecurity模块

# 解压Nginx
cd /opt
gunzip -c nginx-1.9.15.tar.gz | tar xf -

# 进入解压目录执行命令并编译
./configure --add-module=/opt/modsecurity-2.9.1/nginx/modsecurity/ --prefix=/usr/src/nginx
make && make install

Configure ModSecurity with Nginx

1、复制modsecurity.conf-recommended & unicde.mapping文件到Nginx的conf目录

# 查看两个文件在哪里
find / -name modsecurity.conf-recommended
find / -name unicode.mapping

# 复制文件
cp /opt modsecurity-2.9.1/modsecurity.conf-recommended   /usr/src/nginx/conf/
cp /opt/modsecurity-2.9.1/unicode.mapping   /usr/src/nginx/conf/

2、配置

# 改名
mv modsecurity.conf-recommended modsecurity.conf

# 修改Nginx文件
cp nginx.conf nginx.conf.bak # 备份Nginx配置文件

在需要启用modsecurity的主机的location下面加入:

ModSecurityEnabled on;
ModSecurityConfig modsecurity.conf;

重启Nginx,检查配置文件:

/usr/src/nginx/sbin/nginx -t

启动Nginx:

/usr/src/nginx/sbin/nginx -V

或者

cat /usr/src/nginx/logs/error.log

启用OWASP规则

1、下载OWASP ModSecurity CRS:

wget 'https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/master.zip'

2、解压到/usr/src/nginx/conf

cp master.zip /usr/src/nginx/conf
cd /usr/src/nginx/conf
unzip master.zip

3、添加OWASP规则

# 进入/usr/src/nginx/conf目录。复制规则配置文件到/usr/src/nginx/conf目录
cp owasp-modsecurity-crs-master/modsecuity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
# 打开modsecurity.conf 在最上面引入规则文件路径
Include /usr/src/nginx/conf/modsecurity_crs_10_setup.conf
Include /usr/src/nginx/conf/owasp-modsecurity-crs-master/basee_rules/modsecurity_crs_41_sql_injection_attacks.conf

将SecRuleEngine设置为On

image-20210630162311445

4、测试环境

在/var/www/html中写一个phpinfo,vim index.php

内容为

<?php
    phpinfo();
?>

修改Nginx配置文件

image-20210630162519964
image-20210630162529671

保存配置。重启nginx即可

/usr/src/nginx/sbin/nginx -s reload

自行测试。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容