ModSecurity规则

中文译文参考:http://netsecurity.51cto.com/art/201407/446264.htm

英文原文参考:http://resources.infosecinstitute.com/configuring-modsecurity-firewall-owasp-rules/

根据最新实践调整里面的细节内容,图片内容未调整:

 

0x00 背景

ModSecurity是一个免费、开源的Apache模块,可以充当Web应用防火墙(WAF)。ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击.

OWASP是一个安全社区,开发和维护着一套免费的应用程序保护规则,这就是所谓OWASP的ModSecurity的核心规则集(即CRS)。我们可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证.

所以,在这篇文章中,我们将配置ModSecurity防火墙与OWASP的核心规则集。我们也将学习如何可以根据我们的需要自定义OWASP的核心规则集或创建自己的定制规则。

0x01 安装过程

本文是在Centos环境中安装和配置的,步骤如下:

第1步

以root用户身份(或者sudo方式)登录到您的服务器,登录之后我们在安装ModSecurity之前需要安装一些依赖包,可以通过以下的命令安装:

yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel –y

2014072015283665193.jpg

第2步

安装依赖包后,我们将安装ModSecurity。我们可以通过运行以下命令进行安装:

yum install mod_security –y

2014072015285788999.png

现在ModSecurity已经成功地安装在系统中。

第3步

ModSecurity安装后,我们需要重新启动Apache服务器。我们可以通过下面的命令重启Apache服务器:

Services httpd restart

在/etc/init.d/httpd restart

或者 apachectl方式

2014072015294663934.png

现在,我们已经成功地在服务器中安装了ModSecurity,下一个步骤是下载和配置OWASP的ModSecurity规则。所以,我们必须将当前工作目录切换到/etc/httpd的。这可以通过cd命令来完成。

cd /etc/httpd.

2014072015300972448.jpg

第4步

正如我们在文章的前面所提到的,我们的ModSecurity安装是不完美的,但我们需要增加我们的规则集。这可以通过Github的网站来完成。Github上是一个开源的平台,让许多开发人员分享他们的项目和应用程序。通过git命令使用clone选项,可以下载Github服务器上的任何内容。因此,我们将导入预定义的OWASP的ModSecurity规则到我们的服务器。我们可以通过下面的命令做到这一点。

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

("https://github.com/SpiderLabs/owasp-modsecurity-crs.git")

2014072015312341613.jpg

执行该命令后,OWASP的ModSecurity规则将在owasp-modsecurity-crs目录下保存。可以通过ls命令如下进行查看。

2014072015315319889.jpg

现在,我们必须重新命名OWASP-MODSecurity-src文件夹到ModScurity-CRS。这可以通过mv命令来完成。

mv owasp-modsecurity-crs modsecurity-crs

2014072015322577770.jpg

我们可以通过运行ls命令验证。

第5步

我们必须将工作目录更改为modsecurity-crs。这可以通过cd命令来完成。

cd modsecurity-crs

2014072015331514069.jpg

crs-setup.conf.example是ModSecurity工作的主配置文件。默认情况下,它带有.example扩展名。要初始化ModSecurity,我们要重命名此文件。我们可以用mv命令重命名。

mv crs-setup.conf.example crs-setup.conf

2014072015335461342.jpg

之后,我们要在Apache的配置文件中添加模块。要装入新的ModSecurity模块,编辑Apache的配置文件/etc/httpd/conf/httpd.conf。我们需要在终端中输入以下命令。

vi /etc/httpd/conf/httpd.conf

2014072015344238445.jpg

复制/粘贴以下内容到文件的末尾并保存文件。

