Skip to main content Link Search Menu Expand Document (external link)

Bloque 12 - Tiempo y sincronización, criptografía, virtualización y esquemas de seguridad

Referente al tiempo y a la sincronización de este, vemos el mismo resultado que en la primera pasada de Lynis, comprobemos el registro para ver algo más de información:

2022-11-29 09:23:13 Action: Performing tests from category: Time and Synchronization
2022-11-29 09:23:13 ====
2022-11-29 09:23:13 Performing test ID TIME-3104 (Check for running NTP daemon or client)
2022-11-29 09:23:13 Test: Searching for a running NTP daemon or available client
2022-11-29 09:23:13 Result: no chrony configuration found
2022-11-29 09:23:13 Performing pgrep scan without uid
2022-11-29 09:23:13 IsRunning: process 'dntpd' not found
2022-11-29 09:23:13 Performing pgrep scan without uid
2022-11-29 09:23:13 IsRunning: process 'timed' not found
2022-11-29 09:23:13 Result: crontab file /etc/anacrontab not found
2022-11-29 09:23:13 Test: checking for ntpdate, rdate, sntp or ntpdig in crontab file /etc/crontab
2022-11-29 09:23:13 Result: no ntpdate, rdate, sntp or ntpdig reference found in crontab file /etc/crontab

...

2022-11-29 09:23:13 Test: checking for file /etc/network/if-up.d/ntpdate
2022-11-29 09:23:13 Result: found ntpdate action when network interface comes up
2022-11-29 09:23:13 Result: Found a time syncing daemon/client.
2022-11-29 09:23:13 Hardening: assigned maximum number of hardening points for this item (3). Currently having 192 points (out of 273)
2022-11-29 09:23:13 ====

...

Observamos las comprobaciones que hace y que coincide con lo que documentamos en el Bloque 16 de la sección Primera auditoría.

Criptografía

Añade nuevos conceptos respecto a lo anteriormente visto. Vemos que habla de “entropía del kernel”:

2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID CRYP-8002 (Gather available kernel entropy)
2022-11-29 09:23:20 Result: found kernel entropy value of 1123
2022-11-29 09:23:20 ====

...

La entropía es la aleatoriedad recogida por un sistema operativo o una aplicación para su uso en criptografía o para otros usos que requieren datos aleatorios. El kernel de Linux genera entropía de los tiempos de teclado, los movimientos del ratón, y los tiempos de IDLE (Inactividad); pone los datos de carácter aleatorio a disposición de los otros procesos del sistema operativo a través de los archivos especiales /dev/random y /dev/urandom. Los administradores de sistemas, especialmente aquellos que supervisan servidores de internet, deben asegurarse de que los procesos del sistema, no se detienen debido a un agotamiento de la entropía. La entropía en servidores que utilizan el núcleo Linux, o cualquier otro kernel o un proceso en espacio de usuario que genera la entropía de la consola y el subsistema de almacenamiento, es a menudo mucho menor debido a la falta de un ratón y un teclado, por lo que los servidores tienen que generar su entropía de un conjunto limitado de recursos, tales como los tiempos de IDLE.

La entropía en Linux, es visible a través del archivo /proc/sys/kernel/random/entropy_avail, y por lo general, debe tener al menos un valor de ´1000.

Vamos a ver nuestra entropía actual:

Está muy baja actualmente, lo cuál puede ser un problema a la hora de generar claves y contraseñas, por ello podemos hacer uso de rngd. Este hace de puente entre dos generadores aleatorios (TRNG y PRNG) y hace que la generación aleatoria sea mucho mayor. Instalamos el paquete:

sudo apt install -y rng-tools

Ahora vamos a especificar que /dev/urandom sea una fuente de entropía, para ello vamos poner lo siguiente en /etc/default/rng-tools:

HRNGDEVICE=/dev/urandom

Iniciamos el servicio e inmediatamente vemos el aumento significativo que hemos sufrido:

Con esto hemos resuelto el apartado de HW RNG & rngd, respecto a PRNG ,más abajo, vemos que busca otras fuentes para generar aleatoriedad por software y busca otras herramientas que podríamos instalar:

2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID CRYP-8005 (Presence of software pseudo random number generators)
2022-11-29 09:23:20 Test: looking for software pseudo random number generators
2022-11-29 09:23:20 Performing pgrep scan without uid
2022-11-29 09:23:20 IsRunning: process 'audio-entropyd' not found
2022-11-29 09:23:20 Performing pgrep scan without uid
2022-11-29 09:23:20 IsRunning: process 'haveged' not found
2022-11-29 09:23:20 Performing pgrep scan without uid
2022-11-29 09:23:20 IsRunning: process 'jitterentropy-rngd' not found
2022-11-29 09:23:20 ====

