Paranoid Sysadmin -vs- Versión PHP desactualizada

8

¿Cómo puede un administrador de sistemas paranoico mantenerse actualizado con las últimas versiones estables de PHP? (Las correcciones de seguridad han estado llegando con bastante regularidad).

Este es un servidor de producción, por lo que "romper cosas" está asustando a mi chico. El tiempo de inactividad por mantenimiento no es el problema.

Específicamente, estamos ejecutando un Suse Enterprise Linux reciente, pero una respuesta genérica o más general es perfectamente aceptable.

¿Cómo maneja las actualizaciones de seguridad para las máquinas de producción? ¿Qué ignoramos que este tipo tenga tanto miedo de usar el administrador de paquetes para "actualizar"?

¿Algún consejo?

cobarde anónimo
fuente
2
siendo paranoico sobre cualquier php parche, GTK + envoltura, actualización del controlador de ventanas, etc es una buena cosa en mi humilde opinión - esto es algo más que PHP es un parche en general philosiphy Ver serverfault.com/questions/104665/... para una buena discusión de parcheo en general .
Zypher
@Zypher Gracias por el enlace. La situación aquí no es ideal, pero estamos trabajando para lograrlo. Evidencia clara de que las cosas deben apurarse y llegar allí. =)
cobarde anónimo

Respuestas:

6

Manejo PHP de la misma manera que manejo todo lo demás: primero actualice el entorno de desarrollo (un clon de producción de VMWare), haga una prueba de regresión y luego lo promocione a producción usando las mismas plantillas de implementación que utilizamos para los hosts VMWare. (Si usa administradores de paquetes para realizar sus actualizaciones, usaría los mismos paquetes).

Como una capa adicional de aislamiento, nuestro entorno de producción se compone de hosts redundantes emparejados, y un host se retira de la rotación de producción para su actualización, luego se prueba exhaustivamente antes de pasar a ese host para actualizar a su socio.

Como regla general, las actualizaciones de seguridad se aplican tan pronto como sea práctico, y las actualizaciones de corrección de errores no críticas / no críticas se aplican trimestralmente para minimizar el tiempo de inactividad.

voretaq7
fuente
Tener la redundancia es genial. Estamos moviendo muchas cosas a lo virtual, lo que hará que esto sea mucho más fácil. Solo asegurándome de que mis suposiciones no fueran una locura. =) Gracias por tu respuesta.
cobarde anónimo
Las máquinas virtuales son un invento maravilloso: en teoría, los sistemas de producción redundantes podrían ser máquinas virtuales, lo que supone un gran ahorro de costos si está pagando por su propia energía :) Otras ventajas incluyen la capacidad de capturar sus máquinas virtuales antes de realizar las actualizaciones por casi -retroceso instantáneo.
voretaq7
4

PHP está en mi lista principal de cosas para mantener actualizado a la versión actual. Confío menos que la mayoría de las cosas.

En última instancia, su mejor opción es revisar cada registro de cambios desde su versión actual hasta la última y sopesar el riesgo de manera tangible.

Si está hablando de actualizar versiones menores, como 5.3.1 a 5.3.2, no me preocuparía demasiado.

Si está actualizando de 5.2.x a 5.3.x, es probable que presente algunos problemas de compatibilidad.

Si está utilizando paquetes del sistema, normalmente las distribuciones no introducirán actualizaciones que rompan el rendimiento existente. RHEL y CentOS parchean versiones antiguas para corregirlas hasta que salga una versión de distribución principal. Por lo general, hacen las pruebas por usted, lo que reduce el riesgo. Esperaría que la empresa SuSE sea ​​similar.

Para las rutas de actualización, la mejor opción sería construir un servidor de prueba y probar la aplicación con la última versión antes de actualizar la producción.

Warner
fuente
Sí pensé que los sistemas de administración de paquetes usaban paquetes examinados, generalmente sin interrupciones, siempre que su caja no estuviera terriblemente devastada en el medio. Es bueno tener eso afirmado. Gracias.
cobarde anónimo
La administración de paquetes puede ser muy impredecible, por lo general funciona bien, pero he tenido golpes de nivel de parche en un paquete que explotó en mi cara, incluso cuando el proveedor aguas arriba dice que no se introdujeron cambios que rompan la compatibilidad. Definitivamente una situación de prueba antes de implementar en mi experiencia.
voretaq7
¿Estaba usando solo paquetes del sistema o tenía un software que compiló usted mismo?
Warner
1

Otra respuesta menos apreciada es crear una lista blanca de URL y características permitidas. En Apache puede hacer esto combinando las funciones de proxy y reescritura.

Básicamente, realiza dos instalaciones, una que tiene una configuración simplificada: Proxy, reescribir y sin ejecución de código; etc. Cualquier URL "permitida" (con parámetros, etc.) se aproxima a la segunda instalación.

Luego, agréguese a la lista de desarrolladores de PHP y monitoree las notas de la versión cuidadosamente. Cada vez que ve algo que parece ser una vulnerabilidad de seguridad, crea una cuña en la primera instalación para detectar este tipo de falla y envía un error al usuario.

En una configuración como esta, querrás redirigir POST a un filtro (si es que necesitas POST; ¡algunos sitios funcionan bien al permitir POST solo desde algunas direcciones IP!) Que puede buscar fuentes permitidas y validar todo.

Tal lista blanca lleva mucho tiempo configurarla, pero para aplicaciones de misión crítica que necesitan ejecutarse por más tiempo que la vida útil estable de PHP (que parece ser solo unos pocos años), esta puede ser una excelente manera de aprovechar la gran cantidad de PHP aplicaciones sin obtener sus vulnerabilidades también.

geocar
fuente
1

Además de lo anterior, puede habilitar la reversión de paquetes por si acaso.

Luego, si algo se interrumpe en la producción y estaba seguro de que funcionaba bien en el desarrollo , al menos puede deshacer el cambio rápidamente antes de solucionar el problema.

Consulte el paquete Rollback YUM para ver un ejemplo en Yum. Estoy seguro de que otros sistemas de gestión de paquetes tienen similares.

Sé que es cinturón y frenillos y estoy de acuerdo con Warner con los puntos de lanzamiento. Los cambios menores no deberían romper nada. Personalmente, no he tenido ningún problema en las actualizaciones de PHP, pero siempre es mejor prevenir que curar.

Richard Holloway
fuente