Administrador de Linux: actualizaciones del sistema

El sistema CentOS 7 se puede actualizar de tres formas:

  • Manually
  • Automatically
  • Actualice manualmente para problemas de seguridad importantes y configure actualizaciones automáticas

En un entorno de producción, se recomienda actualizar manualmente para los servidores de producción. O al menos establecer un plan de actualización para que el administrador pueda garantizar servicios vitales para las operaciones comerciales.

Es plausible que una simple actualización de seguridad pueda causar problemas recurrentes con una aplicación común que requiera actualización y reconfiguración por parte de un administrador. Por lo tanto, esté cansado de programar actualizaciones automáticas en producción antes de probar primero en servidores de desarrollo y escritorios.

Actualizar manualmente CentOS 7

Para actualizar CentOS 7, querremos familiarizarnos con el comando yum .yumse usa para tratar con repositorios de paquetes en CentOS 7. yum es la herramienta comúnmente usada para -

  • Actualizar el sistema Linux CentOS 7
  • Buscar paquetes
  • Instalar paquetes
  • Detectar e instalar las dependencias necesarias para los paquetes

Para usar yum para las actualizaciones, su servidor CentOS deberá estar conectado a Internet. La mayoría de las configuraciones instalarán un sistema base, luego usarán yum para consultar el repositorio principal de CentOS para obtener funcionalidad adicional en los paquetes y aplicar actualizaciones del sistema.

Ya hemos hecho uso de yum para instalar algunos paquetes. Cuando use yum , siempre deberá hacerlo como usuario root. O un usuario con acceso root. Así que busquemos e instalemos un editor de texto fácil de usar llamado nano .

[[email protected] rdc]# yum search nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.rackspace.com
 * epel: mirror.chpc.utah.edu
 * extras: repos.forethought.net 
 * updates: repos.forethought.net 
====================================================================== 
      N/S matched: nano 
======================================================================
nano.x86_64 : A small text editor
nodejs-nano.noarch : Minimalistic couchdb driver for Node.js
perl-Time-Clock.noarch : Twenty-four hour clock object with nanosecond precision
 Name and summary matches only, use "search all" for everything.
 
[[email protected] rdc]#

Ahora, instalemos el editor de texto nano .

[[email protected] rdc]# yum install nano
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package nano.x86_64 0:2.3.1-10.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================  
Package                             Arch
Version                          Repository                            Size  
================================================================================  
 Installing: 
 nano                               x86_64
 2.3.1-10.el7                    base                                  440 k
 
Transaction Summary
Install  1 Package
Total download size: 440 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
nano-2.3.1-10.el7.x86_64.rpm
| 440 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : nano-2.3.1-10.el7.x86_64
1/1  
 Verifying  : nano-2.3.1-10.el7.x86_64
1/1  
Installed: 
 nano.x86_64 0:2.3.1-10.el7
 
Complete!

[[email protected] rdc]#

Hemos instalado el editor de texto nano. Este método, en mi opinión, es mucho más fácil que buscar utilidades en sitios web y ejecutar manualmente los instaladores. Además, los repositorios usan firmas digitales para validar los paquetes, asegurando que provienen de una fuente confiable con yum. Depende del administrador validar la autenticidad al confiar en nuevos repositorios. Es por eso que se considera una buena práctica estar cansado de los repositorios de terceros.

Yum también se puede utilizar para eliminar un paquete.

[[email protected] rdc]# yum remove nano 
Loaded plugins: fastestmirror, langpacks 
Resolving Dependencies 
--> Running transaction check 
---> Package nano.x86_64 0:2.3.1-10.el7 will be erased 
--> Finished Dependency Resolution

Dependencies Resolved

Ahora busquemos actualizaciones.

[[email protected] rdc]# yum list updates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.keystealth.org
 * epel: pubmirror1.math.uh.edu
 * extras: centos.den.host-engine.com
 * updates: repos.forethought.net
Updated Packages
NetworkManager.x86_64           1:1.4.0-17.el7_3       updates
NetworkManager-adsl.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-glib.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-libnm.x86_64     1:1.4.0-17.el7_3       updates
NetworkManager-team.x86_64      1:1.4.0-17.el7_3       updates
NetworkManager-tui.x86_64       1:1.4.0-17.el7_3       updates
NetworkManager-wifi.x86_64      1:1.4.0-17.el7_3       updates
audit.x86_64                    2.6.5-3.el7_3.1        updates
audit-libs.x86_64               2.6.5-3.el7_3.1        updates
audit-libs-python.x86_64

Como se muestra, tenemos algunas docenas de actualizaciones pendientes de instalar. En realidad, hay alrededor de 100 actualizaciones en total ya que aún no hemos configurado las actualizaciones automáticas. Por lo tanto, instalemos todas las actualizaciones pendientes.

