Como bloquear agentes de usuário nulos / em branco no IIS 7.5

4

Estamos passando por um ataque DDOS em larga escala, mas não é a típica bot-net que o Cisco Guard pode suportar, é um ataque BitTorrent. Isso é novo para mim, então não tenho certeza de como pará-lo.

Aqui estão as estatísticas O IIS está processando entre 40 e 100 solicitações por segundo de clientes BitTorrent. Temos cerca de 20% dos User Agents, mas os outros 75% estão em branco.

Queremos bloquear os agentes de usuários em branco no nível do servidor.

Qual é a melhor abordagem?

    
por Jeremy Boyd 16.09.2011 / 18:42

3 respostas

4

Se a filtragem de solicitações não puder lidar com isso, tente ' URL Rewrite ' a free Add -A partir da Microsoft e muito útil de qualquer maneira.

Crie uma regra como esta:

<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>

Durante um teste rápido, isso funcionou tanto para um agente de usuário vazio quanto para um ausente.

Estou usando a expressão regular '^ $', que é válida apenas para uma string vazia.

Você também pode retornar um 404 ou o que você quiser, em vez de um 403.

    
por 10.02.2013 / 16:55
0

40 a 100 solicitações / segundo não faz um DoS.

Dito isto, se você quiser bloquear um agente de usuário específico, pode usar a diretiva <filteringRules> do IIS para fazer isso (consulte link ).

O exemplo a seguir não tem garantia de funcionar (não tenho sistemas IIS para testar):

<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>
    
por 16.09.2011 / 18:55
0

Se você usar a GUI do IIS para isso em vez de web.cofig, poderá usar os modelos do IIS fornecidos para obter o mesmo resultado:

Entre no IIS - > URL Rewrite - > Adicionar regra (s) ... - > Selecione " Solicitação de bloqueio " nos modelos. Em seguida, basta preencher sua regra usando os menus suspensos disponíveis:

  • Bloqueie o acesso com base em: cabeçalho do agente de usuário
  • Solicitação de bloqueio que: corresponde ao padrão
  • Padrão (cabeçalho do agente do usuário): ^ $
  • Usando: Expressão regular
  • Como bloquear: cancelar solicitação

A regra será igual a outras respostas dadas com a advertência de que você não consegue renomeá-la. Além disso, meu exemplo usa a Solicitação de interrupção em vez da resposta personalizada, embora você possa escolher outras respostas de 40X a partir do modelo, se quiser.

    
por 08.05.2017 / 17:45

Tags