0

Tornando seu Servidor Web Mais Seguro

criado por Rogério Bourscheidt Kunkel em 25/02/2006 5:55pm
Inclusões no lado servidor (SSI)

As inclusões no lado do servidor podem ser configuradas de modo a permitir que os usuários executem programas arbitrariamente. Como você tem pouco controle sobre os programas que eles executam, talvez queira desativar esse recurso. Desativar completamente o SSI provavelmente não é necessário.

O Apache tem a aopção IncludesNOEXEC para permitir SSI, mas impeça os usuários de iniciar programas (ou CGIs) a partir deles. Desativar a execução de programas a partir de um SSI pode não ser possível em sus situação. A configuração padrão do Apache faz uso de SSI desativado.

Permitindo a execução de CGI apenas a partir de certos diretórios

É uma boa idéia desativar a execução de scripts CGI em diretórios que não sejam cgi ou cgi-bin do servidor Web. Você pode fazer isso incluindo uma linha ScriptAlias em httpd.conf, para cada diretório onde a execução de scripts CGI deve ser permitida e certificando-se de que o manipulador de scripts CGI seja deixado como comentário ou completamente removido.

O primeiro parâmetro de ScriptAlias especifica como os scripts CGI se tornarão disponíveis através da Web, enquanto o segundo parâmetro especifica onde os scripts estão localizados no servidor. Você deve incluir um Directory para cada diretório de alias. Dentre outras coisas, isso garante que ninguém possa obter uma lista de todos os scripts CGI de seu servidor. Além disso, note que a diretiva AddHandler foi deixada como comentário.

A segunda diretiva Directory permite aos usuários criar seus próprios scripts CGI. Isso poderia ser feito de forma mais elegante, através de uma diretiva ScriptAliasMatch, mas assim é um pouco mais fácil de usar. Note que a opção ExecCGI é usada. Isso não é necessário, se um ScriptAlias for usado.

Permitir que os usuários criem seus próprios scripts CGI é inerentemente um risco de segurança; portanto, talvez você não queira permitir que seus usuários criem seus próprios scripts CGI.

A configuração padrão do Apache tem o manipulador cgi-script deixado como comentário e possui diretivas ScriptAlias e Directory para /cgi-bin/. Note que você pode desativar a execução de CGI, enquanto ainda permite que as pessoas usem scripts PHP.

Colocar o analisador PHP fora da árvore da Web é algo muito importante a fazer. Isso torna muito difícil abusar do analisador PHP em seu servidor Web. Especificamente, você não quer o analisador PHP no diretório cgi-bin ou em qualquer outro diretório que permita a execução de programas CGI. Entretanto, se você estiver usando uma diretiva Action para analisar seu script, então isso não será possível. Para a diretiva Action funcionar, o analisador PHP deve sr colocado em um diretório que permita execução de CGI. Colocar o analisador PHP fora da árvore da Web só funciona quando de usa PHP como programas CGI.

Se você quiser usar scripts PHP como programas CGI (e poder colocar o analisador PHP fora da árvore da Web), então precisa especificar algumas coisas:

1- Todos os scripts PHP devem residir em um diretório que permite execução de CGI.
2- Os scripts devem estar marcados como executáveis (apenas em máquinas UNIX).
3- O script deve conter uma linha especial no início, com o caminho do analisador PHP.

Você pode tornar seus scripts PHP executáveis com o seguinte comando:

chmod +x test.php

Isso marca o script chamado test.php, no diretório corrente, como sendo executável. Isso é necessário apenas para servidores Web que estejam executando uma variante UNIX.

A seguir está um pequeno exemplo de um script PHP que pode ser executado como um programa CGI.

<?php
#!/usr/local/bin/php
echo "Este é um pequeno programa CGI.";
?>

A primeira linha contém o nome e a localização do programa (neste caso, PHP) que deve ser usado para executar esse script. No exemplo, o analisador PHP está localizado no diretório /usr/local/bin.

Rogério Bourscheidt Kunkel

Comentários:

Mostrando 1 - 2 de 2 comentários
Me ajudou bastante em conhecimento!
13/05/2006 2:12pm (~12 anos atrás)

Cara, parabéns viu!!!
Gostei muito do seu artigo, ótimo pra quem tá querendo começar a deixar o seu servidor mais seguro...
14/03/2006 5:28am (~12 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)