gototopgototop
Web Server Security - Joomla e segurança (Artigo 8) PDF Imprimir E-mail

apacheO local menos provável de ser invadido e responsável pelo menor índice de ataque é o servidor web. Ambos os servidores Apache e Microsoft IIS são responsáveis pela hospedagem de literalmente milhões de sites com poucas brechas para invasõess. Embora essa adoção generalizada não possa evitar a possibilidade de um problema de segurança, os servidores são muito bem depurados e protegidos.

É improvável que o Apache seja o vetor de ataque, uma vez que a execução de scripts na web (como o PHP ou PERL), não é tratado pelo servidor da web em si, mas sim um plug-in ou componente. Os motores de execução de script são talvez os mais vulneráveis ao ataque diretamente, um servidor Web Apache em si não corre este perigo.
O Servidor Apache, é extremamente seguro. Uma vez que o Apache é executado na maioria dos HOSTS de hospedagem pelo mundo, tem sido testado e analisado a exaustão. e por conseguinte, se houver necessidade, novas versões são lançadas  com mais recursos relativos a segurança, sem quaisquer alterações à configuração.

No entanto, existem alguns lugares onde você pode adicionar um pouco mais de segurança. O servidor Web Apache é muito seguro por padrão, porém ele pode ficar bem inseguro se for mal configurado. Portanto, certifique-se de ter certeza do que está fazendo e faça uma avaliação cuidadosa antes de editar qualquer uma das configurações padrão.

Com o servidor Apache,  as permissões de arquivo e pasta podem ser armazenadas em um arquivo chamado ( .htaccess ) Permissão de acesso, senha de proteção, bloqueio do PHP, e outras configurações de segurança podem ser especificados no arquivo. Devido à importância deste arquivo o Apache inclui (por padrão) uma configuração para tornar o arquivo inacessível fora do sistema ou através de um navegador.

Arquivos .htaccess O que eles são / como usá-los

Os arquivos .htaccess (ou "arquivos de configuração distribuída") oferecem um meio de fazer mudanças nas configurações por-diretório. Um arquivo, contendo uma ou mais diretrizes de configurações, é colocado em um diretório em particular, e as diretrizes se aplicam para aquele diretório e todos os seu subdiretórios subseqüentes.

Nota:

Se você quiser renomear o seu arquivo .htaccess para outro nome, você deve usar a diretriz AccessFileName. Por exemplo, se você prefere que o arquivo se chame .config, então você pode adicionar a seguinte linha ao seu arquivo de configuração do servidor:

AccessFileName .config

No geral, arquivos .htaccess usam a mesma sintaxe que os arquivos de configuração principal. O que você pode colocar nesses arquivos é determinado pele diretriz AllowOverride. Essa diretriz especifica, em categorias, quais diretrizes serão aceitas caso sejam encontradas em um arquivo .htaccess. Se uma diretriz for permitida em um arquivo .htaccess, a documentação para essa diretriz irá conter uma seção Override, especificando que valor precisa estar em AllowOverride para que esta diretriz seja permitida.

Por exemplo, se você procurar na documentação pela diretriz AddDefaultCharset, você achará que ela é permitida nos arquivos .htaccess. (Veja a linha Contexto no sumário das diretivas.) A linha Override lê FileInfo. Então, você deve ao menos ter AllowOverride FileInfo para que essa diretriz seja aceita nos arquivos .htaccess.

Exemplo:

Contexto: configuração do servidor, hospedeiros virtuais, diretório, .htaccess
Override: FileInfo

Se você estiver incerto se uma diretriz em particular é aceita em um arquivo .htaccess, procure na documentação por essa diretriz, e verifique a linha de Contexto por ".htaccess".

Quando (não) usar arquivos .htaccess

No geral, você nunca deve usar arquivos .htaccess a não ser que você não tenha acesso ao arquivo de configuração principal do servidor. Existe, por exemplo, um erro de concepção que dita que a autenticação de usuários sempre deve ser feita usando os arquivos .htaccess. Esse simplesmente não é o caso. Você pode usar as configurações de autenticação de usuário no arquivo de configuração principal do servidor, e isso é, de fato, a maneira mais adequada de se fazer as coisas.

