Bloque 15 - Endurecimiento del Kernel

Como vimos en el apartado Correción 7 hay muchos valores que fuimos cambiando por los aconsejados. Ahora aparecen nuevos valores a tener en cuenta, el procedimiento es el mismo que en la corrección:
2022-11-29 09:23:21 Result: sysctl key kernel.dmesg_restrict has a different value than expected in scan profile. Expected=1, Real=0
...
- kernel.dmesg-restict, sirve para restringir el acceso a la información de- dmesg, normalmente para que usuarios normales no puedan ver información sensible como los detalles de las caídas de las aplicaciones. El valor- 0es sin restricciones y todos los usuarios pueden acceder a la información de- dmesg. En cambio, el valor- 1sólo permite ver esta información a los usuarios que tengan la capacidad- CAP_SYSLOG, es decir, el usuario que tenga asignado esta capacidad en el archivo- /etc/security/capability.conf(aparte de los superusuarios). Podemos ver las capacidades de cada usuario si usamos el comando- capsh:
## Usuario propio
capsh --print
## El de otros usuario, como administrador
sudo capsh --print --user=[nombre_usuario]

2022-11-29 09:23:21 Result: sysctl key kernel.kptr_restrict has a different value than expected in scan profile. Expected=2, Real=1
...
- kernel.kptr_restict, está diseñado para ocultar los punteros del kernel expuestos, específicamente a través de las interfaces- /proc. Exponer estos punteros proporciona un blanco fácil para las vulnerabilidades de escritura del núcleo, ya que revelan las ubicaciones de estructuras modificables que contienen funciones que pueden activarse. Si se establece en- 2, los punteros del núcleo que utilizan- %pKse imprimen como- 0'sindependientemente de los privilegios.
2022-11-29 09:23:21 Result: sysctl key kernel.modules_disabled has a different value than expected in scan profile. Expected=1, Real=0
...
- kernel.modules_disabled, el- Kernelpuede ser configurado para no permitir la carga de nuevos módulos del- kernel. Esta característica es especialmente útil para los sistemas de alta seguridad. El uso de esta opción será una gran protección contra la carga de módulos maliciosos, por ejemplo, puede ayudar a contrarrestar los- rootkits.
2022-11-29 09:23:21 Result: sysctl key kernel.perf_event_paranoid has a different value than expected in scan profile. Expected=3, Real=1
...
- kernel.perf_event_paranoid, define cómo de “paranoico” debe ser el- Kernelen relación con la monitorización del rendimiento. Los niveles de “paranoia” actuales están documentados en un comentario de- kernel/events/core.c:- -1 - Nada paranoico.
- 0 - no permite el acceso a tracepointpara usuarios no privilegiados.
- 1 - no permite eventos de cpu para usuarios no privilegiados.
- 2 - no permite los perfieles de kernel para usuarios no privilegiados.
 
No encuentro ninguna referencia a porque el valor debe ser 3, por lógica debe ser más restrictivo. En cambio, he encontrado esta vulnerabilidad donde se sugiere que el valor de este debe ser >=3.
2022-11-29 09:23:21 Result: sysctl key kernel.sysrq has a different value than expected in scan profile. Expected=0, Real=1
...
- kernel.sysrq, este valor lo modificamos durante las correcciones, pero fue con otra versión de- Lynis, ahora nos sugiere deshabilitarlo directamente. Esto puede deberse a que es posible hacer uso de esto de manera remota por algunas referencias, pero desconozco como se hace realmente.
2022-11-29 09:23:21 Result: sysctl key net.ipv4.conf.all.accept_redirects has a different value than expected in scan profile. Expected=0, Real=1
...
- net.ipv4.conf.all.accept_redirects, este caso es curioso porque, como vimos en el Bloque 20 de la Primera auditoría, este valor estaba a- 0y ahora dice que está a- 1. Me inclino a pensar que su valor siempre fue ese y que la antigua versión de este programa tuviera un fallo en ese test.
Aunque muestra muchos valores, no son los únicos que busca:
2022-11-29 09:23:21 Result: key kernel.exec-shield-randomize does not exist on this machine
2022-11-29 09:23:21 Result: key kernel.exec-shield does not exist on this machine
...
2022-11-29 09:23:21 Result: key kernel.suid_dumpable does not exist on this machine
2022-11-29 09:23:21 Result: sysctl key kernel.sysrq has a different value than expected in scan profile. Ex
pected=0, Real=1
...
2022-11-29 09:23:21 Result: key net.core.bpf_jit_harden does not exist on this machine
2022-11-29 09:23:21 Result: key net.inet.icmp.bmcastecho does not exist on this machine
2022-11-29 09:23:21 Result: key net.inet.icmp.drop_redirect does not exist on this machine
2022-11-29 09:23:21 Result: key net.inet.icmp.rediraccept does not exist on this machine
2022-11-29 09:23:21 Result: key net.inet.icmp.timestamp does not exist on this machine
...
Como vemos son valores que no existen en la máquina, esto puede deberse a que son valores opcionales, que son valores que se han ido añadiendo a otras versiones de la distribución o directamente de otras distribuciones. En cualquier caso, habría que estudiar individualmente el alcance, compatibilidad e impacto de estos parámetros en nuestro sistema, apoyándonos en la información que aporta el registro de Lynis.
Información adicional
- dmesg-> es usado con el fin de escribir los mensajes del- kernelen Linux y otros sistemas operativos similares a- Unixen una salida estándar de forma mucho más organizada. Muchos de estos mensajes los vemos cuando arrancamos el sistema operativo, siendo un buen indicativo de los procesos utilizados por el- kernely si alguno obtiene un fallo.
- Punteros -> nombres con los que se designa un espacio de memoria. 
- Paranoia del - kernel-> cómo actúa el núcleo a la hora de que el- softwarevea el- hardware. Por ejemplo, si hacemos que el- kernelsolo reconozca el tipo de- USB(firmware) que deseamos, cualquier otro tipo de- USBsimplemente sería ignorado por nuestro equipo, algo un poco extremo, pero podría servir dependiendo de las circunstancias.