Pergunta

O que você recomenda para configurar um servidor compartilhado com php de um ponto de vista da segurança / desempenho?

  • Apache mod_php (como você garantir que? Que não safe_mode como ele não vai estar em PHP6)
  • Apache CGI + suexec
  • Lighttpd e desovar um FastCGI por usuário

LE: Eu não estou interessado em usar um painel de controle já feito como eu estou tentando escrever meu próprio, então eu quero saber qual é a melhor maneira de configurar isso mesmo. Eu estava pensando em usar Lighttpd e gerar um fastcgi para cada usuário hospedado tornando o processo fcgi prazo sob as suas credenciais (há um tutorial para isso em lighttpd wiki). Este seria um pouco seguro, mas isso afetaria desempenho (muitos usuários / memória necessária para cada fcgi) tanto que não é uma solução viável?

Foi útil?

Solução

Pessoalmente, enquanto Lighttpd é OK, eu iria com Nginx + FastCGI se você acabar indo com um servidor web + FastCGI solução leve. Já corri benchmarks e ler todo o código, e Nginx é uma ordem de magnitude mais rápido / mais estável sob carga. - É muito bom

Mas, isso não é o que você pediu. Essencialmente, eu diria que há um espectro de segurança / escalabilidade compensações velocidade vs. nas três opções que você lista, e você só precisa decidir onde você quer estar. Se você é um provedor de hospedagem compartilhada com os usuários não confiáveis ??a instalação de Deus-sabe-o PHP aplicativos que você mais magra para a segurança, se este é compartilhado entre os usuários mais confiáveis ??que você pode inclinar-se para o desempenho. Aqui estão meus pensamentos:

CGI + suexec: Esta é de longe o / escalável mais seguro e mais eficiente para você em termos de número de usuários / sites em um ambiente de hospedagem compartilhada. Processos são gerados e memória usado apenas como pedidos de entrar. É claro que o CGI-desova torna este o mais lento para o tempo de execução de scripts individuais. Quanto mais lento? Bem, você teria de referência, mas geralmente se as pessoas estão executando aplicações de longa execução (ou seja, algo como WordPress que leva 0,25-0,5 segundos apenas para carregar seus libs e inicializar em cada pedido), então os começos da penalidade que desova CGI para ficar bonita insignificante no contexto.

FastCGI: A questão aqui (e não importa se o seu servidor web é o Apache, Lighttpd ou Nginx) é descobrir quantas FCGI processos criança que você deixar que cada licença de usuário em execução, porque cada processo come memória igual ao tamanho do intérprete PHP (em Linux nem tudo está ligado, é claro, mas eu discordo). E, ao contrário mod_php, estes processos não são compartilhados entre usuários então você tem que limite por usuário. Por exemplo, Dreamhost tampas esta a 3 para os seus clientes - agora, para um cliente executando um site que recebe rajadas de mais de 2-5 page views por segundo, que é realmente muito ruim, porque esses pedidos apenas empilhar e os trava do local. Agora, eu como FastCGI com um servidor web leve quando estou rodando aplicativos em um dedicada servidor / cluster, quando eu posso dar as centenas de aplicativos de crianças fcgi (todos com privs webserver naturalmente, um la Apache / prefork + mod_php). Mas, eu não acho que faz sentido para hospedagem compartilhada, onde você tem que alocar / CAP as crianças fcgi por usuário.

Apache + mod_php: Pelo menos seguro, pois tudo funcionando com privs servidor web, mas sua piscina de processos PHP ao vivo é compartilhada por isso é melhor no fim de performance. A partir de uma perspectiva do desenvolvedor, não posso tolerar modo php_safe, e de uma perspectiva sysadmin é realmente apenas uma ilusão de segurança (mitiga contra usuários estúpidos mas não protege de um ataque real) então eu realmente prefiro ter CGI se minha outra opção tem que incluir safe_mode.

Dreamhost faz uma espécie de híbrido, eles fazem Apache CGI + suexec por padrão, mas mantém o percentual (pequeno) de seus mais usuários que são eleitos sofisticado para fazer FCGI se quiserem, sujeitas a um teto e sua própria monitoramento de uso de memória. Isso economiza uma tonelada de recursos de memória contra permitindo FCGI para todos por padrão.

Outra questão se você está falando de hospedagem compartilhada comercial padrão é, Apache é completo, possui módulos para praticamente qualquer coisa (incluindo coisas como mod_security você pode querer), e seus usuários vão gostar, porque todo o seu .htaccess configs funcionará etc -. você vai correr em dores de cabeça de apoio com qualquer outra coisa quando eles vão para instalar o Drupal ou WordPress ou qualquer outra coisa (muito menos de um problema se estamos falando de usuários internos)

Pessoalmente eu recomendaria apenas mantendo-o simples para começar e ir com CGI + suexec para melhor segurança e escalabilidade. Se os usuários querem FCGI ou mod_php e você tem um canal de boa aberta para sugestões / comunicação com eles, eles vão pedir para ele, mas qualquer um destes são uma muito maiordor de cabeça para você com apenas melhorias marginais desempenho para eles, por isso a minha sugestão seria não fazer qualquer um deles inicialmente, mas ser sensível se eles clamam por ele.

Eu simpatizo com o desejo de fazer algo "interessante" como Lighttpd + FCGI em vez do padrão Apache + CGI + suexec, mas no fundo eu realmente não posso recomendar-lo.

Se você estiver executando vários servidores, você pode acabar colocando CGI em alguns e mais alguma coisa para os usuários de poder sobre os outros. E não deixe de ter cron grep todos os diretórios www para coisas como versões old-ass de phpBB!

Outras dicas

Eu recomendo Suhosin

Com relação ao PHP + FastCGI e segurança, verificação este post .

O desafio com garantia de um compartilhada servidor de hospedagem é a forma de garantir a website do ataque tanto do do lado de fora e a partir do interior. PHP tem built-in recursos para ajudar, mas em última análise, é o lugar errado para resolver o problema.

Eu já escrevi sobre uma série de soluções que trabalho, mas uma opção Fui convidado e outra vez para olhar é usando PHP + FastCGI. o crença é que usando FastCGI será superar os problemas de desempenho mod_suphp suexec ou do Apache, porque processos FastCGI persistem entre página pontos de vista.

Mas, antes de olhar para o desempenho, a primeira pergunta é: como exatamente fazer obtemos PHP e FastCGI executando como diferentes usuários no servidor de um web em primeiro lugar?

Eu tenho usado InterWorx por cerca de um ano e foram muito impressionado. Ele mantém um servidor LAMP com chroots seus scripts de segurança.

Eu usei também Ensim , mas não achei tão amigável, rápido e ele doesn' t tem tantos recursos. Além disso, ele custa muito mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top