Seu domínio está em plataforma Windows e você precisa bloquear um IP para que ele não acesse seu site? Veja agora como bloquear IP através do web.config.
Tabela de conteúdos do artigo:
Como bloquear IP através do web.config
Em primeiro lugar, você precisa acessar o FTP do seu domínio. Para domínios em ambiente Windows sugerimos o FileZilla.
Caso não lembre da sua senha de FTP, altere-a pelo Painel Sites.
Após logar no FTP, localize o arquivo web.config e edite da seguinte forma (lembrando que os comandos devem ser feitos dentro da tag “system.webServer”):
<location path="Default Web Site">
<system.webServer>
<security>
<ipSecurity>
<add ipAddress="172.16.100.27" />
</ipSecurity>
</security>
</system.webServer>
</location>
Basta alterar o IP 172.16.100.27 pelo IP que você deseja bloquear.
Se há mais IPs a serem bloqueados, basta adicionar outra linha e assim por diante.
Outra opção para este tipo de bloqueio é o seguinte script:
<rules>
<rule name="RequestBlockingRule" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{REMOTE_ADDR}" pattern="172.16.100.27" />
</conditions>
<action type="AbortRequest" />
</rule>
Como bloquear um range de IP
Se você deseja bloquear um bloco inteiro de IP, você pode utilizar a seguinte regra:
<location path="Default Web Site">
<system.webServer>
<security>
<ipSecurity>
<add ipAddress="172.16.0.0" subnetMask="255.255.0.0" />
</ipSecurity>
</security>
</system.webServer>
</location>
Por ser uma máscara de rede classe B, esta regra bloqueia todos os IPs desde 172.16.0.1 até 172.16.255.254.
Da mesma forma como o exemplo anterior, basta adicionar outra linha para bloquear outro range de IPs.
Bloquear tudo e liberar alguns IPs
Por outro lado, se você deseja bloquear totalmente o acesso e liberar apenas o seu IP, por exemplo, você pode usar a regra a seguir.
Neste exemplo estamos bloqueando todos e liberando apenas os IPs 172.16.1.10 e 192.168.10.198:
<security>
<ipSecurity allowUnlisted="false">
<add ipAddress="172.16.1.10" allowed="true"/>
<add ipAddress="192.168.10.198" allowed="true"/>
</ipSecurity>
</security>
A utilização deste script é mais conveniente para algum diretório específico que você queira restringir o acesso. Por exemplo: http://dominio.com.br/sistema
Aqui também pode ser adicionado mais linhas para liberar mais IPs, se desejar.
Bloqueando Crawlers (bots)
Caso você esteja sofrendo com lentidões em seu site/aplicação, é interessante que você aplique um filtro em seu web.config para bloquear botnets, como este exemplo abaixo:
<rewrite>
<rules>
<rule name="Abuse User Agents Blocking" stopProcessing="true">
<match url=".*" ignoreCase="false"/>
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="^.*(adscanner|ahrefsbot|alphabot|applebot|AhrefsBot|awariosmartbot|bingpreview|blexbot|borneobot|coccocbot-image|com.tinyspeck.chatlyio|duckduckbot-https|e.ventures\ investment\ crawler|garlikcrawler|gather\ analyze\ provide|gluten\ free\ crawler|googlebot-image|healthcheckbot|http\ banner\ detection|hubspot\ links\ crawler|hypestat|internet-structure-research-project-bot|iodc;\ odysseus|ips-agent|lightspeedsystemscrawler|linkdexbot|mail.ru_bot|masscan|masscan|megaindex.ru|mj12bot|msnbot|netcraftsurveyagent|netestate\ ne\ crawler|netsystemsresearch|nimbostratus-bot|nsrbot|obot|petalbot|plukkie|probethenet|riddler|safednsbot|seekport\ crawler|semanticscholarbot|SemrushBot|semrushbot-ba|seokicks-robot|serpstatbot|slack-imgproxy|slackbot|slackbot-linkexpanding|sogou\ web\ spider|startmebot|surdotlybot|telegrambot|tpradstxtcrawler|trendsmapresolver|tweetmemebot|unfurlist|xovibot|yahoo!\ slurp|yandexmobilebot|Yandex|ZoominfoBot|bingbot|DotBot).*$"/>
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden"/>
</rule>
</rules>
</rewrite>