[FUGSPBR] PHP + Segurança
Ronan Lucio
ronanl em melim.com.br
Seg Abr 7 10:04:46 BRT 2003
Luiz,
Muito obrigado pela ajuda, me ajudou bastante.
Um abraço,
Ronan
On Sat, 05 Apr 2003 21:59:26 -0300
"Luiz Rodrigues Maia Neto" <maianeto em inf.ufsc.br> wrote:
> Ronan,
>
> A permissao padrao do /etc somente permite a escrita do usario root
> e/ou do grupo wheel. Alterar suas permissoes de acordo com sua
> sugestao equivale a montar esta particao, para os demais usuarios,
> como "read-only" (ro), acredito eu. Isto significa que, por exemplo,
> nenhum usuario podera obter os dados armazenados na base de dados de
> usuarios, shell e home, por exemplo. Quaisquer outras informacoes,
> como descobrir quem eh o resolver do DNS neste servidor nao podera
> ser obtido por seus usuarios. Nao tenho certeza se um usuario comum
> conseguiria trocar de senha. Acho que esta eh uma opcao valida (a
> utilizo frequentemente) para obter maior confiabilidade em servidores
> cuja base de usuarios e configuracoes raramente sao alteradas.
> Montando a particao raiz (/) como read-only obtemos um filesystem
> imune (virtualmente) a problemas logicos. Se este fosse um servidor
> cuja base de usuarios nao sofre-se alteracoes, acredito que esta
> seria uma opcao razoavel. Como, acredito eu, sua expectativa eh que
> sua base de clientes aumente a ponto de voce necessitar, rapidamente,
> de um segundo servidor, um terceiro... :)
> Todavia, nao garante limites e/ou retricoes aos scripts que forem
> executados no servidor Apache.
>
> Supondo que voce esta utilizando o Apache, hospedando dominios
> atraves de VirtualHosts, com PHP instalado na forma de um modulo, uma
> opcao eh determinar os parametros de ambiente que podem e/ou devem
> ser impostos aos seus usuarios. Pode experimentar estas opcoes para
> impor certas restricoes a seus usuarios.
>
> <IfModule mod_php4.c>
> php_value include_path ".:/usr/local/lib/php"
> php_admin_flag safe_mode on
> </IfModule>
> <IfModule mod_php3.c>
> php3_include_path ".:/usr/local/lib/php"
> php3_safe_mode on
> </IfModule>
>
> Tambem nao eh aconselhado que o seu php.ini habilite a execucao de
> extensoes ext/posix em um ambiente onde seguranca eh um dos
> objetivos. Estas restricoes podem ser complementadas por uma classe
> especifica de login, ajustada para, entre outros aspectos,
> estabelecer o valor da variavel coredumpsize como zero. Uma serie de
> tecnicas de acesso nao autorizado podem ser consideravelmente
> prejudicadas atraves deste artificio.
>
> Tambem eh possivel adicionar a sua configuracao de VirtualHost uma
> diretiva do tipo open_basedir, estabelecendo que cada script PHP seja
> executado em um ambiente chroot que toma por base a localizacao
> indicada na variavel DocumentRoot.
>
> <VirtualHost www.exemplo.com.br>
> ServerName www.exemplo.com.br
> DocumentRoot /www/exemplo
> [...]
> <Location />
> php_admin_value open_basedir \ "/www-
> home/exemple.com/:/usr/lib/php/"
> </Location>
> </VirtualHost>
>
> Esta configuracao, somada a variavel "safe_mode on", restringe a
> utilizacao de binarios aos diretorios indicados. De outra forma o PHP
> pode ser configurado para cada VirtualHost indicando diretorios
> especificos (php_admin_value open_basedir "/home/username/"),
> restringindo o acesso de cada usuario a apenas a seus arquivos.
> executando o Apache como o usuario www, por exemplo, e tornando este
> usuario membro de todos os grupos definidos para cada VirtualHost,
> nenhum diretorio necessita de premissoes de leitura amplas. Desta
> forma usuarios nao podem ler scripts php atraves de scripts cgi ou
> atraves de um acesso shell. Lembre-se que a intrucao safe_mode on
> inibe certas funcionalidades do PHP, ocasionando erros quando
> instrucoes PHP como backticks (``), system(), exec(), passthru() sao
> utilizadas..
>
> Outro jogo de bola completamente diferente eh observado quando
> utilizamos o PHP para executar CGIs no servidor Apache. Uma opcao
> para este modelo de execucao eh compilar o Apache com suporte a opcao
> SuExec. Desta forma eh possivel determinar o usuario que executa os
> scripts e a hierarquia de diretoios onde estes estao armazenados e os
> diretorios acessiveis aos scripts, previnindo acessos nao autorizados
> a areas restritas. Outro caminho possivel eh impor o redirecionamento
> de CGIs no Apache. As diretivas abaixo podem realizar esta operacao:
>
> Action php-script /cgi-bin/php.cgi
> AddHandler php-script .php
>
> Esta opcao indica ao seu servidor que, ao receber uma requisicao como
> a URL abaixo:
>
> http;//exemplo.com.br/minhapagina/teste.html
>
> a reescreva na forma abaixo:
>
> http://exemplo.com.br/cgi-bin/php/minhapagina/teste.html
>
> Para que esta operacao seja possivel compile seu binario PHP com a
> opcao "--enable-force-cgi-redirect" e estabeleca valores aprorpiados
> para a as variaveis doc_root euser_dir no arquivo php.ini.
>
> Tambem eh possivel determinar o montante de recursos que podem ser
> utilizados por cada VirtualHost, dificultando a execucao de
> determinados tipos de exploits, atraves das instrucoes abaixo,
> ajustando a carga que um VirtualHost pode "empurrar" para o servidor
> Apache.
>
> LimitRequestBody 4096
> RLimitCPU 5 15
> RLimitMEM 8192 16384
> RLimitNPROC 10 15
>
> Lembre-se tambem que estes scripts sao ativos, mas estao restritos a
> arvore determinada pela diretiva DocumentRoot do Apache. A inclusao
> da opcao "SymLinksIfOwnerMatch" determina que links simbolicos
> somente serao seguidos se existir correspondencia entre os "donos" da
> origem e do destino. A nao inclusao da opcao Indexes inibe a
> capacidade de obter uma lista dos arquivos de um diretorio que nao
> apresente um arquivo index valido.
>
> Recomendo o livro Professional Apache Security. Emprestei-o semana
> passada a um amigo e nao me recordo de todas as opcoes indicadas
> pelos autores. Outra opcao eh o livro Apache Administrator's
> Handbook. Entretanto, todas as opcoes mencionadas e inumeras outras
> estao documentadas na Internet. Uma busca no Google deve retornar a
> documentacao necessaria para uma investigacao mais acurada. Aqui, no
> RExLab, adotamos estas restricoes na execucao do PHP sem grandes
> transtornos, apenas uma pequena adequacao dos desenvolvedores eh
> necessaria, indicando claramente as restricoes em vigor.
>
> []'s
>
> Luiz Maia
>
>
> Windows: "Where do you want to go tomorrow?"
> Linux: "Where do you want to go today?"
> FreeBSD: "Are you, guys, comming or what?"
>
>
>
_______________________________________________________________
Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd