嗨,我遇到了一个非常奇怪的问题.
每当我在Facebook上发布我的网站链接时,他们都会被视为禁忌.
该网站本身运作良好,我在其他网站上链接时没有看到这一点.
这可能是服务器配置错误吗?关于在哪里看的任何想法?
这里有一些信息:
我有一台运行WHM 11.25.0的专用服务器
我在这里使用cPanel 11.25.0托管了2个站点
错误消息:
被禁止
您无权访问此服务器上的/ blog/deepwater-horizon-11 /.
此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误.
Apache/2.2.14(Unix)mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635服务器www.offshoreinjuries.com端口80
更新:
这是一个示例链接,如果它有帮助.(通知链接页面直接工作正常)
http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.offshoreinjuries.com%2Fblog%2Fdeepwater-horizon-11%2F&h=834ea
更新和答案:
找到问题并在下面添加完整的答案.
我知道我可以在rewritecond中检查GET查询字符串参数,如下所示:
RewriteCond %{REQUEST_URI} ^/somepath/somepath
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} try=3
RewriteCond %{QUERY_STRING} name=([^&]*)
RewriteRule ^/somepath/somepath(.*) /otherpath/otherpath?name=%1 [R]
Run Code Online (Sandbox Code Playgroud)
如何检查请求正文中的POST参数?我听说mod_security可以做到,但我没有找到任何关于如何将mod_security与mod_rewrite一起使用的例子,如上例所示.
我打算用这样的东西来处理POST:
RewriteCond %{REQUEST_URI} ^/somepath/somepath
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^/somepath/somepath(.*) /otherpath/otherpath [PT]
Run Code Online (Sandbox Code Playgroud)
...除了我需要一个RewriteCond来检查POST参数以查看"try = 3".
modsecurity可以检查请求体并将检查结果加载到环境变量中吗?那会有用......
ARGS , ARGS_NAMES 在 mod_security 核心规则集中实际上意味着什么?
我已经提到了Modsecurity2 Apache 参考,但我没有得到任何明确的想法。
有人能给我一个具体的想法,最好是一个解释,它实际上是什么,以及某事如何实际触发一个积极的规则,如下所示。
下面的规则对于“x 和 6”等情况会触发正数,通常是任何“和”后跟一个数字。在这种情况下,我了解请求文件名是什么。我不明白的是什么是 ARGS 和 ARGS_NAMES。我需要一个参考下面的规则的具体例子。
SecRule REQUEST_FILENAME|ARGS_NAMES|ARGS|XML:/* "(?i)\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')\s*[=]|\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')\s*[<>]|\band\b ?(?:\d{1,10}|[\'\"][^=]{1,10}[\'\"]) ?[=<>]+|\b(?i:and)\b\s+(\d{1,10}|'[^=]{1,10}')" \
"phase:2,rev:'2.2.5',capture,t:none,t:urlDecodeUni,ctl:auditLogParts=+E,block,msg:'SQL Injection Attack',id:'959072',tag:'WEB_ATTACK/SQL_INJECTION',tag:'WASCTC/WASC-19',tag:'OWASP_TOP_10/A1',tag:'OWASP_AppSensor/CIE1',tag:'PCI/6.5.2',logdata:'%{TX.0}',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.sql_injection_score=+%{tx.critical_anomaly_score},setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:tx.%{rule.id}-WEB_ATTACK/SQL_INJECTION-%{matched_var_name}=%{tx.0}"
Run Code Online (Sandbox Code Playgroud) 我一直在寻找在我的网站上使用Google跟踪代码管理器,但由于默认的Google包含代码被我的服务器上的mod-security安装阻止,我在第一个障碍时失败了:
标准GTM包括代码:
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)
来自mod-security的回复:
WARNING: Possibly malicious iframe tag in output
Message: Outbound Anomaly Score Exceeded (score 15): Possibly malicious iframe tag in output
Run Code Online (Sandbox Code Playgroud)
触发的规则是ids 981000和981001.
我可以理解为什么mod-security可能认为带有"display:none; visibility:hidden"的iframe可能是恶意的,并且删除style属性会使规则981001停止触发,但由于规则981000,请求仍然失败.
981000似乎对宽度和高度属性应该有一个强烈的意见,但我已经尝试将它们设置为'1'和'10'无效:-(
有谁知道如何格式化iframe以适应此规则?或者如何更改GTM包含代码以使其不包含iframe?
谢谢
PS:我知道你可以通过删除整个noscript区域来解决这个问题,但我正在寻找一种不会改变包含代码功能的解决方案.
PPS:这是规则981000匹配的模式,在我的大脑在嵌套捕获组云中爆炸之前,我能理解其中的一半;-)
Pattern match "<\W*iframe[^>]+?\b(?:width|height)\b\W*?=\W*?["']?[^"'1-9]*?(?:(?:20|1?\d(?:\.\d*)?)(?![\d%.])|[0-3](?:\.\d*)?%)"
Run Code Online (Sandbox Code Playgroud) 我让 Apache 和 Modsecurity 一起工作。我试图通过请求的标头(如“facebookexternalhit”)来限制命中率。然后返回友好的“429 Too Many Requests”和“Retry-After: 3”。
我知道我可以读取一个标题文件,例如:
SecRule REQUEST_HEADERS:User-Agent "@pmFromFile ratelimit-bots.txt"
但我在制定规则时遇到了麻烦。
任何帮助将非常感激。谢谢。
我们正在为ModSecurity(mod_security)寻找一些额外的规则 - 有两个商业选项,GotRoot或TrustWave的新选项
http://www.gotroot.com/mod_security+rules
https://www.trustwave.com/modsecurity-rules-support.php
我听说过TrustWave而不是GotRoot.然而,GotRoot规则似乎在Google等上有更多的提及 - 似乎TrustWave的规则只出现在大约一个月左右之前
我们将使用它们来保护电子商务网站
我正在尝试将一系列ips(Googlebots)列入Ubuntu 12.04服务器上的modsecurity白名单.例如,这是我需要列入白名单的范围:
66.249.64.0/19
我尝试了其他人建议的几种方法,但只有单个ips被阻止,当我尝试作为范围时,白名单被忽略.我已将规则添加到文件底部新部分的/usr/share/modsecurity-crs/modsecurity_crs_10_config.conf中.
这有效:
SecRule REMOTE_ADDR"^ 66.249.65.3"阶段:1,nolog,allow,ctl:ruleEngine = Off
这些不起作用:
SecRule REMOTE_ADDR"^ 66.249.64.0/19"阶段:1,nolog,allow,ctl:ruleEngine = off
SecRule REMOTE_ADDR"@ipMatch 66.249.64.0/19""阶段:1,nolog,允许"
SecRule REMOTE_ADDR"^ 66.249.64\0/19 $"阶段:1,nolog,allow,ctl:ruleEngine = Off
我已经看到了几种不同的语法建议,但似乎没有一种方法适用于我的安装.mod-security的版本是否重要?有什么建议吗?TIA
我在运行WordPress网站的Ubuntu 14.04 Apache 2.4.7上安装了mod_security。我有一些需要忽略的规则,但是我在实现一些通配符规则时遇到了麻烦,因此不必指定每个页面。
我所拥有的(在我的site.conf文件中)是...
<LocationMatch "/wp-admin/post.php">
SecRuleRemoveById 300016
</LocationMatch>
<LocationMatch "/wp-admin/nav-menus.php">
SecRuleRemoveById 300016
</LocationMatch>
<LocationMatch "(/wp-admin/|/wp-login.php)">
SecRuleRemoveById 950117
SecRuleRemoveById 950005
SecRuleRemovebyID 981173
SecRuleRemovebyId 960024
</LocationMatch>
<LocationMatch "/wp-admin/load-scripts.php">
SecRuleRemoveById 981173
</LocationMatch>
<LocationMatch "/wp-admin/plugins.php">
SecRuleRemoveById 981173
</LocationMatch>
<LocationMatch "/wp-admin/customize.php">
SecRuleRemoveById 981173
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
我想要的是将所有内容合并为在wp-admin和上使用通配符的单个规则wp-login。
我已经尝试了以下方法,但由于mod_security引发了拒绝,因此它似乎被忽略了。
<LocationMatch "(/wp-admin/*|/wp-login/*)">
....
Run Code Online (Sandbox Code Playgroud)
并且
<LocationMatch "(/wp-admin/*)">
....
Run Code Online (Sandbox Code Playgroud)
并且
<Location "/wp-admin/*">
....
Run Code Online (Sandbox Code Playgroud)
我已经对LocationMatch和regex进行了一些研究,但这里没有得到任何东西。我想要做什么?
编辑:modsec_audit.log中的引荐来源网址为 http://www.<site>.com/wp-admin/customize.php?theme=modality
我是新手,我尝试为教程抓取网页的源代码。我安装了 beautifulsoup,请求安装。起初我想获取源代码。我正在从“ https://pythonhow.com/example.html ”做这个抓取工作。我没有做任何违法的事情,我认为这个网站也是为此目的而建立的。这是我的代码:
import requests
from bs4 import BeautifulSoup
r=requests.get("http://pythonhow.com/example.html")
c=r.content
c
Run Code Online (Sandbox Code Playgroud)
我收到了 mod 安全错误:
b'<head><title>Not Acceptable!</title></head><body><h1>Not Acceptable!</h1><p>An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.</p></body></html>'
Run Code Online (Sandbox Code Playgroud)
感谢所有与我打交道的人。 尊重
仅当文件驻留在特定目录中时,我才想使用 ModSecurity 修改响应内容。我实施了这样的规则:
SecRule REQUEST_URI "@contains /admin/" "phase:2,chain,t:none,t:urlDecode,t:lowercase,t:normalizePath,deny,log"
SecRule STREAM_OUTPUT_BODY "@rsub s/test/replaced_string/" "phase:4,t:none,log,pass,msg:'String replaced'"
Run Code Online (Sandbox Code Playgroud)
但是写完这条规则后,当我重新启动 apache2 时,modsecurity 给了我一个错误:ModSecurity: Disruptive actions can only be specified by chain starter rules。我也尝试以其他方式编写规则,但没有帮助。
知道为什么会这样吗?