Construcción de una imagen de sistema operativo estandarizada en gobierno

La construcción de una imagen corporativa del sistema operativo es una práctica común en la iniciativa privada, más notable aún en el sector financiero que busca proteger la información como uno de los activos más valiosos, considerado así por cualquier compañía u organización, el objetivo de esta publicación es presentar un breve resumen de las ventajas de esta práctica.

Facilidad de despliegue: Con la imagen corporativa del sistema operativo debe existir un proceso automatizado para la gestión del ciclo de vida de los sistemas instalados creando una CMDB que nos permita por equipo/sistema identificar claramente la brecha de parches y actualizaciones.

https://www.redhat.com/en/technologies/management/satellite

Control de los sistemas desplegados: Basado en perfiles en donde cada imagen corporativa de sistema operativo desplegado cumpla con su rol específico y contenga solo lo necesario, reglas de seguridad y afinamiento del rendimiento para desempeñar su función y que se encuentren agrupados por su naturaleza para facilitar su tratamiento

https://access.redhat.com/documentation/en-us/red_hat_satellite/6.8/html/planning_for_red_hat_satellite/chap-red_hat_satellite-architecture_guide-host_grouping_concepts

Remediación de problemas: Un servicio de Red Hat basado en su vasta base de conocimiento que analiza de forma rutinaria las amenazas de seguridad/vulnerabilidad, cumplimiento, rendimiento, disponibilidad y estabilidad, y determina qué avisos de Red Hat se aplican a sus implementaciones, con capacidad de monitorización de constante del entorno completo.

https://www.redhat.com/en/resources/insights-enhanced-it-operations-brief?extIdCarryOver=true&sc_cid=701f2000001Css5AAC

En México existe una gran oportunidad en la administración pública para fortalecer y asegurar su entorno operativo, la práctica propuesta es una tarea pequeña pero que aporta mucho valor, su adopción es simple y progresiva, es decir su adopción es por niveles de madurez.

En lo que va de este sexenio los eventos de ciberseguridad que han marcado esta administración han sido suficientes para no solo implementar estas prácticas sino también para divulgar y recuperar la confianza.

Evaluación de vulnerabilidades

Recientemente escribí sobre «Las deudas TIC que siguen vigentes», específicamente del control y gestión de Identidades planteando una solución mediante la adopción de un controlador de dominio para sistemas operativo Red Hat® Enterprise Linux y otros sistemas operativos GNU/Linux e incluso aplicaciones susceptibles a la tokenización.

Este artículo describe otra de deuda y una solución para cuando tenemos Red Hat® Enterprise Linux, si bien existe en la frases y expresiones anónimas de origen popular que nos invitan muchas veces de manera graciosa y amable a entrar en la cultura de la prevención nos encontramos con tanta información que podría abrumarnos.

Un atacante motivado, con tiempo y los recursos vulnerara cualquier sistema para lograr su objetivo sin importar si es el sistema principal, periférico o el objetivo final; «No existe herramienta, procedimiento, técnica que pueda garantizar la seguridad completamente, el éxito dependerá de la atención de muchos factores»

En general el resultado y valor del Open Source está en las herramientas que son nutridas por la colaboración de comunidades para resolver necesidades en la industria y que absorben de manera importante la complejidad, pero como hemos mencionado el éxito de una estrategia para reducir la brecha de seguridad dependerá de muchos factores, de los más importantes son:

  • La capacidad y dominio del equipo técnico para configurar, monitorear y mantener las tecnologías involucradas que debemos proteger y las que deben protegernos.
  • La aplicación de parches y actualizaciones, de manera oportuna y eficiente en todo el entorno.
  • Evaluaciones constantes de seguridad de nuestro entorno.

El último punto puede ser muy extenso, pero para contribuir nos enfocaremos en el sistema operativo Red Hat® Enterprise Linux utilizando scap-workbench y oscap como herramientas de evaluación de vulnerabilidades que forman parte de la suite de OpenScap, con estas herramientas aplicaremos una auditoría de cumplimiento como parte de un proceso para determinar cuántas de las reglas específicas de una política de seguridad o estándar normalizado se cubren.

Las siguientes instrucciones son para la versión de Red Hat® Enterprise Linux versión 8 (Ootpa) teniendo habilitado el repositorio de AppStream:

Instalar oscap (openscap-scanner), herramienta de línea de comandos

$ sudo yum install openscap-scanner -y

Descargar las últimas definiciones de RHSA OVAL (The Open Vulnerability and Assessment Language) para su sistema

