应用实战
-
通过ModSecurity检测并替换请求体及响应体当中的指定内容
本文主要介绍通过ModSecurity检测并替换请求体及响应体当中的指定内容。一、应用场景1.特殊符号替换。通过对请求体内容进行过滤,可以对一些特殊符号进行替换,如空格、单双引号、斜杠、注释符等,降低网站被成功入侵的概率;2.避免信息泄露。通过对响应体内容进行过滤,可以避免网站在访问出错时,服务器或网站的一些信息被暴露出去,如网站目录等。3.违法信息监测。通过对响应体内容进行过滤,可以检测网站中是否存在违法信息,但一般对于服务商来说,更多的方式还是购买违法信息监测系统,在网络出口对所有业务进行监控。二、原理对请求体...
-
CentOS 7下对安装不同ModSecurity版本的Nginx的并发性能测试结果
本文主要介绍在CentOS下,对安装ModSecurity 2.9.3与ModSecurity 3.0.4的Nginx分别进行并发性能测试,观察WAF造成的性能损耗。结论:如果要在Nginx上使用ModSecurity,个人建议使用2.9.3版本。最新结论(20220114):请勿在Nginx使用ModSecurity V2版本,V2版本与Nginx存在兼容问题,且目前官方团队明确表示不会进行修复。测试环境:1、两台虚拟机,配置同为2核CPU、1G内存、20G硬盘;2、IP为192.168.142.134的虚机环境...
-
通过ModSecurity检测JSON格式数据
本文主要介绍,如何通过编写规则,对提交到WEB服务器的JSON格式的数据进行检测。前提:服务器中需要安装yajl-devel,且ModSecurity需要在其后再进行编译安装。默认情况下,ModSecurity将使用URLENCODED和MULTIPART解析器分别处理application/x-www-form-urlencoded和multipart/form-data类型的请求体,如要对JSON格式的数据进行解析并检测,需要临时更改解析器,如下方规则所示:SecRule REQUEST_HEADER...
-
通过ModSecurity检测XML格式数据
本文主要介绍,如何通过编写规则,对提交到WEB服务器的XML格式的数据进行检测。以WordPress历史上的一个漏洞为例:xmlrpc.php暴力破解漏洞,黑客可POST以下数据到xmlrpc.php对网站后台的账号密码进行暴力破解:<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>wp.ge...
-
ModSecurity通过SecRemoteRules指令加载远程服务器上的规则
本文主要介绍如何通过SecRemoteRules指令,来加载放置在远程服务器中的规则文件。一、应用场景该方法适合服务器数量众多,但经常需要更新规则的运维人员。作为景安网络产品经理,本人在通过使用ModSecurity为20万个网站进行基础防护时,由于云服务器数量巨大,每次更新规则后,都需要将新的规则文件同步到所有的服务器当中,虽然可以通过工具将规则文件进行批量自动上传,但是直接将规则放置在远程服务器当中,然后由业务服务器自动加载,更能减少运维工作量。二、指令介绍SecRemoteRules允许从指定的某个HTTPS...
-
ModSecurity防CC攻击、防采集规则配置
本文主要介绍如何通过ModSecurity,来拦截单个IP对服务器的CC攻击或采集行为。该教程主要针对Apache,如果使用的是Nginx,则建议使用Nginx自带的HttpLimitReqModule模块进行防御,因为规则中的部分指令在ModSecurity V3版本中暂不支持,最终的效果是只要达到设定的攻击阈值,就会将IP地址进行永久封禁,除非重新加载Nginx,虽然看似更安全,但是封禁的IP信息会保存在内存中,随着封禁IP数量的增加,占用的内存也会越来越大,这部分内存只会在Nginx重新加载时才会释放。202...
-
ModSecurity配置GeoIP模块来拦截非指定国家的所有IP
本文主要介绍,通过配置GeoIP模块,来使ModSecurity拦截非中国IP地址的访问。一、前提介绍GeoIP数据库目前有两种格式,GeoLite(.dat文件)与 GeoLite2(.mmdb文件)。ModSecurity v2需要使用.dat格式,ModSecurity v3则使用.mmdb格式。.dat格式的GeoIP文件目前已不再更新,因此如果使用的是ModSecurity v2版本,我们则需要使用CSV文件来生成.dat格式的数据库,生成方法见本文第五节。二、下载GeoIP数据库点击此处可下载GeoLi...
-
ModSecurity日志保存至MySQL数据库(通过Logstash)
本文主要介绍如何使用Logstash,将ModSecurity的JSON格式的审计日志保存至MySQL数据库中。测试环境:操作系统:CentOS-7-x86_64-DVD-1810.iso;JDK:jdk-8u241-linux-x64.tar.gz;Logstash:logstash-5.6.16.tar.gz;JDBC:mysql-connector-java-5.1.48.jar;一、软件上传将上述JDK及Logstash的软件压缩包下载后,上传至服务器/usr/local目录下并解压,将JDBC上传至解压后...
-
ModSecurity拦截后跳转到自定义拦截页面
本文介绍当访问请求被ModSecurity拦截时如何跳转到指定的拦截提示页面。本文中涉及的规则均已在景安网络(http://www.zzidc.com)的20万个虚拟主机业务中正常运行(或测试通过),可正常使用。ModSecurity安装成功后,当访问触发拦截机制时,ModSecurity默认是向客户端返回403状态码,而在生产环境中,可能会由于目录权限、服务器配置等其他原因导致出现403的情况,因此如果仍按ModSecurity的默认机制进行拦截,一旦网站访问出现403情况,要查找对应的原因时,反而会增加运维人员...
-
ModSecurity误拦截处理方法(ModSecurity白名单)
本文主要介绍当一个正常访问被ModSecurity误拦截时的处理方法。本文中涉及的规则均已在景安网络(http://www.zzidc.com)的20万个虚拟主机业务中正常运行(或测试通过),可正常使用。一、查询触发拦截的规则如果访问触发ModSecurity的规则,ModSecurity会在WEB服务器的错误日志文件中进行相关记录。常见的ModSecurity日志有以下两种:警告日志:[Fri Nov 22 14:57:03.347755 2019] [:error] [pid 31155:tid 1397765...