CBL-Mariner, la distribución de Linux que esta detrás de WSL, Azure y otros productos de Microsoft
Hace poco Microsoft lanzó la primera versión estable de su propia distribución de Linux «CBL-Mariner 1.0» (Common Base Linux) el cual es un producto de Microsoft que es utilizado de manera interna para la nube y otras necesidades comerciales de la empresa.
Como tal CBL-Mariner no es una distribución de propósito general como cualquier otra tendríamos en mente (tales como Ubuntu o Fedora) aunque es de código abierto y ya está siendo utilizado por sistemas como Windows Subsystem para Linux (WSL), Azure Sphere OS, SONiC y otros esfuerzos basados en Linux.
Esto es lo que nos comparte en su blog Juan Manuel Rey, miembro del equipo de Azure, pues especifica que esta distribución denominada CBL-Mariner está destinada a uso interno para desarrollar productos y servicios en la nube.
En su publicación, especifica:
CBL-Mariner sigue el principio de seguridad por defecto, la mayoría de los aspectos del sistema operativo se han creado con un énfasis en la seguridad. Viene con un kernel reforzado, actualizaciones firmadas, ASLR, endurecimiento basado en compilador y registros a prueba de manipulaciones, entre muchas características.
El proyecto tiene como objetivo unificar las soluciones Linux utilizadas en Microsoft y simplificar el mantenimiento de los sistemas Linux para diversos fines hasta la fecha. Todas las tecnologías de software de esta práctica se difunden bajo la licencia MIT.
La distribución es destacable, ya que proporciona un pequeño conjunto típico de paquetes básicos que actúan como una base universal para crear el llenado de contenedores, entornos de host y servicios que se ejecutan en infraestructuras en la nube y en dispositivos de borde. Se pueden crear soluciones más complejas y especializadas agregando paquetes adicionales sobre CBL-Mariner, pero la base de todos estos sistemas permanece sin cambios, lo que simplifica el mantenimiento y la preparación de actualizaciones.
El sistema de compilación CBL-Mariner permite generar paquetes RPM separados basados en archivos SPEC y códigos fuente, e imágenes del sistema monolítico generadas usando el kit de herramientas rpm-ostree y actualizadas atómicamente sin dividirse en paquetes separados, además de que tambien se pueden crear soluciones más complejas y especializadas agregando combustible adicional en SVL-Mariner, pero la base para todos estos tiempos
Se admiten dos modelos de actualización: actualizando solo paquetes individuales y ejecutando y actualizando la imagen del sistema completo.
Para utilizar el enfoque de «máxima seguridad por defecto». Es posible filtrar las llamadas al sistema con la ayuda del mecanismo sensor, encriptar secciones del disco, verificar las contraseñas por su firma digital y mucho más.
Por defecto, los mecanismos de protección contra el desbordamiento del muro, desbordamiento del búfer y la vulnerabilidad de la página de format. Se activan los modos de aleatorización del espacio de direcciones admitidos en el kernel de Linux, así como varios mecanismos de protección contra ataques asociados a enlaces simbólicos, mmap, /dеv/mem y /dеv/kmеm.
¿Cómo instalar Microsoft CBL-Mariner?
Para quienes estén interesados en poder conocer más a fondo sobre CBL-Mariner, deben saber que pueden construir su propia imagen desde Ubuntu o cualquier distribución de Linux, solo que en este caso tomaremos las instrucciones para generar la imagen en Ubuntu.
Para ello primero, debemos de instar algunos requisitos previos que necesitaremos para construir la imagen ISO:
sudo apt install make tar wget curl rpm qemu-utils golang-go genisoimage python2-minimal bison gawk
Ahora procedemos a obtener el código de CBL-Mariner:
git clone https://github.com/microsoft/CBL-Mariner.git
Y ahora tendremos que ingresar al directorio CBL-Mariner/toolkit y creamos la imagen ISO de instalación.
cd CBL-Mariner/toolkit sudo make iso REBUILD_TOOLS=y REBUILD_PACKAGES=n CONFIG_FILE=./imageconfigs/full.json
Al finalizar, podemos encontrar el archivo ISO en el directorio ../out/images/full/. Ya con la imagen del sistema creada, podremos probar el sistema sobre una máquina virtual, ya sea con VirtualBox, VMWare, Boxes o en cualquier otro de tu agrado.
Lo único que debes de configurar en la máquina virtual, es que esta tenga al menos 2GB de RAM, un core y 16 GB de almacenamiento.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.