首页 > 系统相关 >Centos7-nginx配置Modsecurity实现Web应用防火墙(WAF)

Centos7-nginx配置Modsecurity实现Web应用防火墙(WAF)

时间:2023-02-28 11:58:43浏览次数:58  
标签:Web -- WAF modsecurity Modsecurity nginx usr conf local

1:安装依赖

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 wget epel-release openssl-devel 

2:下载Modsecurity并安装

cd /usr/local/src/wget http://www.modsecurity.cn/download/modsecurity/modsecurity-v3.0.8.tar.gz
tar zxf modsecurity-v3.0.8.tar.gz
cd /usr/local/src/modsecurity-v3.0.8 
sh build.sh
./configure
make && make instal

3:下载Modsecurity-nginx与nginx联动

cd /usr/local/src/
wget https://codeload.github.com/SpiderLabs/ModSecurity-nginx/zip/refs/heads/master
unzip ModSecurity-nginx-master.zip
mv ModSecurity-nginx-master /usr/local/modsecurity/modsecurity-nginx

4:查看Nginx编译内容

[root@localhost ~]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1o  3 May 2022
TLS SNI support enabled
configure arguments: --user=www --group=www --add-module=/usr/local/modsecurity/modsecurity-nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-openssl=/usr/local/src/openssl-1.1.1o --with-openssl-opt=enable-weak-ssl-ciphers

5:编译nginx

下载已经安装的nginx版本并解压,解压完成后根据之前编译的内容重新进行编译,要加上

--add-module=/usr/local/modsecurity/modsecurity-nginx
./configure --user=www --group=www --add-module=/usr/local/modsecurity/modsecurity-nginx ...........  #后面的就省略了
make #千万不要make install

6:复制nginx启动文件

将已经编译好的nginx启动文件替换至原有的安装目录的nginx

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.back 
cp objs/nginx /usr/local/nginx/sbin/

7:创建目录设置Modsecurity配置文件

mkdir /usr/local/nginx/conf/modsecurity
cp /usr/local/src/modsecurity-v3.0.8/modsecurity.conf-recommended /usr/local/nginx/conf/modsecurity/modsecurity.conf
cp /usr/local/src/modsecurity-v3.0.8/unicode.mapping /usr/local/nginx/conf/modsecurity/

8:修改nginx文件

vim /usr/local/nginx/conf/nginx.conf
#在http块中填写如下两行内容
    modsecurity on;
    modsecurity_rules_file /usr/local/nginx/conf/modsecurity/modsecurity.conf;

9:修改Modsecurity配置文件

vim /usr/local/nginx/conf/modsecurity/modsecurity.conf
#SecRuleEngine DetectionOnly
SecRuleEngine On   #打开规则引擎 SecRuleEngine On


#SecAuditLogParts ABIJDEFHZ
SecAuditLogParts ABCDEFHZ   #确保ModSecurity在记录审计日志时保存请求体IJ 改为 C
 
