如何阻止IIS 7.5中的空白/空白用户代理

我们正在经历一个大规模的DDOS攻击,但它不是我们的思科卫士可以处理的典型僵尸networking,它是一个BitTorrent攻击。 这对我来说是新的,所以我不确定如何阻止它。

以下是IIS正在从BitTorrent客户端每秒处理40到100个请求的统计信息。 我们有大约20%的用户代理,但另外75%是空白的。

我们希望在服务器级别阻止空白的用户代理。

什么是最好的方法?

如果请求过滤不能处理这个问题,你可以尝试从微软免费下载“ URL Rewrite ”,而且非常有帮助。

创build一个这样的规则:

<rule name="NoUserAgent" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTP_USER_AGENT}" pattern="^$" /> </conditions> <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You did not present a User-Agent header which is required for this site" /> </rule> 

在一个快速testing中,这对于一个空的用户代理和一个缺less的工作。

我正在使用正则expression式“^ $”,它只对一个空string有效。

你也可以返回一个404或者其他任何你想要的而不是403。

40-100个请求/秒不是DoS制造的。

也就是说,如果要阻止特定的用户代理,则可以使用IIS <filteringRules>指令来执行此操作(请参阅http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/filteringRules )。

下面的例子不能保证工作(我没有IIS系统来testing):

 <requestFiltering> <filteringRules> <filteringRule name="Block bad UAs" scanUrl="false" scanQueryString="false" scanAllRaw="false"> <scanHeaders> <add requestHeader="User-agent" /> </scanHeaders> <appliesTo> </appliesTo> <denyStrings> <add string="bad-user-agent" /> <add string="" /> </denyStrings> </filteringRule> </filteringRules> </requestFiltering> 

如果使用IIS GUI代替web.cofig,则可以使用提供的IIS模板来获得相同的结果:

进入IIS – > URL重写 – > 添加规则… – >从模板中select“ 请求阻止 ”。 然后只需使用可用的下拉菜单填写您的规则:

  • 阻止访问基于:用户代理标题
  • 阻止请求:匹配模式
  • 模式(用户代理标题): ^ $
  • 使用:正则expression式
  • 如何阻止:中止请求

规则将与其他答复一样,但您必须注意,您似乎无法重新命名。 另外,我的示例使用中止请求而不是自定义响应,但是如果您愿意,也可以从模板中select其他40X响应。