<IfModule security2_module>
 Include modsecurity-crs/crs-setup.conf
 Include modsecurity-crs/rules/*.conf
</IfModule>

2014072015353128920.jpg

我们将重新启动Apache服务器。

第7步

现在的ModSecurity已经成功配置了OWASP的规则,但能够按照我们的选择让它工作,我们将不得不作出一个新的配置文件与我们自己的规则,这就是所谓的白名单文件。通过这个文件,我们就可以控制整个防火墙,创建自己的ModSecurity规则。我们将在modsecurity.d目录中创建的。打开/通过下面的命令来创建这个文件。

vi /etc/httpd/modsecuirty.d/whitelist.conf

2014072015360510449.png

复制下面的规则并保存到该文件中。

#Whitelist file to control ModSec 
<IfModule mod_security2.c> 
SecRuleEngine On 
SecRequestBodyAccess On  
SecResponseBodyAccess On 
SecDataDir /tmp 
</IfModule>

2014072015372027406.jpg

现在,我们保存文件并重新启动Apache服务器。下面对各行的意义进行说明。

0x02 配置说明

1.SecRuleEngine

是接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。要设置不同的规则有以下几种。

SecRuleEngine On: 将在服务器上激活ModSecurity防火墙。它会检测并阻止该服务器上的任何恶意攻击。

SecRuleEngine Detection Only: 如果这个规则是在whitelist.conf文件中设置的,它只会检测到所有的攻击,并根据攻击产生错误,但它不会在服务器上阻止任何东西。

SecRuleEngine Off:: 这将在服务器上上停用ModSecurity的防火墙。

2.SecRequestBodyAccess: 它会告诉ModSecurity是否会检查请求。它起着非常重要的作用,当一个Web应用程序配置方式中,所有的数据在POST请求中。它只有两个参数,ON或OFF。我们可以根据需求设置。

3.SecResponseBodyAccess: 在whiltelist.conf文件,如果此参数设置为ON,然后ModeSecurity可以分析服务器响应,并做适当处理。它也有只有两个参数,ON和Off。我们可以根据求要进行设置。

4.SetDataDirectory: 在本文中,我们定义的ModSecurity的工作目录。该目录将作为ModSecurity的临时目录使用。

ModSecurity现在已经成功配置了OWASP的规则。现在,我们将测试对一些最常见的Web应用攻击。将测试ModSecurity是否挡住了攻击。

为了做到这一点,我们将尝试在一个存在存储性xss漏洞的网站上进行测试,我们已经配置ModSecurity。在一个网站中最常见的XSS漏洞的位置将是搜索框,用户可以在网站上搜索任何东西。如果恶意用户试图在搜索框中注入Java脚本或HTML脚本,它会在浏览器中执行。我们可以在搜索框中输入 。在正常情况下(当我们的服务器上的没有任何类型的应用程序防火墙),它会在网站显示一个弹窗上本。

如果在服务器上已经平配置ModSecurity,服务器会根据配置阻止XSS攻击,以及生成错误日志。

我们可以检查ModSecurity的错误日志文件。

在/var/log/httpd/error_log

我们可以通过下面的命令来检查文件的最后更新的行。

tail –f /var/log/httpd/error_log

2014072015384576018.jpg

ModSecurity核心规则集(CRS)提供以下类别的保户来防止攻击。

◆HTTP Protection (HTTP防御) - HTTP协议和本地定义使用的detectsviolations策略。 
◆Real-time Blacklist Lookups(实时黑名单查询) -利用第三方IP信誉。 
◆HTTP Denial of Service Protections(HTTP的拒绝服务保护) -防御HTTP的洪水攻击和HTTP  Dos 攻击。  
◆Common Web Attacks Protection(常见的Web攻击防护) -检测常见的Web应用程序的安全攻击。  
◆Automation Detection(自动化检测) -检测机器人,爬虫,扫描仪和其他表面恶意活动。  
◆Integration with AV Scanning for File Uploads(文件上传防病毒扫描) -检测通过Web应用程序上传的恶意文件。  
◆Tracking Sensitive Data(跟踪敏感数据) -信用卡通道的使用,并阻止泄漏。  
◆Trojan Protection(木马防护) -检测访问木马。  
◆Identification of Application Defects (应用程序缺陷的鉴定)-应用程序的错误配置警报。  
◆Error Detection and Hiding(错误检测和隐藏) -伪装服务器发送错误消息。

0x03 参考文章:

https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

http://spiderlabs.github.io/owasp-modsecurity-crs/

http://www.modsecurity.org/demo/crs-demo.html

http://www.atomicorp.com/wiki/index.php/Mod_security

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

https://www.owasp.org/index.php?title=Projects/OWASP_ModSecurity_Core_Rule_Set_Project/Releases/ModSecurity_2.0.6/Assessment&setlang=es

原文地址:http://resources.infosecinstitute.com/configuring-modsecurity-firewall-owasp-rules/

CAIDAN:http://www.modsecurity.cn/chm/TransformationFunctions.html

 

其他:

安装脚本:

wget -O /tmp/modsecurity.sh -t 0 http://lnamp.yundaiwei.com/modsecurity/install.sh&&sh /tmp/modsecurity.sh

* mod_security是Apache服务器的一个模块,可以有效防护SQL注入、xss跨站等攻击方式。
* 安装使用mod_security模块会增加CPU占用,请注意性能问题自行做出取舍。

* 规则文件目录为:/usr/local/httpd/conf/modsecurity
* 配置文件路径为:/usr/local/httpd/conf/extra/modsecurity.conf

* 关闭mod_security方法

仅对某个网站关闭:
在网站根目录下,将下面的内容写入到.htaccess文件

<ifmodule mod_security2.c>
SecRuleRemoveById 0-99999999
</ifmodule>

所有网站都关闭:
在/usr/local/httpd/conf/httpd.conf文件中找到以下内容,注释或者删除后重启httpd即可。

# mod_security
LoadModule security2_module modules/mod_security2.so
LoadModule unique_id_module modules/mod_unique_id.so
IncludeOptional conf/extra/modsecurity.conf
IncludeOptional conf/modsecurity/*.conf
* 注意,使用这个模块可能会产生误封。新手不建议使用。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件 , 注释 模块 modsecurity、modsecurity nginx、mod security、modsecurity中文手册、modsecurity 规则,以便于您获取更多的相关知识。

 

 

 

owasp规则:

第一部分:基础规则集
modsecurity_crs_20_protocol_violations.conf HTTP协议规范相关规则
modsecurity_crs_21_protocol_anomalies.conf HTTP协议规范相关规则
modsecurity_crs_23_request_limits.conf HTTP协议大小长度限制相关规则
modsecurity_crs_30_http_policy.conf HTTP协议白名单相关规则
modsecurity_crs_35_bad_robots.conf 恶意扫描器与爬虫规则
modsecurity_crs_40_generic_attacks.conf 常见的攻击例如命令执行,代码执行,注入,文件包含、敏感信息泄露、会话固定、HTTP响应拆分等相关规则
modsecurity_crs_41_sql_injection_attacks.conf SQL注入相关规则(竟然有一条MongoDB注入的规则,很全)
modsecurity_crs_41_xss_attacks.conf XSS相关规则
modsecurity_crs_42_tight_security.conf 目录遍历相关规则
modsecurity_crs_45_trojans.conf webshell相关规则
modsecurity_crs_47_common_exceptions.conf Apache异常相关规则
modsecurity_crs_49_inbound_blocking.conf 协同防御相关规则
modsecurity_crs_50_outbound.conf 检测response_body中的错误信息,警告信息,列目录信息
modsecurity_crs_59_outbound_blocking.conf 协同防御相关规则
modsecurity_crs_60_correlation.conf 协同防御相关规则
第二部分:SLR规则集
来自确定APP的PoC,不会误报,检测方法是先检查当前请求的文件路径是否出现在data文件中,若出现再进行下一步测试,否则跳过该规则集的检测
modsecurity_crs_46_slr_et_joomla_attacks.conf JOOMLA应用的各种漏洞规则
modsecurity_crs_46_slr_et_lfi_attacks.conf 各种APP的本地文件包含相关规则
modsecurity_crs_46_slr_et_phpbb_attacks.conf PHPBB应用的各种漏洞规则
modsecurity_crs_46_slr_et_rfi_attacks.conf 各种APP的远程文件包含相关规则
modsecurity_crs_46_slr_et_sqli_attacks.conf 各种APP的SQL注入相关规则
modsecurity_crs_46_slr_et_wordpress_attacks.conf WORDPRESS应用的各种漏洞规则
modsecurity_crs_46_slr_et_xss_attacks.conf 各种APP的XSS相关规则
 
第三部分:可选规则集
modsecurity_crs_10_ignore_static.conf 静态文件不过WAF检测的相关规则
modsecurity_crs_11_avs_traffic.conf AVS(授权的漏洞扫描器)的IP白名单规则
modsecurity_crs_13_xml_enabler.conf 请求体启用XML解析处理
modsecurity_crs_16_authentication_tracking.conf 记录登陆成功与失败的请求
modsecurity_crs_16_session_hijacking.conf 会话劫持检测
modsecurity_crs_16_username_tracking.conf 密码复杂度检测
modsecurity_crs_25_cc_known.conf CreditCard验证
modsecurity_crs_42_comment_spam.conf 垃圾评论检测
modsecurity_crs_43_csrf_protection.conf 与modsecurity_crs_16_session_hijacking.conf联合检测,使用内容注入动作append注入CSRF Token
modsecurity_crs_46_av_scanning.conf 使用外部脚本扫描病毒
modsecurity_crs_47_skip_outbound_checks.conf modsecurity_crs_10_ignore_static.conf的补充
modsecurity_crs_49_header_tagging.conf 将WAF规则命中情况配合Apache RequestHeader指令注入到请求头中,以供后续应用进一步处理
modsecurity_crs_55_application_defects.conf 安全头(X-XSS-Protection,X-FRAME-OPTIONS,X-Content-Type-Options)设置,安全Cookie设置(Domain,httponly,secure),字符集设置等规则
modsecurity_crs_55_marketing.conf记录MSN/Google/Yahoo robot情况
 
第四部分:实验性规则集
modsecurity_crs_11_brute_force.conf 防御暴力破解相关规则
modsecurity_crs_11_dos_protection.conf 防DoS攻击相关规则
modsecurity_crs_11_proxy_abuse.conf 检测X-Forwarded-For是否是恶意代理IP,IP黑名单
modsecurity_crs_11_slow_dos_protection.conf Slow HTTP DoS攻击规则
modsecurity_crs_25_cc_track_pan.conf 检测响应体credit card信息
modsecurity_crs_40_http_parameter_pollution.conf 检测参数污染
modsecurity_crs_42_csp_enforcement.conf CSP安全策略设置
modsecurity_crs_48_bayes_analysis.conf 使用外部脚本采取贝叶斯分析方法分析HTTP请求,区分正常与恶意请求
modsecurity_crs_55_response_profiling.conf 使用外部脚本将响应体中的恶意内容替换为空
modsecurity_crs_56_pvi_checks.conf使用外部脚本检测 REQUEST_FILENAME是否在osvdb漏洞库中
modsecurity_crs_61_ip_forensics.conf 使用外部脚本收集IP的域名、GEO等信息
modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf APPSENSOR检测设置文件
modsecurity_crs_40_appsensor_detection_point_3.0_end.conf APPSENSOR检测设置文件
modsecurity_crs_16_scanner_integration.conf 对扫描器设置IP白名单,并调用扫描器API来进行检测
modsecurity_crs_46_scanner_integration.conf
使用modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf,modsecurity_crs_40_appsensor_detection_point_3.0_end.conf 来跟踪XSS漏洞参数与SQLI漏洞参数
modsecurity_crs_40_appsensor_detection_point_2.1_request_exception.conf 使用外部脚本检测请求方法,参数个数,参数名字,参数长度,参数字符等限制
modsecurity_crs_40_appsensor_detection_point_2.9_honeytrap.conf 使用隐藏参数设置蜜罐

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件 , 安全 , http , 应用 参数 modsecurity 规则、modsecurity2规则、modsecurity 规则解析、modsecurity规则详解、modsecurity 规则分析,以便于您获取更多的相关知识。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ModSecurity并不是直接为Node.js开发的,但是你可以使用Node.js的模块来与ModSecurity进行集成。 在Node.js中,你可以使用第三方模块`modsecurity`来实现与ModSecurity的交互。这个模块提供了一个封装,允许你在Node.js应用程序中使用ModSecurity作为WAF来保护你的Web应用程序。 要使用`modsecurity`模块,首先需要安装它。你可以使用npm(Node.js软件包管理器)来安装它,命令如下: ``` npm install modsecurity ``` 安装完成后,你可以在Node.js应用程序中引入`modsecurity`模块,使用它来创建一个ModSecurity实例。然后,你可以加载ModSecurity规则文件,对请求进行检查,根据需要采取相应的操作。 下面是一个简单的示例代码,展示了如何在Node.js中使用`modsecurity`模块: ```javascript const ModSecurity = require('modsecurity'); // 创建ModSecurity实例 const modsec = new ModSecurity(); // 加载规则文件 modsec.loadRulesFromFile('modsecurity.conf'); // 处理请求 const request = { // 请求数据 ... }; // 对请求进行检查 modsec.transaction.processRequest(request); // 检查结果 if (modsec.transaction.intervention) { // 发现违规行为,采取相应操作 console.log('Intervention: ' + modsec.transaction.intervention); } else { // 请求通过检查,继续处理 ... } ``` 上述示例中,你可以根据自己的实际需求进行修改和扩展。请确保在使用ModSecurity时了解和遵守相关规则和最佳实践,以确保正确地保护你的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值