Como um administrador de sistemas paranóico pode manter-se atualizado com segurança com as últimas versões estáveis do PHP? (as correções de segurança são recebidas regularmente).
Este é um servidor de produção e, portanto, "quebrar coisas" está assustando meu rapaz até a morte. O tempo de inatividade para manutenção não é o problema.
Especificamente, estamos executando um Suse Enterprise Linux recente, mas uma resposta genérica ou mais geral é perfeitamente aceitável.
Como você lida com atualizações de segurança nas máquinas de produção? Do que somos tão ignorantes quanto a esse cara ter tanto medo de usar o gerenciador de pacotes para "atualizar"?
Algum conselho?
Respostas:
Lido com o PHP da mesma maneira que lida com todo o resto: atualize o ambiente de desenvolvimento (um clone de produção VMWare) primeiro, teste a regressão rapidamente e depois promova-o para produção usando os mesmos modelos de implantação que usamos para os hosts VMWare. (Se você estiver usando gerenciadores de pacotes para fazer suas atualizações, usaria os mesmos pacotes).
Como uma camada extra de isolamento, nosso ambiente de produção é composto por hosts redundantes emparelhados, e um host é retirado da rotação de produção para sua atualização e testado exaustivamente antes de passarmos para esse host para atualizar seu parceiro.
Como regra geral, as atualizações de segurança são aplicadas o mais rápido possível, e as atualizações de correções não relacionadas à segurança / não críticas são aplicadas trimestralmente para minimizar o tempo de inatividade.
fonte
O PHP está na minha lista principal de itens a serem atualizados para a versão atual. Confio menos do que na maioria das coisas.
Por fim, sua melhor aposta é revisar todos os registros de alterações da sua versão atual para os mais recentes e ponderar tangivelmente o risco.
Se você está falando em atualizar versões menores, como 5.3.1 a 5.3.2, não me preocuparia muito.
Se você estiver atualizando do 5.2.x para o 5.3.x, é provável que introduza alguns problemas de compatibilidade.
Se você estiver usando pacotes do sistema, normalmente as distribuições não apresentarão atualizações que afetarão o desempenho existente. O RHEL e o CentOS corrigem versões antigas para correções até que um grande lançamento de distribuição seja lançado. Faça o teste para você, normalmente, o que reduz o risco. Eu esperaria que a empresa SuSE fosse semelhante.
Para caminhos de atualização, a melhor aposta seria construir um servidor de teste e testar o aplicativo com a versão mais recente antes de atualizar a produção.
fonte
Outra resposta menos apreciada é criar uma lista de permissões de URLs e recursos permitidos. No Apache, você pode fazer isso combinando os recursos de proxy e reescrita.
Basicamente, você faz duas instalações, uma que possui uma configuração simplificada: proxy, reescrita e nenhuma execução de código; etc. Qualquer URL "permitido" (com parâmetros, etc) é transferido por proxy para a segunda instalação.
Em seguida, adicione-se à lista de desenvolvedores do PHP e monitore as notas de versão com cuidado. Sempre que vir algo que parece ser uma vulnerabilidade de segurança, você constrói um calço na primeira instalação para detectar esse tipo de falha e envia um erro ao usuário.
Em uma configuração como essa, você desejará redirecionar o POST para um filtro (se você precisar do POST; alguns sites se saem muito bem ao permitir o POST apenas a partir de alguns endereços IP!) Que podem procurar fontes permitidas e pré- valide tudo.
Essa lista de permissões leva muito tempo para ser configurada, mas para aplicativos de missão crítica que precisam ser executados por mais tempo do que a vida útil estável do PHP (que parece levar apenas alguns anos), essa pode ser uma excelente maneira de aproveitar o grande número de PHP aplicativos sem obter suas vulnerabilidades também.
fonte
Além do acima, você pode ativar a reversão de pacotes apenas por precaução.
Então, se algo interromper a produção, que você tinha certeza absoluta de que estava funcionando bem no desenvolvimento , você pode pelo menos desfazer a alteração rapidamente antes de solucionar o problema.
Veja Rollback YUM package para um exemplo em Yum. Estou certo de que outros sistemas de gerenciamento de pacotes têm similar.
Eu sei que é cinto e aparelho e concordo com a Warner com lançamentos pontuais. Pequenas alterações não devem quebrar nada. Pessoalmente, não tive problemas nas atualizações do PHP, mas é sempre melhor prevenir do que remediar.
fonte