Melhor maneira de restringir o access por endereço IP?

Para um aplicativo ASP.NET C #, precisaremos restringir o access com base no endereço IP. Qual é o melhor jeito de concluir isso?

No IIS 7, a melhor maneira de restringir o IP é usando o arquivo de configuração.

Artigo completo:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

Uma maneira é usar um HttpModule .

Do link (no caso de ele desaparecer):

///  /// HTTP module to restrict access by IP address ///  public class SecurityHttpModule : IHttpModule { public SecurityHttpModule() { } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(Application_BeginRequest); } private void Application_BeginRequest(object source, EventArgs e) { HttpContext context = ((HttpApplication)source).Context; string ipAddress = context.Request.UserHostAddress; if (!IsValidIpAddress(ipAddress)) { context.Response.StatusCode = 403; // (Forbidden) } } private bool IsValidIpAddress(string ipAddress) { return (ipAddress == "127.0.0.1"); } public void Dispose() { /* clean up */ } } 

Uma vez que a class do Módulo HTTP é construída, você precisa registrá-la na seção httpModules do seu arquivo web.config, desta forma:

        

Isso adiciona o módulo ao pipeline de solicitação do ASP.NET para seu aplicativo da web.

Aqui está um artigo da Microsoft sobre como fazer isso.


Definindo a segurança da pasta por endereço IP ou nome de domínio

O Apache usa as diretivas Permitir e Negar para determinar os sites que podem acessar um determinado site ou pasta. No entanto, o Apache fornece controle de access discricionário; você deve negar todos os sites e fornecer uma lista específica de sites ou endereços IP que possam acessar uma pasta ou permitir todos os sites e negar apenas os sites que você não deseja ter access. Por exemplo, se você usar a seguinte diretiva, todos os computadores clientes terão access negado, a menos que sejam reconhecidos como parte do domínio domain.com:

Negar de tudo
Permitir de .domain.com

O IIS funciona da mesma maneira. Todos os clientes são especificamente negados ou recebem access, exceto aqueles listados.

Definir o controle de access para pasta ou site específico

  • Faça logon no computador do servidor da Web como administrador.
  • Clique em Iniciar, aponte para configurações e, em seguida, clique em Painel de controle.
  • Clique duas vezes em Ferramentas administrativas e, em seguida, clique duas vezes em Gerenciador de serviços de Internet.
  • Se você quiser limitar o access de todo o site, selecione o site na lista de diferentes sites exibidos no painel esquerdo.

  • Se você quiser limitar o access apenas a uma pasta específica, clique na pasta que deseja controlar.

  • Clique com o botão direito do mouse no site ou na pasta e clique em Propriedades.
  • Clique no painel Segurança de diretório.
  • Se você quiser limitar o access a um conjunto específico de sites, mas negar access a todos os outros sites, clique em Acesso negado.
  • Se você quiser conceder access a todos os clientes por padrão, mas excluir uma lista específica de clientes, clique em Acesso Concedido.
  • Para atualizar a lista de hosts ou domínios na lista Exceto, clique em Adicionar.
  • Para adicionar um único computador à lista, clique em Único computador, digite o endereço IP na checkbox apropriada e clique em OK.
  • Para adicionar um intervalo de computadores em um intervalo de endereços específico, clique em Grupo de computadores, digite o endereço IP da rede na checkbox apropriada, digite a máscara de sub-rede do intervalo de rede que você deseja configurar e clique em OK.
  • Para adicionar computadores pelo nome de domínio identificado, clique em Nome do domínio e digite o nome do domínio na checkbox apropriada.
  • Clique em Propriedades, digite o nome do domínio e clique em OK.
  • Clique em OK e, em seguida, clique em OK.

OBSERVAÇÃO : Se você usar restrições de nome de domínio, o servidor deverá executar uma pesquisa reversa de DNS para cada solicitação para verificar o nome de domínio registrado do host. A Microsoft recomenda que você use um endereço IP ou intervalo de rede sempre que puder.