#在最底部添加防护规则文件
Include /usr/app/nginx/conf/modsecurity/crs-setup.conf
Include /usr/app/nginx/conf/modsecurity/rules/*.conf

10:下载owasp-modsecurity-crs

这是防火墙规则文件

wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip
unzip owasp-modsecurity-crs-3.3-dev.zip
cd owasp-modsecurity-crs-3.3-dev
cp crs-setup.conf.example /usr/local/nginx/conf/modsecurity/crs-setup.conf
cp -r 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

11:nginx报错

如果出现nginx报错的情况,把下面的文件中的内容注释掉即可

vim /usr/local/nginx/conf/modsecurity/rules/REQUEST-910-IP-REPUTATION.conf
#将文件内以下内容全部注释
#SecRule TX:HIGH_RISK_COUNTRY_CODES "!@rx ^$" \
#    "id:910100,\
#    phase:2,\
#    block,\
#    t:none,\
#    msg:'Client IP is from a HIGH Risk Country Location',\
#    logdata:'%{MATCHED_VAR}',\
#    tag:'application-multi',\
#    tag:'language-multi',\
#    tag:'platform-multi',\
#    tag:'attack-reputation-ip',\
#    tag:'paranoia-level/1',\
#    ver:'OWASP_CRS/3.2.0',\
#    severity:'CRITICAL',\
#    chain"
#    SecRule TX:REAL_IP "@geoLookup" \
#        "chain"
#        SecRule GEO:COUNTRY_CODE "@within %{tx.high_risk_country_codes}" \
#            "setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}',\
#            setvar:'ip.reput_block_flag=1',\
#            setvar:'ip.reput_block_reason=%{rule.msg}',\
#            expirevar:'ip.reput_block_flag=%{tx.reput_block_duration}'"

12:重启nginx

killall nginx
/usr/local/nginx/sbin/nginx

13:查看Modsecurity日志

tail -f /var/log/modsec_audit.log

 

标签:Web,--,WAF,modsecurity,Modsecurity,nginx,usr,conf,local
From: https://www.cnblogs.com/xlei/p/17163517.html

相关文章

  • 9. Laravel 内置 web 认证
    Laravel内置web认证配套视频地址:https://www.bilibili.com/video/av74879198/原理注册:用户注册成功后。在服务器端生成session文件。给用户传递session(文件名......
  • Websocket 60秒断开,连接不稳定
    本地测试都是正常的,线上测试总是过一会就断开...线上新增了https协议,导致页面中的链接必须也是sslWebsocket链接地址从ws://ws.xxx.com改成了wss://ws.xxx.com最开始htt......
  • Web 缓存欺骗总结
    Web缓存欺骗总结Web缓存欺骗(WCD)是一种攻击,在这种攻击中,攻击者欺骗缓存代理,使其不正确地存储通过Internet发送的私人信息并获得对该缓存数据的未授权访问。它是由......
  • 使用MetaWeblog api自动上传文章图片到cnblog
    由于我日常习惯用Typora来写笔记和博客,文章中的图片保存在本地,在发布文章到cnblog之前,希望能有一个自动化工具可以自动上传文章引用的图片到cnblog,获取图片链接,替换掉......
  • JavaWeb 读资源的问题-2023-2-27
    1、db.properties文件中读取username和password2、getResourceAsStream("/web-inf/classes/db.properties")3、properties.getProperty("username")publicclass......
  • Web开发的常用攻击和防御方式
    一、XSS主要利用:1.盲目相信用户提交的内容2.直接把用户的字符串转化成DOM分类:1.存储型XSS,恶意脚本存在数据库中,所有访问页面的用户都会被攻击2.反射型XSS,脚本写在URL......
  • web自动化--等待
    一、常用知识:一、强制等待time.sleep(3)二、隐式等待语法:driver.implicitly_wait(s)1、整个会话只执行一次,全局起作用,后面的每一次元素查找都会进行等待,在设置的时......
  • #跟着小白一起学鸿蒙#WebSocket的使用和流程分析
    作者:王石WebSocket是一种网络通讯协议,很多网络开发工作者都需要它。本文介绍在OpenHarmony上WebSocket协议的使用方法。WebSocket有什么不同很多人会问,有了HTTP协议,尤其......
  • 基于SpringBoot WebMagic爬虫爬取大乐透双色球
    大乐透网页地址:https://kjh.55128.cn/dlt-history-360.htm双色球网页地址:https://kjh.55128.cn/ssq-history-120.htm 注:程序仅用于个人兴趣爱好,不得用于商业行为,本......
  • 一文搞懂weblogic CVE-2018-2628原理与利用
    参考:http://xxlegend.com/2018/06/20/CVE-2018-2628简单复现和分析/在CVE-2017-3248的利用中,我们用ysoserial生成了一个java.rmi.registry.Registry类型的proxy首先回......