...

Seguimos con una variable llamada MOR (MemoryOverwriteRequest-bit) :

2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID CRYP-8006 (MemoryOverwriteRequest-bit set)
2022-11-29 09:23:20 Test: looking for /sys/firmware/efi/efivars/MemoryOverwriteRequestControl-e20939be-32d4-41be-a150-897f85d49829
2022-11-29 09:23:20 Result: could not find /sys/firmware/efi/efivars/MemoryOverwriteRequestControl-e20939be-32d4-41be-a150-897f85d49829

...

Esto tiene que ver con la configuración de la BIOS del sistema, nosotros no tenemos habilitado el arranque seguro por tanto esta variable no existe.

Virtualización y contenedores

El apartado de virtualización ya lo comentamos en el Bloque 17 de Primera auditoría, pero ahora aparece el concepto tan actual que son los “contenedores”:

2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Action: Performing tests from category: Containers
2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Skipped test CONT-8004 (Query running Solaris zones)
2022-11-29 09:23:20 Reason to skip: Incorrect guest OS (Solaris only)
2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID CONT-8102 (Checking Docker status and information)
2022-11-29 09:23:20 Performing pgrep scan without uid
2022-11-29 09:23:20 IsRunning: process 'dockerd' not found
2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Skipped test CONT-8104 (Checking Docker info for any warnings)
2022-11-29 09:23:20 Reason to skip: Prerequisites not met (ie missing tool, other type of Linux distribution)
2022-11-29 09:23:20 ====


...

Busca a Docker, que si bien no es el único programa que crea contenedores, es uno de los más usados. En resumidas cuentas, la importancia de los contenedores radica en que aísla el software y permite que trabaje de forma independiente en diferentes sistemas operativos, hardware, redes, sistemas de almacenamiento y políticas de seguridad. Permite que la aplicación basada en contenedor pase sin sobresaltos las fases de desarrollo, prueba y los entornos de producción. Dado que el contenedor no incluye un sistema operativo, utiliza mínimos recursos de computación, por eso es ligero y fácil de instalar.

Este sistema no tiene esto, pero podría ser una solución interesante implementar algunos servicios web en esta tecnología.

Esquemas de seguridad

Aquí se encuentra más información que el Bloque 17 de la sección Primera auditoría. Aquí vemos que encuentra procesos no confinados de AppArmor:

2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID MACF-6204 (Check AppArmor presence)
2022-11-29 09:23:20 Result: aa-status binary found, AppArmor is installed
2022-11-29 09:23:20 ====
2022-11-29 09:23:20 Performing test ID MACF-6208 (Check if AppArmor is enabled)
2022-11-29 09:23:20 Result: file /sys/kernel/security/apparmor/profiles is available and readable
2022-11-29 09:23:20 Result: AppArmor is enabled and a policy is loaded
2022-11-29 09:23:20 Hardening: assigned maximum number of hardening points for this item (3). Currently having 195 points (out of 276)
2022-11-29 09:23:20 Result: Unconfined process: unconfined:1:init
2022-11-29 09:23:20 Result: Unconfined process: unconfined:2:kthreadd
2022-11-29 09:23:20 Result: Unconfined process: unconfined:390:upstart-udev-br
2022-11-29 09:23:20 Result: Unconfined process: unconfined:403:systemd-udevd
2022-11-29 09:23:20 Result: Unconfined process: unconfined:432:dbus-daemon
2022-11-29 09:23:20 Result: Unconfined process: unconfined:463:systemd
2022-11-29 09:23:20 Result: Unconfined process: unconfined:488:systemd-logind
2022-11-29 09:23:20 Result: Unconfined process: unconfined:491:rpc.idmapd
2022-11-29 09:23:20 Result: Unconfined process: unconfined:499:systemd-journal
2022-11-29 09:23:20 Result: Unconfined process: unconfined:510:rsyslogd
2022-11-29 09:23:20 Result: Unconfined process: unconfined:604:smbd

...

Estos procesos no están siendo gestionados por AppArmor y por ello sería necesario crear perfiles para cada uno de ellos y recargar tanto AppArmor como los binarios de estos procesos. Podemos ver aquí como podríamos hacer esto.


Información adicional

Artículo de JuncoTIC sobre la entropía y herramientas para su generación