Tabla de contenido
Como seguramente ya habrás visto en los medios de comunicación últimamente la importancia de actualizar los sistemas es más visible que nunca. Estamos viendo numerosas vulnerabilidades críticas que pueden llevarnos a tener el sistema comprometido o a que un usuario del sistema escale privilegios, es decir, se comporte administrador sin tener que serlo, pueda leer modificar ficheros a los que no debería tener acceso o incluso pueda llegar a ejecutar código en nuestra máquina de forma remota.
Últimas vulnerabilidades más mediáticas
Los más sonados son los siguientes:
- Vulnerabilidad de apache log4j, permite la ejecución remota de código (https://www.incibe.es/protege-tu-empresa/avisos-seguridad/vulnerabilidad-critica-apache-log4j )
- Vulnerabilidad Dirty Pipe de Linux, que permite sobrescribir ficheros aunque sean de solo lectura (https://www.incibe-cert.es/alerta-temprana/avisos-seguridad/dirty-pipe-vulnerabilidad-escalada-privilegios-el-kernel-linux ).
- Vulnerabilidad CVE-2022-21882 de Windows ( https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-21882 )
Cómo realizar el proceso de actualización
Hay que tener en cuenta que desde que se encuentra una vulnerabilidad o fallo en el sistema hay un tiempo de desarrollo del parche. Linux tarda una media de 25 días en liberar los parches, Apple 70 días y Microsoft 80 días.
Esto también es aplicable a las aplicaciones, no solo a los sistemas. Por ejemplo WordPress y sus plugins libera actualizaciones frecuentemente.
Es probable que te preguntes que pasa con los contenedores. Bueno normalmente si hay una buena comunidad detrás de una imagen para una aplicación, se liberarán nuevas imágenes actualizadas con las que prácticamente parando el contenedor y levantando otro con la nueva imagen ya tendremos actualizada la aplicación. En otros casos es probable que se tengan que seguir una serie de pasos para realizar una actualización complementaria de datos en las bases de datos, etc.
Si tenemos imágenes creadas por nosotros, siempre que sea posible y las aplicaciones tengan compatibilidad con nuevos sistemas deberemos actualizar la imagen para no quedarnos atrás e ir corrigiendo errores de las capas de imagen que componen nuestra imagen final.
Otro punto importante es la actualización del firmware de los componentes hardware de la infraestructura.
Por último, la frecuencia de actualización. Es importante actualizar el sistema o aplicación frecuentemente (siempre que sea posible) esto debe ser valorado en cada caso. Una forma de hacerlo es programar actualizaciones de formas semanales o mensuales. Antes de hacer la actualización se deben revisar los cambios que se aplicarán y verificar que el sistema, aplicación o contenedor puede funcionar con estos cambios.
Antes de actualizar lo que sea (aplicaciones, contenedores o sistema) haz un backup de los datos antes de actualizar.
El backup puede variar dependiendo del uso del sistema o de la aplicación pero a mi me gusta hacerlo así:
- Sistema Operativo: Backup completo del disco del sistema. Existen herramientas de pago para esto, también se puede hacer ejecutando un dd del disco del sistema hacia un fichero. Con esto podremos restaurar el sistema completo en caso de tener problemas ahorrándonos reinstalarlo.
- Aplicaciones: Backup de los ficheros y de la base de datos. Dependiendo de la criticidad de la aplicación haría un backup integral del sistema.
- Contenedores: En este caso es importante usar volúmenes para persistir los datos. Yo realizaría un backup de estos volúmenes para evitar la modificación de los datos durante la actualización/reemplazo de la imagen.