1 puntos por GN⁺ 2024-04-28 | 1 comentarios | Compartir por WhatsApp
  • Historia de Alpine Linux

    • Alpine Linux es una distribución Linux independiente, no comercial y de propósito general, diseñada para usuarios avanzados que priorizan la seguridad, la simplicidad y la eficiencia de recursos
    • Todos los binarios de userland se compilan como PIE (Position Independent Executables) y tienen protección contra stack smashing, lo que ayuda a prevenir de antemano clases completas de exploits, incluidas vulnerabilidades zero-day
    • En 2005, Natanael Copa discutió el inicio del proyecto y, al igual que BSD, se usa no solo en sistemas embebidos, routers y dispositivos móviles, sino también en servidores y escritorios de propósito general
    • Gracias a su tamaño compacto y dependencias limitadas, también es popular como base para contenedores Linux
    • También ofrece una toolchain que puede ejecutarse fácilmente en chroot(8), lo que resulta interesante para quienes usan ampliamente chroots(8) de NetBSD y jail de FreeBSD
  • Instalación de Alpine Linux

    • Está disponible en varias versiones, incluidas compilaciones para ARM, PPC64, x86 y x86_64
    • El proceso de instalación es muy simple: basta con iniciar sesión como root en el entorno live y ejecutar setup-alpine
    • Hace preguntas básicas sobre keymap, red, zona horaria y autenticación de root, y también permite inyectar claves SSH desde el inicio, lo que resulta útil al desplegar VMs o conjuntos de servidores con herramientas de orquestación, o al implementar en proveedores de hosting que no entregan medios
    • Entre varios servidores SSH y clientes NTP se puede elegir OpenSSH y openntpd, y también identifica correctamente cuando se ejecuta sobre Xen
    • También se puede configurar LVM, pero por ahora se mantiene con la partición estándar sys de Alpine usando ext4
  • Exploración después de la instalación

    • Al arrancar Alpine por primera vez, se entiende de inmediato una razón especial: dmesg(1) indica que está ejecutando OpenRC
    • Es portable, pequeño, rápido, eficiente, transparente y seguro
    • Resulta muy familiar para usuarios de BSD acostumbrados a escribir scripts de rc
    • La presencia de /etc/rc.conf y crond(8) da gusto
    • Es muy grato ver esto en distribuciones Linux como Devuan, Gentoo y Alpine, y hace que Linux vuelva a ser divertido
    • Junto con OpenRC vienen incluidos musl y busybox, lo que reduce aún más el tamaño del sistema base y la superficie de ataque
    • También están disponibles llvm y uno de los shells interactivos preferidos del autor, MirBSD Korn Shell
  • Paquetes

    • El gestor de paquetes predeterminado de Alpine es apk y, como suele ser común en Linux, maneja las actualizaciones sin separar el sistema base del resto de los paquetes
    • Como en BSD, se quiere comprobar si es posible ejecutar una copia sin privilegios, pero aún no se ha verificado; además, está pkgsrc, así que no parece un problema
    • La configuración está en /etc/apk/repositories, y se puede habilitar el repositorio community descomentando la segunda URL proporcionada por el instalador
    • Alpine también tiene un repositorio testing, y además se pueden agregar repositorios propios
    • Su uso es fácil, pero por viejas costumbres todavía se escribe por error apt install en lugar de apk add
    • Existe una interfaz web oficial, y los repositorios de Alpine están en pkgs.org
    • El paquete de zfs fue lo más sorprendente: solo hicieron falta dos comandos para instalar y cargar el módulo del kernel (aunque root sobre ZFS seguramente sería más complicado)
  • Conclusión

    • Apenas se ha rascado la superficie, pero ya hay razones suficientes para considerar seriamente cambiarse a Alpine como distribución Linux principal para pruebas y servidores
    • Gusta que htop(1) y lsof(1) muestren solo una lista pequeña de procesos reconocibles, que use OpenRC, que la gestión de paquetes parezca simple y que la configuración sea muy sencilla
    • Si uno se preguntaba cómo se vería un “Occam's Linux” moderno y funcional, esto es exactamente eso
    • Si hiciera falta algo más que busybox, se querría comprobar si uutils funciona, aunque para servidores genera dudas

