Bloqueando o acesso ao site via IP

De Wiki Locaweb
Ir para: navegação, pesquisa
O código mencionado abaixo é somente um exemplo. Caso haja dúvidas quanto sua utilização, sugerimos que verifique juntamente a um desenvolvedor de sua confiança.

Bloqueio via Windows


No código abaixo, temos um exemplo de como podemos realizar o bloqueio ao site à partir de apenas 1 endereço IP, este código deve ser inserido em seu arquivo web.config (basta substituir os campos "xxx.xxx.xxx.xxx"):


<configuration>
 <system.webServer>
   <rewrite>
     <rules>
	<rule name="RequestBlockingRule" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
	<match url="*" />
	<conditions logicalGrouping="MatchAny">
	<add input="{REMOTE_ADDR}" pattern="xxx.xxx.xxx.xxx" />
	</conditions>
	<action type="AbortRequest" />
	</rule>
	</rules>
     </rewrite>
  </system.webServer>
</configuration>


Caso haja necessidade de realizar o bloqueio de vários endereços IP, basta seguir o código à seguir (basta substituir os campos "xxx.xxx.xxx.xxx" ou "yyy.yyy.yyy.yyy"):


<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RequestBlockingRule" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
		<match url="*" />
		<conditions logicalGrouping="MatchAny">
		<add input="{REMOTE_ADDR}" pattern="XXX.XXX.XXX.XXX" />
		<add input="{REMOTE_ADDR}" pattern="YYY.YYY.YYY.YYY" />
		</conditions>
		<action type="AbortRequest" />
	   </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Neste caso, podemos ver que basta adicionar a linha <add input="{REMOTE_ADDR}" pattern="YYY.YYY.YYY.YYY" /> para cada endereço IP que deseja bloquear.


Bloqueio via Linux

O tutorial a seguir é funcional somente com Apache, em outros webservers e aplicações, como IIS, Tomcat e Jboss deve-se fazer a validação através de programação.


Locaweb Em Linux este bloqueio (e liberação também) é feito através das configurações especificadas nos arquivos .htaccess alocados na pasta public_html (para planos de Hospedagem) ou HTTPDOCS (para os planos de Revenda). Veja como criá-los ou editá-los em Como editar um arquivo em um servidor Linux.


Exemplo de configuração para bloquear o acesso de todos os IP's, exceto 200.234.206.251, 200.243.90.2 e 189.53.70.141.

Order deny,allow
deny from all
allow from 200.234.206.251
allow from 200.243.90.2
allow from 189.53.70.141
# deny from all é o mesmo que bloqueio para todos, exceto para os que estiverem em 'allow from'


Exemplo para bloquear o acesso somente para os IPs, 200.243.90.2 e 189.53.70.141.

Order allow,deny
deny from 200.243.90.2
deny from 189.53.70.141
allow from all
# allow from all é o mesmo que libere para todos, exceto para os que estiverem em 'deny from'


É possível fazer manipulação de ranges de IP's também, ou seja: 200.243.90.*, 189.53.*.* ou 200.*.*.*, conforme exemplos abaixo:

deny from 200.243.90. # Bloquear acesso de todos os IP's entre 200.243.90.0 e 200.243.90.255
allow from 189.53.    # Liberar acesso de todos os IP's entre 189.53.0.0 e 189.53.255.255
# Obs: Tem o ponto depois do número, pois ele indica ao Apache que se trata de range


Se desejar usar estas regras somente para alguns arquivos, supondo que este se chame secreto.php, faça desta forma:

<Files "secreto.php">
# Coloque sua regra aqui
</Files>


Para usuários avançados: Pode-se especificar a máscara de sub-rede em formato decimal ou CIDR também

deny from 64.55.0.0/16
allow from 66.15.1.128/255.255.255.128


Existem casos em que estas regras devem ser feitas somente em um diretório, por exemplo, intranet. Nestes casos basta alocar o arquivo .htaccess no subdiretório intranet ao invés de alocá-lo em public_html ou HTTPDOCS.

Detalhe: Essa configuração é efetivada de forma recursiva, ou seja, a partir do diretório que você aloca o arquivo .htaccess ocorrerá a replicação da configuração em todos os subdiretórios.


Veja Também