modsecurity的解决方法误报?

我正在粘贴“drwxr-xr-x。2 root root 6 Sep 24 04:35 images”到一个dokuwiki页面。这触发了modsecurity,并且我得到了一个HTTP错误。 如何修改这条规则以避免这种误报?

它发生在Dreamhost上,支持告诉我这个规则在阻止攻击方面是成功的。 它试图阻止什么样的攻击? 如果有人想查看文件权限,恶意代码可以简单地重新设置响应格式(例如,显示774)来绕过正则expression式匹配,而不是显示原始输出。

ModSecurity:访问被代码418拒绝(阶段4)。 模式匹配“(?:[^ <] *?(?: \ b(?:(?:c(?:ehennemden | gi-telnet)| gamma web shell)\ b | imhabirligi phpftp)|(?:r( ?:emote explorer | 57shell)| aventis klasvayv | zehir)\ b | \ .: :(?:新闻远程php shell注入:: \。| rhtools \ b)| ph(?:p(?:( ?: command | -terminal)\ b | remoteview)| …“at RESPONSE_BODY。[file”/dh/apache2/template/etc/mod_sec2/modsecurity_crs_45_trojans.conf“] [line”34“] [id”950922“] [msg “后门访问”] [严重性“关键”] [标签“MALICIOUS_SOFTWARE / TROJAN”]

完整的规则是这样的:

SecRule RESPONSE_BODY "(?:<title>[^<]*?(?:\b(?:(?:c(?:ehennemden|gi-telnet)|gamma web shell)\b|imhabirligi phpftp)|(?:r(?:emote explorer|57shell)|aventis klasvayv|zehir)\b|\.::(?:news remote php shell injection::\.| rhtools\b)|ph(?:p(?:(?: commander|-terminal)\b|remoteview)|vayv)|myshell)|\b(?:(?:(?:microsoft windows\b.{0,10}?\bversion\b.{0,20}?\(c\) copyright 1985-.{0,10}?\bmicrosoft corp|ntdaddy v1\.9 - obzerve \| fux0r inc)\.|(?:www\.sanalteror\.org - indexer and read|haxplor)er|php(?:konsole| shell)|c99shell)\b|aventgrup\.<br>|drwxr))" \ "phase:4,rev:'2',ver:'OWASP_CRS/2.2.9',maturity:'8',accuracy:'8',t:none,ctl:auditLogParts=+E,block,msg:'Backdoor access',logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',capture,id:'950922',tag:'OWASP_CRS/MALICIOUS_SOFTWARE/TROJAN',tag:'WASCTC/WASC-01',tag:'OWASP_TOP_10/A7',tag:'PCI/5.1.1',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.trojan_score=+1,setvar:tx.anomaly_score=+%{tx.error_anomaly_score},setvar:tx.%{rule.id}-OWASP_CRS/MALICIOUS_SOFTWARE/TROJAN-%{matched_var_name}=%{matched_var}" 

由于最后的testing,这与以上匹配:drwxr。 我不确定这是为什么添加到这个规则,因为在评论中没有解释,这是在2.6版本最初提交给GitHub。

无论如何,你有几个select:

您可以编辑规则以删除最后一个检查。 这是不推荐的,因为任何未来的规则升级将恢复它。

您可以通过将以下内容添加到configuration中来closures该规则(从/dh/apache2/template/etc/mod_sec2/modsecurity_crs_45_trojans.conf加载规则之后)

  SecRuleRemoveById 950922 

你也可以closures响应主体parsing:

 SecResponseBodyAccess Off 

扫描响应主体可能会影响性能,所以您应该考虑这一点。 请求通常很小(例如GET /index.html),但响应将包含更多的数据。

从理论上讲,你应该知道你的回应是什么(提供你对SQL注入和XSS等的保护),所以扫描出站响应可能是没有意义的。

相反的观点是响应主体检查对于防止信息泄漏(例如用于从数据库泄漏信息的SQL注入攻击)是有用的。 然后,如果你允许SQL注入,那么即使没有泄漏信息,你也会遇到很大的麻烦。

就个人而言,我没有发现扫描响应主体,除了在特定的使用情况下有用,所以默认closures它们,并为特定的URL打开它们。