$ sudo wget -O – https://www.redhat.com/security/data/oval/v2/RHEL8/rhel-8.oval.xml.bz2 | bzip2 –decompress > rhel-8.oval.xml

Ejecutando oscap evaluaremos las vulnerabilidades y guardaremos los resultados

$ sudo oscap oval eval –report vulnerabilityeval.html rhel-8.oval.xml

El resultado estará en un formato que puede ser interpretado por su navegador de preferencia y humanamente legible lo cual te hará ganar bastantes puntos a nivel ejecutivo, también puede analizar a otros sistemas de manera remota, a continuación una muestra.

Muestra

Lista de definiciones OVAL Red Hat® en: https://www.redhat.com/security/data/oval/v2/RHEL8/

SCAP Workbench es la herramienta gráfica que permite evaluar a un sistema local o remoto.

Instalando scap-workbench en RHEL 8

$ sudo yum install scap-workbench -y

Seguramente tu sistema no tiene interfaz gráfica por lo que deberás cubrir las dependencias según tu instalación.

Ejecutando desde línea de comandos

$ sudo scap-workbench &

Déjate guiar por el asistente gráfico y explora las posibilidades de la herramienta.scap-workbench

Espero resulte de utilidad ambas herramientas (utilerías), como último comentario despierta la curiosidad y explotalas cuanto puedas.

tlog en RHEL 8

Existen diferentes formas de realizar una auditoria para saber que realizaron en nuestro sistema cuando concedemos una sesión; en RHEL 8 se incluye tlog.

El servicio de grabación de sesiones en RHEL 8 es proporcionado por tlog, este tiene tres componentes clave:

  • tlog Responsable de grabar y reproducir todo lo que se escribe o sucede en nuestra sesión (input/output I/O recording).

  • tlog-rec-sessiones se encuentra entre el usuario y el shell para registrar todo lo que pasa en mensajes JSON.

  • SSSD The System Security Services Daemon (SSSD) es un servicio que administra un conjunto de daemons para gestionar el acceso hacia directorios remotos y mecanismos de autentificación, su función para este caso será el configurar y autorizar al usuario o grupo de usuarios que pueden ser grabados, «pero para esta ocasión será sin SSSD».

Si revisamos el proyecto de tlog en github podrá observar que los componentes principales son tlog-rec, tlog-rec-session y tlog-play.

Revisando los escenarios que podríamos utilizar son:

  • Grabar sesiones integrando seguridad con SSSD y Red Hat Identity Management.
  • Grabar sesiones sin la integración de Red Hat Identity Management pero enviando las bitácoras a un servidor remoto.
  • Grabar las sesiones y guardar las bitácoras en un archivo local, esta opción no se recomienda por que las bitácoras podrían ser eliminadas o manipuladas.

El escenario más recomendado sin duda, es tlog integrado con SSSD, Red Hat Identity Management con fines de control y seguridad, además de enviar las bitácoras a un servidor remoto.

Dicho lo anterior procederemos con el tercer escenario con fines prácticos y en un posterior post con los dos escenarios anteriores.

La primer tarea es agregar el canal appstream.

[esanchez@helen ~]$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms

[sudo] password for esanchez:

Repository 'rhel-8-for-x86_64-appstream-rpms' is enabled for this system.

Ahora a instalar paquetes.

[esanchez@helen ~]$ sudo yum install tlog -y

Terminada la configuración podrán invocar al servicio de tlog con el siguiente comando.

[esanchez@helen ~]$ tlog-rec --writer=file --file-path=prueba.log

Puede escribir algún comando para alimentar el archivo.

Para leer el archivo puede utilizar la siguiente instrucción.

[esanchez@helen ~]$ sudo tlog-play --reader=file --file-path=prueba.log

Y prepara las palomitas por que se mostrará en su terminal todo lo grabado como si esto fuera una película.

Si ejecutas el comando:

[esanchez@helen ~]$ /usr/bin/tlog-rec-session

Modificará el shell para el usuario actual haciendo permanente la grabación para este usuario.

También debe agregar la siguiente línea.

{"shell":"/bin/bash","notice":"\nATTENTION! !My eyes stay over here\n\n","latency":10,"payload":2048,"log":{"input":true,"output":true,"window":true},"limit":{"rate":16384,"burst":32768,"action":"pass"},"file":{"path":""},"syslog":{"facility":"authpriv","priority":"info"},"journal":{"priority":"info","augment":true},"writer":"journal"}