Arquivos .htaccess devem ser usados em casos onde os provedores de conteúdo do site precisem fazer mudanças na configuração do servidor por-diretório, mas não tem acesso root ao sistema do servidor. Caso o administrador do servidor não esteja disposto a fazer mudanças freqüentes nas configurações do servidor, é desejável permitir que os usuários possam fazer essas mudanças através de arquivos .htaccess eles mesmos. Isso é particularmente verdade, por exemplo, em casos onde provedores estão fornecendo múltiplos sites para usuários em apenas uma máquina, e querem que seus usuários possam alterar suas configurações.

No entanto, de modo geral, o uso de arquivos .htaccess deve ser evitado quando possível. Quaisquer configurações que você considerar acrescentar em um arquivo .htaccess, podem ser efetivamente colocadas em uma seção <Directory> no arquivo principal de configuração de seu servidor.

Existem duas razões principais para evitar o uso de arquivos .htaccess.

A primeira delas é a performance. Quando AllowOverride é configurado para permitir o uso de arquivos .htaccess, o Apache procura em todos diretórios por arquivos .htaccess. Logo, permitir arquivos .htaccess causa um impacto na performance, mesmo sem você usá-los de fato! Além disso, o arquivo .htaccess é carregado toda vez que um documento é requerido.

Além disso, note que o Apache precisa procurar pelos arquivos .htaccess em todos os diretórios superiores, para ter o complemento total de todas as diretivas que devem ser aplicadas. (Veja a seção como as diretrizes são aplicadas.) Então, se um arquivo de um diretório /www/htdocs/example é requerido, o Apache precisa procurar pelos seguintes arquivos:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Assim, para cada acesso de arquivo fora desse diretório, existem 4 acessos ao sistema de arquivos adicionais, mesmo que nenhum desses arquivos estejam presentes. (Note que esse só será o caso se os arquivos .htaccess estiverem habilitados para /, o que normalmente não é o verdade.)

A segunda consideração é relativa à segurança. Você está permitindo que os usuários modifiquem as configurações do servidor, o que pode resultar em mudanças que podem fugir ao seu controle. Considere com cuidado se você quer ou não dar aos seus usuários esses privilégios. Note também que dar aos usuários menos privilégios que eles precisam, acarreta em pedidos de suporte técnico adicionais. Tenha certeza que você comunicou aos usuários que nível de privilégios você os deu. Especificar exatamente o que você configurou na diretriz AllowOverride, e direcioná-los para a documentação relevante, irá poupá-lo de muita confusão depois.

Perceba que é exatamente equivalente colocar o arquivo .htaccess em um diretório /www/htdocs/example contendo uma diretriz, e adicionar a mesma diretriz em uma seção Directory <Directory /www/htdocs/example> na configuração principal do seu servidor:

Arquivo .htaccess em /www/htdocs/example:

Conteúdo de um arquivo .htaccess em /www/htdocs/example

AddType text/example .exm

Seção do seu arquivo httpd.conf

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

No entanto, adicionando isso ao seu arquivo de configuração do servidor resultará em uma menor perda de performance, na medida que a configuração é carregada no momento da inicialização do servidor, ao invés de toda que que um arquivo é requerido.

O uso de arquivos .htaccess pode ser totalmente desabilitado, ajustando a diretriz AllowOverride para none:

AllowOverride None

Como as diretrizes são aplicadas

As diretrizes de configuração que se encontram em um arquivo .htaccess são aplicadas para o diretório no qual o arquivo .htaccess se encontra, e para todos os subdiretórios ali presentes. Mas, é importante lembrar também que podem existir arquivos .htaccess no diretórios superiores. As diretrizes são aplicadas na ordem que são achadas. Logo, um arquivo .htaccess em um diretório em particular, pode sobrescrever as diretrizes encontradas em um diretório acima deste em sua respectiva árvore. Estes, por sua vez, podem ter suas diretrizes sobrescritas por diretrizes ainda mais acima, ou no próprio arquivo de configuração principal do servidor.

