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的部署架构
- 与
Web Server
结合。 - 与
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-202106301623114454、测试环境
在/var/www/html中写一个phpinfo,vim index.php
内容为
<?php
phpinfo();
?>
修改Nginx配置文件
image-20210630162519964 image-20210630162529671保存配置。重启nginx即可
/usr/src/nginx/sbin/nginx -s reload
自行测试。
网友评论