En la ruta.

esanchez@helen ~]$ sudo vi /etc/tlog/tlog-rec-session.conf

Tareas post-install en RHEL 8

Realicé una instalación mínima, está utiliza 1.3G de espacio en disco y 170M de RAM ahora sigue probar la «Consola WEB» , pero antes revisemos que las tareas permitidas desde esta consola:

  • Administrar servicios.
  • Administrar cuentas de usuarios.
  • Administración y monitoreo de servicios del sistema.
  • Configuración de interfaces de red y el firewall.
  • Revisar las bitácoras del sistema.
  • Administrar máquinas virtuales.
  • Crear informes de diagnóstico.
  • Configuración de kdump.
  • Configuración de SELinux.
  • Actualización de paquetes.
  • Gestiona la suscripción del sistemas.

Bien pues ahora a suscribir nuestro sistema.

[esanchez@helen ~]$ subscription-manager register

Esto nos pedira convertirnos en root e ingresar los datos, una vez suscrito el sistema tenemos que agregarlo a un pool válido para habilitar los repositorios.

[esanchez@helen ~]$ sudo subscription-manager attach --pool=5a65g98c60c2c2b40160c31fadbe0rwb

Habilitando repositorio base.

[esanchez@helen ~]$ sudo subscription-manager repos --disable=*

[esanchez@helen ~]$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms

Instalando Web Console.

[esanchez@helen ~]$ sudo yum install cockpit -y

Habilitando Web Console.

[esanchez@helen ~]$ sudo systemctl enable --now cockpit.socket

Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

Configurando regla de Firewall.

sudo firewall-cmd --add-service=cockpit --permanent

Cargando la regla.

[esanchez@helen ~]$ sudo firewall-cmd --reload

En los dos comandos anteriores el resultado deberá ser "success".

Accediendo por primera vez a la Web Consol, note que el puerto expuesto es 9090.

Ingresando credenciales (usuario y contraseña) válidas.

Además de que el nuevo logotipo se ve muy bonito, la información que muestra de primera vista, es suficiente para identificar el uso de los recursos y los datos generales de nuestro sistema.

RHEL 8, ¿Qué es lo nuevo?

Red Hat Enterprise Linux Server Ocho está basada en Fedora 28 y kernel 4.8, pero ¿cuál es el objetivo de esta versión?

La publicidad nos dice: Any cloud, Any workload One OS, entonces su objetivo es mantenerse como la primer opción de sistema operativo para cualquier compañía.

Revisemos cuales son las principales cambios.

Soporte para arquitecturas:

  • AMD and Intel 64-bit architectures

  • The 64-bit ARM architecture

  • IBM Power Systems, Little Endian

  • IBM Z

¿Qué otras novedades?

Web Console / Consola Web
– Basado en el proyecto Cockpit, dicha consola es compatible con los navegadores móviles lo que en teoría nos dice que la visualización debería ser amigable, se dice también que las máquinas virtuales podrían ser administradas desde esta consola web.
Image Builder
– Esta herramienta permite la creación de imágenes personalizadas de RHEL, disponible desde la consola web o línea de comandos y, nos ofrece formatos de salida como: Live OS disk image, qcow2, File System image, Cloud image para Azure, VMWare y AWS.
Estas dos características prometen bastante.

El proceso de instalación tiene algunos cambios relevantes, comparto con ustedes algunas instantáneas para que puedan ver alguno de los elementos destacados, no es que sean todos los cambios sino los que más me llamaron la atención.

Resumen
Vista previa
Propósito del sistema
Deberá elegir
Instalando
Proceso de instalación

Modernización de aplicaciones implícita

Revisaba un plan de trabajo para migrar una aplicación desde un servidor de aplicaciones JAVA olvidado hacia Red Hat® JBoss EAP, lo que me llevo a revisar los componentes subyacentes, pero el caso es que: en la administración pública medir la obsolescencia de Software responde a varios factores incluso ajenos a la tecnología.

Ahora con la ola de transformación digital me lleva a la reflexión de cuanto trabajo hay pendiente y, como primer tarea es tener una pila de herramientas que nos permita conocer la operación de estás aplicaciones para dar soporte mientras la magia sucede.

Entonces se tiene que trabajar en tres direcciones, la primera de ellas mantener la operación a menor costo, menor riesgo, incrementa disponibilidad y confiabilidad. (En esta dirección se dan raspaduras, fracturas incluso incendios, pero es inevitable).