Opinión de GN⁺

  • Alpine Linux está optimizada para despliegues basados en contenedores, por lo que se usa ampliamente en plataformas de contenedores como Docker. Parece una distribución que vale la pena considerar al implementar arquitecturas de microservicios con contenedores.

  • Usar musl libc por defecto puede ser tanto una ventaja como una desventaja. musl es más liviana y fuerte en seguridad frente a glibc, pero puede haber problemas de compatibilidad con algunas aplicaciones. Por eso conviene verificar de antemano la compatibilidad de las aplicaciones que se van a usar.

  • También es llamativo que use ash como shell predeterminado. ash tiene menos funciones que bash, pero es un shell muy liviano y rápido, por lo que parece útil en entornos con recursos limitados, como sistemas embebidos. En cambio, para usuarios generales podría resultar algo incómodo.

  • Para quienes usan principalmente sistemas operativos de la familia BSD, Alpine Linux probablemente resulte atractiva por ofrecer un entorno familiar. Aun así, como el soporte para entornos de escritorio todavía parece insuficiente, se ve más adecuada para uso en servidores o sistemas embebidos.

  • En general, Alpine Linux parece tener una presencia propia como distribución ligera y optimizada para seguridad. Sin embargo, como su ecosistema aún no es muy grande, conviene considerar que el soporte de la comunidad podría ser algo limitado si surge un problema. Aun así, se espera que con el tiempo siga ganando más usuarios gracias a sus ventajas.

1 comentarios

 
GN⁺ 2024-04-28
Comentarios de Hacker News

Resumen:

  • Los binarios de Linux se compilan como PIE (Position Independent Executable), lo que aumenta la seguridad

  • GLIBC tiene la implementación de heap más endurecida, por lo que ofrece más mitigaciones contra vulnerabilidades del heap como el double free

  • Alpine usa musl, por lo que es menos seguro que GLIBC. Un sistema pequeño y fácil de entender ayuda a la seguridad

  • Illumos (OpenSolaris) hace que todo sea más simple después de décadas usando Linux

  • La mayoría de lo que funcionaba en Solaris 10 sigue aplicando hoy con ligeras modificaciones

  • zone es 10 veces mejor que los contenedores Docker, e incluye soporte integrado para ZFS

  • Gestión de servicios con SMF. La única desventaja es configurarlo con XML

  • Se comparte experiencia usando servidores con OmniOS y SmartOS

  • Como usuario de BSD, probó Alpine por primera vez en bhyve

  • Al estar basado en busybox, no hace falta que las utilidades de /bin y /sbin sean binarios separados, así que el espacio de usuario es pequeño y arranca rápido

  • Con tmux y zsh basta para la mayoría de los usos de Unix

  • Hizo falta instalar muchos paquetes con apk, pero en general fue la mejor experiencia Linux que había tenido

  • Sería bueno que incluyera ZFS y soporte para bindings virtio de bhyve

  • También recomiendan Void Linux para usuarios de BSD. Lo creó un desarrollador de NetBSD y tiene versiones con glibc/musl. Usa runit como sistema init

  • Con xbps-src se pueden compilar paquetes desde el código fuente

  • A algunas personas no les gusta usar Alpine porque no incluye páginas man por defecto

  • Se preguntan si existe una opción para instalar automáticamente la documentación al instalar paquetes

  • Hubo posts sobre el rendimiento de Alpine en Docker. Se recomendaba usar Debian/Ubuntu

    • Razones por las que Alpine sería más lento: menor rendimiento en Python, 50% más lento que una imagen de Ubuntu
    • Post defendiendo Alpine: benchmark comparando rendimiento con Debian
  • Se preguntan si esto sigue siendo vigente

  • No entienden qué hace atractivos a OpenRC y similares. Consideran que las opciones basadas en supervisión son mejores que manejar archivos PID

  • Sí reconocen que no reiniciar automáticamente puede ser una ventaja

  • Depender tanto de syslog también es tecnología de los años 80

  • Coinciden en que hace falta mejorar una vista centralizada para entender el orden de eventos entre varias herramientas

  • Ventaja de Alpine: permite gestión declarativa de paquetes sin Nix editando /etc/apk/world y luego ejecutando apk fix

  • Slackware es un punto medio entre BSD y Linux. Tiene estilo Unix y no es complicado. Slackbuilds ofrece un árbol de ports abundante

  • musl no soporta pthread_attr_setaffinity_np, por lo que algunos programas como PyTorch no pueden ejecutarse