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.