Exemplo:

No diretório /www/htdocs/example1 nós temos um arquivo .htaccess contendo o seguinte:

Options +ExecCGI

(Nota: você deve ter "AllowOverride Options" para permitir o uso da diretriz "Options" nos arquivos .htaccess .)

No diretório /www/htdocs/example1/example2 nós temos um arquivo .htaccess contendo:

Options Includes

Devido a esse segundo arquivo .htaccess, no diretório /www/htdocs/example1/example2, a execução de scripts CGI não é permitida, pois somente Options Includes está em efeito, o que sobrescreve completamente quaisquer outros ajustes previamente configurados.

Exemplo de Autenticação

Se você veio diretamente à esta parte do documento para aprender como fazer autenticação, é importante notar uma coisa. Existe uma concepção errada, mas muito comum, de que é necessário o uso de arquivos .htaccess para implementar a autenticação por senha. Este não é o caso. Colocar diretrizes de senha em uma seção <Directory>, no seu arquivo principal de configuração do servidor, é a melhor maneira de se implementar isto, e os arquivos .htaccess devem ser usados apenas se você não tem acesso ao arquivo principal de configuração do servidor. Veja acima a discussão sobre quando você deve e quando não deve usar os arquivos .htaccess.

Dito isso, se você ainda acredita que precisa usar um arquivo .htaccess, a configuração a seguir provavelmente funcionará para você.

Conteúdo de um arquivo .htaccess:

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

Note que AllowOverride AuthConfig precisa estar habilitado para que estas diretrizes tenham efeito.

Por favor veja o tutorial de autenticação para uma discussão mais completa sobre autenticação e autorização.

Exemplo de Server Side Includes

Outro uso comum de arquivos .htaccess é ativar o Server Side Includes para um diretório em particular. Isto pode ser feito com as seguintes diretrizes de configuração, colocadas em um arquivo .htaccess no diretório desejado:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

Note que ambos AllowOverride Options e AllowOverride FileInfo precisam estar habilitados para essas diretrizes terem efeito.

Por favor veja o tutorial de SSI para uma discussão mais completa sobre server-side includes.

Exemplo de CGI

Finalmente, você pode querer que um arquivo .htaccess permita a execução de programas CGI em um diretório em particular. Isto pode ser implementado com as seguintes configurações:

Options +ExecCGI
AddHandler cgi-script cgi pl

Alternativamente, se você desejar que todos os arquivos de um dado diretório, sejam considerados programas CGI, isso pode ser feito com a seguinte configuração:

Options +ExecCGI
SetHandler cgi-script

Note que ambos AllowOverride Options e AllowOverride FileInfo precisam estar habilitados para que essas diretrizes tenham quaisquer efeito.

Por favor veja o tutorial de CGI tutorial para uma discussão mais completa sobre programação e configuração CGI.

Resolvendo Problemas

Quando você adiciona diretrizes de configuração em um arquivo .htaccess, e não obtém o efeito desejado, existe uma série de pontos que podem estar errados.

Mais comumente, o problema é que a diretriz AllowOverride não está habilitada corretamente para que as suas diretrizes de configurações sejam honradas. Verifique se você não possui AllowOverride None ajustado para o escopo do arquivo em questão. Um bom meio de testar isso é colocar "lixo" em seu arquivo .htaccess e recarregá-lo. Se não for gerado nenhum erro do servidor, certamente você tem AllowOverride None habilitado.

Se, por outro lado, você está obtendo erros do servidor ao tentar acessar documentos, verifique o registro de erros do Apache. Ele provavelmente irá indicar que a diretriz usada em seu arquivo .htaccess não é permitida. Alternativamente, ele pode acusar erros de sintaxe que você terá que corrigir.

fonte: Apache

