CentOS es utilizado como una alternativa gratuita de Red Hat a nivel empresarial. Por lo tanto, los sysadmin y DevOps esperan que CentOS tenga las mismas características de seguridad que Red Hat; la realidad es completamente diferente.
Los repositorios de CentOS no proporcionan la metadata necesaria para que el manejador de paquetes YUM pueda identificar las actualizaciones de seguridad disponibles.
La utilería YUM necesita indicadores de metadata para crear un archivo llamado updateinfo.xml.
Si el archivo updateinfo.xml no contiene la información necesaria, entonces, nunca se instalarán las actualizaciones de seguridad sin importar cuantas veces ejecutemos el comando yum update.
La política de CentOS parece ser que, si quieres tener el OS actualizado en en términos de seguridad, entonces existen dos alternativas:
a) Actualizar a la última versión
b) Adquirir Red Hat.
Es una filosofía de todo o nada.
Utilice la versión o, de lo contrario, no estarás protegido.
Por lo tanto, en CentOS 7, si ejecutas el comando:
#yum update –security
No tendrás el resultado esperado. Lo siento, ningún parches de seguridad será descargado e instalado en tu sistema.
Este no funcionará debido a que CentOS, por default, no proporciona los datos necesarios en los repositorios de YUM para que el comando puede realizar su función.
El comando solo funciona en Red Hat.
El repositorio EPEL proporciona estos datos, por lo que verás algunas menciones de actualizaciones de seguridad, pero estas menciones no están relacionadas con los paquetes que descansan en los repositorios de CentOS.
La solución al problema está en utilizar un repositorio alternativo llamado Updateinfo que contiene las información de erratas (CESA, CEEA, CEBA).
Agregando este repositorio podemos eliminar las vulnerabilidades de nuestro sistema operativo.
Por lo tanto, debemos agregar el repositorio Updateinfo a la configuración de YUM para que el comando yum update –security pueda ejecutarse correctamente.
Paso #1: Identificar las vulnerabilidades
Antes de aplicar cualquier parches de seguridad, primero debemos conocer qué vulnerabilidades tiene nuestro OS.
Para obtener esta información, debemos utilizar un scanner de vulnerabilidades. Dos excelentes herramientas para realizar una auditoría de seguridad son las siguientes:
Paso #2: Configuración de repositorio para las actualizaciones de seguridad
a) Crea un nuevo archivo:
#vi /etc/yum.repos/updates_cefs.repo
b) Inserta la configuración del repositorio:
[updates_cefs] name=CentOS-$releasever – Updates (from CEFS) baseurl=https://email:password@updateinfo.cefs.ste ve-meier.de/$releasever/updates/$basearch/
gpgcheck=1
enabled=1
c) Salva la configuración
Shift + :wq
Paso #3: Obtener el listado las los parches de seguridad
#yum updateinfo list
Paso #4: Descargar y aplicar los parches de seguridad
#yum update –security
Es posible instalar parches de seguridad selectivamente:
#yum update –advisory=CESA-2017:148
También podemos aplicar parches utilizando como referencia el CVE:
#yum update –cve CVE-2016-8399
Paso #5: Actualizar el kernel del OS
Muchas vulnerabilidades están relacionadas con el kernel. Por lo tanto, para remediarlas debemos instalar una nueva versión del kernel con las vulnerabilidades conocidas remediadas.
Aunque el comando yum update –security instala un nuevo kernel, este contiene vulnerabilidades debido a que pertenece a la rama (branch) de desarrollo 3.X.
Al momento de escribir este artículo la última versión estable disponible del kernel es 4.20.10. En el repositorio oficial del kernel podemos conocer la última versión.
Para instalar un nuevo kernel siga el siguiente procedimiento:
a) Activa el repositorio
#rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
b) Luego que el repositorio esté activo, ejecutamos el siguiente comando para listar las versiones del kernel que están disponibles:
#yum –disablerepo=”*” –enablerepo=”elrepo-kernel” list available
c) Procedemos con la instalación de la última versión estable del kernel de la línea ml:
#yum –enablerepo=elrepo-kernel install kernel-ml
d) Finalmente, reiniciamos la máquina:
#shutdown -r now
Paso #6: Configuración de GRUB para cargar el nuevo kernel
Para cambiar la opción por default utilizada para inicializar el kernel, debemos de modificar la configuración de GRUB.
a) Primero, ejecutamos el siguiente comando para lista los kernel
disponibles instalados en el OS:
#grep ‘^menuentry’ /boot/grub2/grub.cfg
b) Segundo, editamos la configuración de GRUB:
#vi /etc/default/grub
Dentro del archivo debemos identificar cuál kernel vamos a seleccionar como la opción por defecto. Cada entrada del menú en GRUB tiene asignado un número. La primera entrada tiene el número 0, la segunda, 1, y así sucesivamente.
En nuestro caso, la primera entrada del menú (0) representa el kernel 4.20.10.
Dentro del archivo busca la variable GRUB_DEFAULT y asignale el valor 0:
GRUB_DEFAULT=0
c) Finalmente, ejecuta el siguiente comando para regenerar una nueva versión de GRUB:
#grub2-mkconfig -o /boot/grub2/grub.cfg
d) Reinicia la máquina
#shutdown -r now
Paso #7: Borrar los kernel viejos
a) Verifica cuál kernel está en uso:
#uname -a
b) Lista los kernels instalados:
#rpm -q kernel
c) Borrar los kernel viejos
#yum remove kernel-3.10.0-693.el7.x86_64
Paso #8: Verificación de las vulnerabilidades
Nuevamente, debemos verificar los resultados que presentan Wazuh y Nessus para comprobar que las vulnerabilidades hayan sido corregidas a partir de aplicación de los parches.
Conclusión
Por default, CentOS no tiene acceso a la metadata necesaria para que el comando yum update –security funcione correctamente.
Es necesario agregar un repositorio adicional denominado updateinfo para obtener la metadata con los parches de seguridad.
CentOS 7 utiliza la rama del kernel 3.X. Esta rama es antigua, por lo tanto, debemos descargar la última versión estable de la rama 4.X. De esta forma podemos tener parchado el sistema operativo de nuestros servidores.