[[email protected] rdc]# yum update
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.usc.edu
 * epel: pubmirror1.math.uh.edu
 * extras: repos.forethought.net
 * updates: repos.forethought.net
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.4.0-14.el7_3 will be updated
---> Package NetworkManager.x86_64 1:1.4.0-17.el7_3 will be an update
 selinux-policy            noarch      3.13.1102.el7_3.15      updates     414 k
 selinux-policy-targeted   noarch      3.13.1102.el7_3.15      updates     6.4 M 
 systemd                   x86_64      21930.el7_3.7           updates     5.2 M 
 systemd-libs              x86_64      21930.el7_3.7           updates     369 k 
 systemd-python            x86_64      21930.el7_3.7           updates     109 k 
 systemd-sysv              x86_64      21930.el7_3.7           updates     63 k 
 tcsh                      x86_64      6.18.01-13.el7_3.1      updates     338 k 
 tzdata                    noarch      2017a1.el7              updates     443 k 
 tzdata-java               noarch      2017a1.el7              updates     182 k 
wpa_supplicant             x86_64      1:2.021.el7_3           updates     788 k  

Transaction Summary 
=============================================================================== 
  Install   2 Packages 
  Upgrade  68 Packages 
Total size: 196 M 
Total download size: 83 M 
Is this ok [y/d/N]:

Después de presionar la tecla "y", comenzará la actualización de CentOS 7. El proceso general por el que pasa yum cuando se actualiza es:

  • Comprueba los paquetes actuales
  • Busca paquetes actualizados en el repositorio
  • Calcula las dependencias necesarias para los paquetes actualizados
  • Descargas actualizaciones
  • Instala actualizaciones

Ahora, asegurémonos de que nuestro sistema esté actualizado:

[[email protected] rdc]# yum list updates 
Loaded plugins: fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * updates: mirror.compevo.com

[[email protected] rdc]#

Como puede ver, no se enumeran actualizaciones.

Configurar actualizaciones automáticas para YUM

En un entorno empresarial, como se mencionó anteriormente, las actualizaciones automáticas pueden ser o no el método preferido de instalación. Repasemos los pasos para configurar actualizaciones automáticas con yum.

Primero, instalamos un paquete llamado yum-cron .

[[email protected] rdc]# yum -y install yum-cron
Install  1 Package
Total download size: 61 k
Installed size: 51 k
Downloading packages:
yum-cron-3.4.3-150.el7.centos.noarch.rpm
|  61 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : yum-cron-3.4.3-150.el7.centos.noarch
1/1
  Verifying  : yum-cron-3.4.3-150.el7.centos.noarch
1/1

Installed: 
 yum-cron.noarch 0:3.4.3-150.el7.centos
 
Complete!

[[email protected] rdc]#

De forma predeterminada, yum-cron solo descargará actualizaciones y no las instalará. La instalación automática de actualizaciones depende del Administrador. La mayor advertencia es: algunas actualizaciones requerirán reiniciar el sistema. Además, algunas actualizaciones pueden requerir un cambio de configuración antes de que los servicios vuelvan a estar operativos.

La actualización de dependencias puede posiblemente crear un problema recurrente en la siguiente situación:

  • Yum recomienda una actualización para una biblioteca determinada

  • La biblioteca solo es compatible con Apache Server 2.4, pero tenemos el servidor 2.3

  • Nuestro sitio de comercio se basa en una determinada versión de PHP

  • La nueva versión de Apache instalada para la biblioteca requiere actualizar PHP

  • Nuestras aplicaciones web de producción aún no se han probado con la versión más reciente de PHP.

Yum puede continuar y actualizar Apache y PHP automáticamente sin previo aviso, a menos que esté configurado para no hacerlo.

Si se cumplen los 5 escenarios, puede resultar en cualquier cosa, desde un gran dolor de cabeza por la mañana hasta un posible compromiso de seguridad que exponga los datos del usuario. Si bien el ejemplo mencionado anteriormente es una especie de tormenta perfecta, nunca queremos que se desarrolle tal escenario.

Depende del Administrador acceder a posibles escenarios de pérdida potencial de ingresos debido al tiempo necesario para restaurar los servicios debido al posible tiempo de inactividad debido a reinicios de actualización y reconfiguraciones. Esta práctica puede no ser lo suficientemente conservadora para, digamos, un sitio de comercio electrónico de varios millones de dólares por día con millones de clientes.

Ahora configuremos yum-cron para instalar automáticamente las actualizaciones del sistema.

[[email protected] rdc]# vim /etc/yum/yum-cron.conf
# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes

Queremos cambiar apply_updates = no por apply_updates = yes . Ahora configuremos el intervalo de actualización para yum-cron .

Una vez más, utilizar actualizaciones automáticas e instalar actualizaciones a pedido puede ser un arma de doble filo y debe ser considerado por un administrador para cada situación única.