No Windows, a interface do explorer não irá permitir que você renomeie um arquivo para uma extensão vazia . Por exemplo : .algumacoisa ( o . antes do noem do arquivo indica que ele é oculto e somente irá funcionar em sistemas operacionais baseados no UNIX, que é o caso do GNU/LINUX.  Por isso que o .htaccess  não funciona no windows pois a extensão não existe para o sistema. Você pode adicionar uma diretiva para o arquivo de configuração do Apache, para obter acesso a um arquivo com nome diferente ou você pode abrir a janela do prompt de comando e use o comando REN.

O método mais provável de um hacker invadir seu website será obtendo informações sobre seu sistema. Pode parecer óbvio mas fornecer informações para um hacker não é uma boa idéia, mas infelizmente é isso que ocorre e você acaba fornecendo informações adicionais, tais como o número da versão do Apache, sistema operacional, e assim por diante, sem saber. Grande parte desta informação é fornecida pelo "ServerSignature" sempre que o servidor gera uma página (tal como um servidor de mensagem de erro).

Adicionando a seguinte diretiva para o arquivo de configuração do apache você desativará a assinatura de saída:

ServerSignature Off

Muitas das informações fornecidas pela assinatura também são devolvidas com todas as páginas solicitadas. A diretiva ServerTokens permite que você defina a quantidade de informações que o servidor irá fornecer com a solicitação da página. Existem seis configurações disponíveis para esta diretiva. Em ordem decrescente, estes incluem Full, OS, Minimal, Minor, Major, e Prod.

Você deve adicionar uma diretiva que visa fornecer informações a menos, assim:

ServerTokens Prod

Um importante recurso de segurança incluído no Apache é a capacidade de negar o acesso a determinados tipos de arquivos a partir de um navegador web. Ao usar esse recurso, você pode negar o acesso a quaisquer tipos de arquivos que não têm razão de ser abordada por um navegador (como o .Log).

Seu arquivo de configuração padrão do Apache deve conter uma entrada para negar acesso ao arquivo .htaccess através de um navegador.

Examinando o arquivo de configuração, você deve ver um código como este:

<FilesMatch "^\.ht">
order allow, deny
Deny from all
</FilesMatch>

Este código indica ao Apache para negar acesso do navegador a todos os arquivos .htaccess (e arquivos .htpasswd, também). Para negar o acesso aos arquivos de log, você pode copiar a seção anterior e, em seguida, modificar a declaração FilesMatchs como esta:

<FilesMatch ~ "\.log$">

Para negar o acesso do browser para um diretório específico, você precisará usar o elemento de Diretório como este:

<Directory ~ "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/libraries" >
Order allow, deny
Deny from all
</Directory>


Quando um navegador tenta acessar arquivos no diretório \libraries ou qualquer diretório no seu interior (existente ou não), uma página de erro 403 Forbiden será devolvida.

Até o próximo artigo.
Artigo traduzido e adaptado por Júlio Coutinho. O original, está publicado no capítulo 14 do livro Professional Joomla - Programador para Programador, de Dan Rahmel.
  divulgue o artigo no orkut
Voltar

Your are currently browsing this site with Internet Explorer 6 (IE6).

Your current web browser must be updated to version 7 of Internet Explorer (IE7) to take advantage of all of template's capabilities.

Why should I upgrade to Internet Explorer 7? Microsoft has redesigned Internet Explorer from the ground up, with better security, new capabilities, and a whole new interface. Many changes resulted from the feedback of millions of users who tested prerelease versions of the new browser. The most compelling reason to upgrade is the improved security. The Internet of today is not the Internet of five years ago. There are dangers that simply didn't exist back in 2001, when Internet Explorer 6 was released to the world. Internet Explorer 7 makes surfing the web fundamentally safer by offering greater protection against viruses, spyware, and other online risks.

Get free downloads for Internet Explorer 7, including recommended updates as they become available. To download Internet Explorer 7 in the language of your choice, please visit the Internet Explorer 7 worldwide page.