denying/killing 特定 URL 请求的最佳实践 ASP.Net IIS 7.5

Best Practice for denying/killing specific URL requests ASP.Net IIS 7.5

我有一个 mvc/forms 混合网络应用程序托管在 Azure 的 windows 2008 r2 实例上。网络服务器是 IIS 7.5 。在过去的 4-5 个月里,我的服务器受到漏洞扫描程序检查 php 相关漏洞的彻底打击。示例:

The controller for path '/wp-login.php' was not found or does not implement IController.

来自 Elmah

所以我进入并专门过滤了 IIS 7.5 中的 .php 和 .cgi 文件扩展名请求,效果很好。然而,我仍然因为这样的请求而受到打击:

The controller for path '/admin/Cms_Wysiwyg/directive/' was not found or does not implement IController. 

The controller for path '/phpmyadmin2018/' was not found or does not implement IController.

等等。这更令人烦恼,因为所有内容都已记录,返回 404,这都是无用的资源丢弃。

通过 Elmah,我查询了与所有这些请求相关的不同 URL 列表。短路这些请求的最佳方法是什么?如果我可以选择禁止 IP 就好了,但现在仅在过去 3 个月就有 700 个独特的 IP 发出这些请求。主要优先事项是短路来自我知道是虚假的 URL 字典的请求,并避免来自我的网络服务器的日志记录和响应。谢谢!

半个伪代码,但我认为它会有所帮助;

在Global.asax.cs中:

public class MvcApplication : HttpApplication
{
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        var url = HttpContext.Current.Request.Url.AbsoluteUri;
        if(checkUrl(url)){
           // your code here
        }

        if (UserIsBanned(GetUserIp()))
        {
            Response.Write("ban");
            Response.End();
        }
    }

    private string GetUserIp()
    {
        return HttpContext.Current.Request.UserHostAddress;
    }