La segunda de ellas en adoptar herramientas que nos permitan convivir entre estas dos cargas de trabajo facilitando la gestión del cambio. (En esta dirección las radiografías y fotos son de alta resolución, por lo que debe estar preparado para la verdad sin censura).

La tercera es abordar la transformación digital y del dato con herramientas Open Source sin pretexto alguno. (En esta dirección comienza el patinaje artístico, resbalones, y el aprendizaje acelerado sin miedo al error).

Entonces comenzaré por generar una colección de Software que nos acompañe en cada una de las direcciones.

De manera desorganizada comenzaré por mencionar a monit y en el próximo post, hablaré de sus características.

Un poco de rsync

Algunas veces necesitamos hacer copias de directorios, archivos de un servidor a otro, rsync es una herramienta fantástica, en esta ocasión desde un Red Hat Enterprise Linux Server 6 haremos los ejercicios.

Nuestro sistema debe estar suscrito en caso contrario visite: https://access.redhat.com/articles/rhsm-cheat-sheet

También es posible necesite hacer un repositorio local con la misma media de instalación, si este fuera el caso visite: https://access.redhat.com/solutions/328863

Es momento de instalar paquetes.

$ sudo yum install rsync -y

$ man rsync <– Para saber un poco más acerca de, puedes salir de la página del manual presionando «q»

Ahora vamos a crear una llave para root y en las conexiones de un servidor a otro no nos pida la contraseña. Desde un equipo llamada cliente.larenata.com (192.168.122.35) a otro equipo llamado server.larenata.com (192.168.122.152).

