Configurando asp.net 1.1 de forma segura no IIS

Por padrão, o asp.net 1.1 não está bem configurado para servidores compartilhados. Um usuário que está rodando uma aplicação em .net na configuração padrão terá acesso a partes sensíveis do sistema, o que representa um problema para a segurança.

Abaixo, vou descrever como forçar o ASP.NET 1.1 a executar com a conta anonima do IIS e reduzir assim os privilégios das aplicações em ASP.NET.

Para incrementar a segurança, é recomendado executar sites em asp.net em aplication pools isoladas no IIS. Assim os códigos executados em asp.net poderão afetar apenas o contexto da aplicação (ou das permissões que envolvem o usuário da aplicação.

Para incrementar a segurança, nosso primeiro passo deverá ser forçar as aplicações a serem executadas com o usuário anonimo do IIS. Para fazer isto, vamos editar o arquivo machine.config, localizado na pasta:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG

Abra o arquivo no notepad e procure pela palavra impersonate. Ela estará no padrão abaixo:

<!–
identity Attributes:
impersonate=”[true|false]” – Impersonate Windows User
userName=”Windows user account to impersonate” | empty string implies impersonate the LOGON user specified by IIS
password=”password of above specified account” | empty string
–>
<identity impersonate=”false” userName=”” password=””/>

troque a linha em negrito acima por todo este bloco de textos abaixo:

</system.web>
<location allowOverride=”false”>
<system.web>
<identity impersonate=”true” userName=”” password=””/>
</system.web>
</location>
<system.web>

O que estamos fazendo é setando a propriedade impersonate para true, e além disto colocando uma tag location, que informa que não será possível ao usuário alterar o valor do impersonate (algo que por padrão é possível no arquivo web.config).

Feito isto, os scripts asp.net irão ser executados pelo usuário anonimo marcado no IIS.

Não terminamos. A instalação padrão do asp.net permite executar os arquivos em Full trust mode. Isto quer dizer que qualquer assemblies chamado ou desenvolvido pelo usuário terá acesso irrestrito ao sistema (o que nós não queremos de jeito nenhum).

Procure no topo do arquivo machine.config pelo código abaixo:

<location allowOverride=”true”>
<system.web>
<securityPolicy>
<trustLevel name=”Full” policyFile=”internal” />
<trustLevel name=”High” policyFile=”web_hightrust.config” />
<trustLevel name=”Medium” policyFile=”web_mediumtrust.config” />
<trustLevel name=”Low” policyFile=”web_lowtrust.config” />
<trustLevel name=”Minimal” policyFile=”web_minimaltrust.config” />
</securityPolicy> <!– level=”[Full|High|Medium|Low|Minimal]” –>
<trust level=”Full” originUrl=”” />
</system.web>
</location>

Como você pode ver, ASP.NET está marcado por padrão para executar em Full trust mode. Precisamos alterar isto.

Em hosting compartilhados, o ideal é alterar para o medium trust, que permite uma certa flexibidade sem comprometer a segurança do sistema.

<location allowOverride=”false”>
<system.web>
<securityPolicy>
<trustLevel name=”Full” policyFile=”internal” />
<trustLevel name=”High” policyFile=”web_hightrust.config” />
<trustLevel name=”Medium” policyFile=”web_mediumtrust.config” />
<trustLevel name=”Low” policyFile=”web_lowtrust.config” />
<trustLevel name=”Minimal” policyFile=”web_minimaltrust.config” />
</securityPolicy> <!– level=”[Full|High|Medium|Low|Minimal]” –>
<trust level=”Medium” originUrl=”.*” />
</system.web>
</location>

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: