Paranoid Sysadmin -vs- Version PHP obsolète

8

Comment un administrateur système paranoïaque peut-il rester en toute confiance à jour avec les dernières versions PHP stables? (des correctifs de sécurité sont arrivés assez régulièrement).

Il s'agit d'un serveur de production, et donc "casser des trucs" fait peur à mon gars. Le temps d'arrêt pour la maintenance n'est pas le problème.

Plus précisément, nous exécutons un Suse Enterprise Linux récent, mais une réponse générique ou plus générale est parfaitement acceptable.

Comment gérez-vous les mises à jour de sécurité des machines de production? De quoi sommes-nous si ignorants que ce type a si peur d'utiliser le gestionnaire de paquets pour "mettre à jour"?

Aucun conseil?

lâche anonyme
la source
2
être paranoïaque à propos de TOUT patch php, gtk + wrapper, mise à jour du pilote Windows, etc. est une bonne chose à mon humble avis - c'est plus que juste PHP c'est une philosophie générale de patch voir serverfault.com/questions/104665/… pour une bonne discussion sur le patch en général .
Zypher
@Zypher Merci pour le lien. La situation ici n'est pas idéale, mais nous y travaillons. Preuve claire que les choses doivent se dépêcher et y arriver. =)
lâche anonyme

Réponses:

6

Je gère PHP de la même manière que je gère tout le reste: mettez à niveau l'environnement de développement (un clone de production VMWare) d'abord, testez la régression, puis promouvez-le en production en utilisant les mêmes modèles de déploiement que nous avons utilisés pour les hôtes VMWare. (Si vous utilisez des gestionnaires de packages pour effectuer vos mises à niveau, vous utiliseriez les mêmes packages).

En tant que couche d'isolation supplémentaire, notre environnement de production est composé d'hôtes redondants couplés, et un hôte est retiré de la rotation de production pour sa mise à niveau, puis testé minutieusement avant de passer à cet hôte pour mettre à niveau son partenaire.

En règle générale, les mises à jour de sécurité sont appliquées dès que possible et les mises à jour de correctifs de bogues non sécuritaires / non critiques sont appliquées tous les trimestres pour minimiser les temps d'arrêt.

voretaq7
la source
C'est super d'avoir la redondance. Nous passons beaucoup de choses au virtuel, ce qui rendra cela beaucoup plus facile. Je m'assurais juste que mes hypothèses n'étaient pas folles. =) Merci pour votre réponse.
lâche anonyme
Les machines virtuelles sont une merveilleuse invention - En théorie, les systèmes de production redondants pourraient tous être des machines virtuelles, ce qui représente une énorme économie si vous payez pour votre propre alimentation :) -Retour instantané.
voretaq7
4

PHP est sur ma première liste de choses à garder à jour avec la version actuelle. Je lui fais moins confiance que la plupart des choses.

En fin de compte, votre meilleur pari est de revoir chaque journal des modifications de votre version actuelle à la dernière et de peser le risque de manière tangible.

Si vous parlez de mettre à niveau des versions mineures, telles que 5.3.1 vers 5.3.2, je ne m'inquiéterais pas trop.

Si vous effectuez une mise à niveau de 5.2.x vers 5.3.x, vous risquez d'introduire des problèmes de compatibilité.

Si vous utilisez des packages système, les distributions n'introduiront généralement pas de mises à niveau qui perturberont les performances existantes. RHEL et CentOS corrigent les anciennes versions des correctifs jusqu'à ce qu'une version de distribution majeure sorte. Faites les tests pour vous, généralement, ce qui réduit les risques. Je m'attendrais à ce que l' entreprise SuSE soit similaire.

Pour les chemins de mise à niveau, le meilleur pari serait de construire un serveur de test et de tester l'application par rapport à la dernière version avant de mettre à niveau la production.

Warner
la source
Je pensais que les systèmes de gestion de paquets utilisaient des paquets approuvés, généralement sans interruption, tant que votre boîte n'était pas terriblement ravagée entre les deux. Ravi d'avoir affirmé cela. Merci.
lâche anonyme
La gestion des packages peut être très aléatoire - cela fonctionne généralement bien, mais j'ai rencontré des bosses au niveau des correctifs dans un package, même lorsque le fournisseur en amont dit qu'aucun changement de comatibilité n'a été introduit. Certainement une situation de test avant de déployer d'après mon expérience.
voretaq7
Avez-vous utilisé uniquement des packages système ou aviez-vous également un logiciel que vous avez vous-même compilé?
Warner
1

Une autre réponse, moins appréciée, consiste à créer une liste blanche des URL et fonctionnalités autorisées. Dans Apache, vous pouvez le faire en combinant les fonctionnalités de proxy et de réécriture.

Fondamentalement, vous effectuez deux installations, dont l'une a une configuration simplifiée: proxy, réécriture et aucune exécution de code; etc. Toute URL "autorisée" (avec paramètres, etc.) obtient un proxy pour la deuxième installation.

Ensuite, ajoutez-vous à la liste des développeurs de PHP et surveillez attentivement les notes de version. Chaque fois que vous voyez quelque chose qui ressemble à une vulnérabilité de sécurité, vous créez un shim lors de la première installation pour détecter ce type d'échec et envoyez à l'utilisateur une erreur.

Dans une configuration comme celle-ci, vous voudrez rediriger le POST vers un filtre (si vous avez besoin du POST du tout; certains sites se débrouillent très bien en n'autorisant le POST qu'à partir de certaines adresses IP!) Qui peuvent rechercher les sources autorisées et pré- valider tout.

Une telle liste blanche prend beaucoup de temps à configurer, mais pour les applications critiques qui doivent fonctionner plus longtemps que la durée de vie stable de PHP (qui ne semble être que de quelques années), cela peut être un excellent moyen de tirer parti du grand nombre de PHP applications sans obtenir leurs vulnérabilités ainsi.

géocar
la source
1

En plus de ce qui précède, vous pouvez activer la restauration des packages au cas où.

Ensuite, si quelque chose se casse sur la production dont vous êtes absolument sûr qu'il fonctionnait bien sur le développement , vous pouvez au moins annuler rapidement la modification avant de résoudre le problème.

Voir Package Rollback YUM pour un exemple dans Yum. Je suis sûr que d'autres systèmes de gestion de paquets ont des caractéristiques similaires.

Je sais que ce sont des ceintures et des bretelles et je suis d'accord avec Warner avec les sorties de points. Des changements mineurs ne devraient rien casser. Personnellement, je n'ai eu aucun problème de mise à jour de PHP, mais il vaut toujours mieux prévenir que guérir.

Richard Holloway
la source