[root@cliente ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
3a:61:a9:8z:d0:e8:3d:dh:53:06:9a:6c:3e:ed:6b:89 root@cliente.larenata.com
The key’s randomart image is:
+–[ RSA 2048]—-+
|                 |
|                 |
|                 |
|   .   .         |
|  + . o S        |
| = . = . o       |
|+ . + + +        |
|+… E.=         |
|o. .o.++o        |
+—————–+

[root@cliente ~]# ssh-copy-id root@192.168.122.152
root@192.168.122.152’s password:
Now try logging into the machine, with «ssh ‘root@192.168.122.152′», and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

[root@cliente ~]# ssh root@192.168.122.152
Last login: Tue Mar  7 16:59:51 2017 from server.larenata.com
[root@server ~]#  <– Observe que ya está conectado al servidor.

Ahora hagamos un directorio en el servidor llamado backup, en donde dejaremos todos los archivos y dentro dos sub-directorios o los que necesites.

[root@server backups]# mkdir -p /var/backups/centro{1,2}

Ahora que podemos hacer conexión sin pedir contraseña de manera segura por la infraestructura de llave pública y privada, hagamos en el cliente carpetas y archivos para hacer la primer copia, los directorios creados serán dird hast dirg y dentro archivos de file1.txt al file10.txt.

[centro1@server ~]$ for i in {d..g}; do  mkdir dir$i; for j in {1..10};  do  touch dir$i/file$j.txt; done; done

[centro1@cliente ~]$ ls -l
total 16
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dird
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dire
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dirf
drwxrwxr-x. 2 centro1 centro1 4096 Mar  7 16:57 dirg

Para después aplicar rsync

[root@cliente ~]# rsync -avzh -e ssh –exclude=’.*’ /home/centro1/ root@192.168.122.152
:/var/backups/centro1
sending incremental file list
./
dird/
…[salida recortada]
dirg/
…[salida recortada]
dirg/file9.txt

sent 2.03K bytes  received 791 bytes  5.63K bytes/sec
total size is 0  speedup is 0.00

En esta primer copia las opciones son:

  • -a, –archive               archive mode; equals -rlptgoD (no -H,-A,-X).
  • -v, –verbose               increase verbosity.
  • -z, –compress              compress file data during the transfer.
  • -h, –human-readable        output numbers in a human-readable format.
  • -e, –rsh=COMMAND           specify the remote shell to use.
  • –exclude=PATTERN       exclude files matching PATTERN, en este caso todos los archivos ocultos ‘.*’.

Ahora vamos a generar más directorios y archivos en el cliente para sincronizar la copia remota con los cambios del directorio del cliente.

[centro1@cliente ~]$ for i in {1..10}; do  mkdir dir$i; for j in {1..20};  do  touch dir$i/file$j.txt; done; done

Al listar lo que hay en el directorio podrás observar dir1 al dir10 y dentro de cada dir#/ 20 archivos (file1.txt al file20.txt).

Ahora vamos hacer la copia, pero sólo de lo nuevo.

[root@cliente ~]# rsync -avzh -b -e ssh –exclude=’.*’ /home/centro1/ root@192.168.122.
152:/var/backups/centro1
sending incremental file list
dir1/
dir1/file1.txt
…[salida recortada]

dir9/file9.txt
sent 10.26K bytes  received 3.86K bytes  9.41K bytes/sec
total size is 0  speedup is 0.00

Observe que nada más se han enviado los nuevos directorios, por la opción b –backup                make backups (see –suffix & –backup-dir).

Bien como ejercicio, hemos creado en /var/backups/centro1 y centro2, repite la creación de directorios con archivos y aplica rsync.

Suerte.

Lectura para SysAdmins

Los SysAdmins (System Administrator-Administrador de sistemas), son responsables de la instalación, configuración, mantenimiento, el funcionamiento pleno y confiable de los sistemas informáticos; tan importantes son que tienen su día de celebración en el último viernes del mes de Julio y lo comparten con otros perfiles afines del mundo de TI (IT Workers).

La diferencia entre los SysAdmins y los Developers se puede resolver mediante la comparación de Hombres Lobos y Vampiros respectivamente, pero regresando al tema de los administradores recuerdo muchas enseñas dentro de los cursos, certificaciones y experiencia laboral que quiero compartir.

Por ejemplo desarrollar habilidades básicas como:

  • Ser autodidacta.
  • Saber leer y sobre todo entender.
  • Ser humilde, volver a leer si no se ha entendido y saber preguntar, recuerda antes de preguntar deberás.
  • Filtrar las fuentes de documentación; como administrador de sistemas Unix, GNU/Linux siempre busca en el mismo sistema configuraciones de ejemplo, $ man command,  $ command -h, $ info command, en /usr/share/doc/.
  • Cuando no esta documentado siempre deberás ir al código fuente y una vez entendido documentar.
  • Si aún no se ha entendido, antes de preguntar revisar y plantear la pregunta partiendo de todo lo que has probado presentando un resumen.

Esto es sólo el comienzo y son hábitos que deberás alimentar mientras seas SysAdmin, en medida que vas incrementando tú conocimiento sugiero compartir tú documentación con dos fines.

  1. Colaborar bajo la misma filosofía del Open Source, Software Libre y movimientos a fines, lo que también nos permite.
  2. Estar bajo el escrutinio de un mundo de posibilidades y donde todo comentario, critica positiva o negativa, deberá ser tomado en cuenta para mejorar.

Siempre se debe buscar perfeccionar el método, solución, proceso, procedimiento, script, código fuente o mecanismo a fin de  buscar la eficiencia y efectividad, busca el perfeccionamiento pero este debe ser incremental, toma en cuenta lo siguiente.

  1. Tener una estrategia, hacer un plan, establecer pasos o puntos de revisión, métricas y tiempo.
  2. Saber cómo funciona las cosas, estudiar antes de, hay que pensar para hacer y no hacer para pensar.
  3. Tener al menos un plan alternativo, partiendo del mejor-peor escenario y donde te quieres ver, por lo que todo lo que hagas debe ser reversible a nivel técnico.
  4. Realiza cambios de manera incremental y tener respaldo o punto de recuperación.
  5. Probar y probar antes de liberar.
  6. Busca funcionalidad antes que perfección pero, «no te pierdas en la textura».
  7. No pongas en riesgo la información por la funcionalidad,»más vale prevenir que amamantar»
  8. No te conformes con que flote o funcione, «no lo dejes al hay se va».
  9. Investigar si hay o habrá una nueva versión, «en el mundo de TI nada es aparentemente estático».
  10. Trazar una ruta o ciclo de vida, planear la obsolescencia o renovación constante, «camarón que se duerme…».

Técnicamente puedes ayudarte de la siguiente secuencia.

Install.

Configure.

Enable.

Test.

Document.

Por hoy suficiente, si es necesario imprimir y pegarlo frente a ti en tu área de trabajo no dudes en hacerlo, si quieres memorizar, hacer un resumen, mejorar y compartir adelante, si quieres citar la fuente original sería excelente.

Un intento más

Después de varios años he vuelto a esto de los blogs, motivado por compartir el conocimiento, la diferencia con los intentos anteriores es el hosting, no más servidores en casa, disponibilidad es de 99.999 en la infraestructura no así con mi tiempo, ese… ha sido el recurso más valuado.

¡Larga y eterna vida a mi blog!