Guías y Manuales

Yum-Cron: actualizaciones automáticas y por email en Centos 6

En Centos, como en cualquier otro sistema, cada cierto tiempo se publican actualizaciones, tanto por vulnerabilidades, como por nuevas versiones de los paquetes instalados.

Es importante tener el sistema actualizado, teniendo en cuenta que una gran parte de los accesos no autorizados a sistemas se debe a

paquetes vulnerables no actualizados. Por ello es vital comprobar regularmente si existen actualizaciones disponibles en nuestro Centos (en nuestro sistema en general), y posteriormente instalarlas.

Pero esta tarea debemos realizarla periódicamente, por lo que resulta bastante cómodo automátizar la comprobación de las actualizaciones disponibles (más todavía si se gestionan diversas máquinas) y que seamos notificados o bien sean instaladas.

Esto podemos lograrlo gracias a yum-cron.

Yum-cron es un daemon disponible en Centos y Fedora que utilizando un script cron comprueba diariamente si existen actualizaciones disponibles, y en caso de existir nos permite instalarlas, descargarlas simplemente, o enviarnos una notificación por email.

La instalación de yum-cron en Centos es sencilla:

[root@srv /]# yum install yum-cron
...
[root@srv /]#

Su archivo de configuración se encuentra en /etc/sysconfig/yum-cron. Editando este archivo podemos configurar el funcionamiento de yum-cron en nuestro sistema Centos.

# Pass any given paramter to yum, as run in all the scripts invoked
# by this package.  Be aware that this is global, and yum is invoked in 
# several modes by these scripts for which your own parameter might not
# be appropriate
YUM_PARAMETER=

# Don't install, just check (valid: yes|no)
CHECK_ONLY=no

# Check to see if you can reach the repos before updating (valid: yes|no)
CHECK_FIRST=no

# Don't install, just check and download (valid: yes|no)
# Implies CHECK_ONLY=yes (gotta check first to see what to download)
DOWNLOAD_ONLY=no

# Error level, practical range 0-10, 0 means print only critical errors which
# you must be told, 1 means print all errors, even ones that are not important
# Level 0 is the default
ERROR_LEVEL=0

# Debug level, practical range 0-10, higher number means more output
# Level 1 is a useful level if you want to see what's been done and
# don't want to read /var/log/yum.log
# Level 0 is the default
DEBUG_LEVEL=1

# randomwait is used by yum to wait random time
# default is 60 so yum waits random time from 1 to 60 minutes
# the value must not be zero
RANDOMWAIT="60"

# if MAILTO is set and the mail command is available, the mail command 
# is used to deliver yum output

# by default MAILTO is unset, so crond mails the output by itself
# example:  MAILTO=root
MAILTO=

# you may set SYSTEMNAME if you want your yum emails tagged differently
# default is output of hostname command 
# this variable is used only if MAILTO is set too
#SYSTEMNAME="" 

# you may set DAYS_OF_WEEK to the days of the week you want to run 
# default is every day 
DAYS_OF_WEEK="0123456" 

# which day should it do cleanup on?  defaults to 0 (Sunday).  If this day isn't in the 
# DAYS_OF_WEEK above, it'll never happen
CLEANDAY="0"

# set to yes to make the yum-cron service to wait for transactions to complete
SERVICE_WAITS=yes

# set maximum time period (in seconds) for the yum-cron service to wait for
# transactions to complete.  The default is 300 seconds (5 minutes)
SERVICE_WAIT_TIME=300

De las diversas variables que yum-cron nos permite configurar, cabe destacar 4:

  • CHECK_ONLY (yes | no): permite indicar si solo se comprueba si existen descargas pero no realizar más acciones (sin instalarlas o descargarlas)
  • DOWNLOAD_ONLY (yes | no): en el caso de no solo comprobar si existen actualizaciones (CHECK_ONLY=NO), permite descargar e instalar, o solo descargar las actualizaciones disponibles.
  • MAILTO (email | usuario): Sirve para enviar un correo de notificación con el resultado de las acciones realizadas cada vez que se ejecuta yum-cron.
  • DAYS_OF_WEEK (“0123456”): Utilizado para indicar qué días de la semana se efectuará la comprobación.

La configuración por defecto de yum-cron comprueba a diario si existen actualizaciones y en tal caso las descarga e instala sin enviar notificaciones por email.

A pesar de que esta configuración puede resultar muy cómoda al realizar la instalación de actualizaciones de forma automática en Centos, no es recomendable en entornos en producción.
Personalmente prefiero conocer previamente qué paquetes tienen actualizaciones disponibles y comprobar en un entorno de pruebas (llegado el caso) cómo van a interferir en el funcionamiento de los servicios configurados para evitar conflictos y perdida de funcionalidades.

Por ello vamos a configurar yum-cron para que compruebe si existen actualizaciones y en tal caso, nos lo notifique por correo electrónico.

Para ello vamos a editar el archivo de configuración /etc/sysconfig/yum-cron y modificamos los parámetros CHECK_ONLY y MAILTO:

...
CHECK_ONLY=yes

MAILTO=sysadm@aradaen.com
...

Una vez guardados los cambios, solo nos queda ejecutarlo:

root@server ~]# service yum-cron start
Enabling nightly yum update:                               [  OK  ]
[root@server ~]# 

De este modo ya tenemos configurado en nuestro sistema yum-cron, que nos notificará por email automáticamente las actualizaciones disponibles en nuestro sistema Centos.

Pablo Baenas

Recent Posts

Cómo crear un sistema de popups en Magento 2: Simple Popup Widget

Cómo crear popups personalizados en Magento 2 con widgets. Guía paso a paso. SimplePopupWidget para…

3 años ago

Entorno de desarrollo Magento 2 con Docker en menos de 10 minutos

Configura tu entorno de desarrollo de Magento 2 con Docker en menos de 10 minutos.

3 años ago

Ajustar en Centos la zona horaria (time zone)

Tips para sysadmins: ¿Cómo configuro en Centos la zona horaria? ¿Por qué es importante configurar…

5 años ago

Asignar o cambiar el hostname en Centos 7

Tip para sysadmins: ¿Qué es el hostname de un equipo? ¿Qué tipos de hostname hay?…

5 años ago

Cheat Sheet MySQL: privilegios de usuario

Cuando creamos una base de datos MySQL es una buena medida de seguridad crear diferentes…

11 años ago