最近我的elmah异常日志充满了使用这样的大坝ZmEu安全软件对我的服务器的尝试
对于那些认为“什么是ZmEu?”,这里是一个解释…
“ZmEu似乎是一个安全工具,用于发现PHPMyAdmin(一个基于Web的MysqL数据库管理器)的2.x.x版中的安全漏洞.该工具似乎源于东欧的某个地方.就像所有黑帽子安全工具似乎都发生的一样,它进入了中国,在中国一直被用来对世界各地的网络服务器进行不间断的暴力攻击.“
这是一个关于这个令人讨厌的攻击的伟大的链接 – > http://www.philriesch.com/articles/2010/07/getting-a-little-sick-of-zmeu/
我使用.net,所以他们将在我的服务器上找到PHPMyAdmin,但事实上,我的日志充满了ZmEu攻击它变得令人厌烦.
上面的链接提供了一个很好的修复使用HTAccess,但im使用IIS7.5,而不是apache.
我有一个asp.net MVC 2网站,所以我使用global.asax文件来创建我的路由
这是HTAccess seugestion
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^/path/to/your/abusefile.PHP RewriteCond %{HTTP_USER_AGENT} (.*)ZmEu(.*) RewriteRule .* http://www.yourdomain.com/path/to/your/abusefile.PHP [R=301,L] </IfModule>
解决方法
对于
my other one的另一个答案…这一个专门阻止Elmah记录由ZmEu生成的404错误,同时让您的其余站点行为不变.这可能比将消息直接传递给黑客更不明显.
您可以控制Elmah在various ways中登录的内容,其一种方法是将其添加到Global.asax中
void ErrorLog_Filtering(object sender,ExceptionFilterEventArgs e) { if (e.Exception.GetBaseException() is HttpException) { HttpException httpEx = (HttpException)e.Exception.GetBaseException(); if (httpEx.GetHttpCode() == 404) { if (Request.UserAgent.Contains("ZmEu")) { // stop Elmah from logging it e.Dismiss(); // log it somewhere else logger.InfoFormat("ZmEu request detected from IP {0} at address {1}",Request.UserHostAddress,Request.Url); } } } }
要触发此事件,您需要从项目中引用Elmah DLL,并使用Elmah添加;到您的Global.asax.cs的顶部.
行logger.InfoFormat的行假定您正在使用log4net.如果没有,请将其更改为其他内容.