Se ha publicado la versión 1.9 del proyecto Nebula, que ofrece herramientas para construir redes de superposición seguras, permitiendo unir hosts geográficamente separados en una red aislada que opera sobre la red global. El proyecto está destinado a crear sus propias redes de superposición para cualquier necesidad, como por ejemplo, para unir computadoras corporativas en diferentes oficinas, servidores en distintos centros de datos o entornos virtuales en distintos proveedores de nube. El código está escrito en Go y se distribuye bajo la licencia MIT. El proyecto es desarrollado por Slack, que gestiona el mensajero corporativo del mismo nombre. Se admite el funcionamiento en Linux, FreeBSD, macOS, Windows, iOS y Android.
Los nodos en la red Nebula se comunican directamente entre sí en modo P2P; a medida que surge la necesidad de transferir datos entre nodos, se crean dinámicamente conexiones directas. VPN-conexiones. La identidad de cada host en la red se verifica mediante un certificado digital, y la conexión a la red requiere autenticación: cada usuario recibe un certificado que valida la dirección IP en la red Nebula, su nombre y su membresía en grupos de hosts. Los certificados son firmados por una autoridad certificadora interna, que es implementada por el creador de cada red en su infraestructura y utilizada para certificar la autoridad de los hosts que tienen derecho a conectarse a una red de superposición específica vinculada a la autoridad certificadora.
Para crear un canal de comunicación seguro y autenticado en Nebula, se utiliza un protocolo de túnel propio, basado en el protocolo de intercambio de claves de Diffie-Hellman y el cifrado AES-256-GCM. La implementación del protocolo se basa en primitivas listas y probadas, proporcionadas por el marco Noise, que también se utiliza en proyectos como WireGuard, Lightning e I2P. Se afirma que el proyecto ha pasado una auditoría de seguridad independiente.
Para detectar otros nodos y coordinar las conexiones a la red, se crean nodos especiales ‘lighthouse’, cuyas direcciones IP globales son fijas y conocidas por los participantes de la red. Los nodos participantes no tienen vinculación con fuentes externas, IPse identifican mediante certificados. Los propietarios de hosts no pueden modificar los certificados firmados y, a diferencia de las redes IP tradicionales, no pueden hacerse pasar por otro host simplemente cambiando su dirección IP. Al crear un túnel, la identidad del host se valida mediante una clave privada única.
A la red creada se le asigna un rango específico de direcciones intranet (por ejemplo, 192.168.10.0/24) y se vinculan las direcciones internas con los certificados de los hosts. Se proporcionan diversos mecanismos para evitar traductores de direcciones (NAT) y cortafuegos. Es posible organizar la ruta del tráfico de hosts externos no pertenecientes a la red Nebula (ruta insegura) a través de la red de superposición. De los participantes de la red de superposición se pueden formar grupos, por ejemplo, para separar servidores y estaciones de trabajo, a los que se les aplican reglas de filtrado de tráfico específicas.
Se admite la creación de firewalls para dividir el acceso y filtrar el tráfico entre nodos en la red en capas Nebula. Se utilizan ACL con etiquetas para el filtrado. Cada host en la red puede definir sus propias reglas de filtrado basadas en hosts, grupos, protocolos y puertos de red. En este caso, los hosts se filtran no por direcciones IP, sino por identificadores firmados digitalmente del host, que son imposibles de falsificar sin comprometer la autoridad de certificación que coordina el funcionamiento de la red.
En esta nueva versión:
- Se ha añadido una nueva configuración default_local_cidr_any, que cambia el comportamiento al procesar subredes ‘local_ip’ en las reglas del firewall para prevenir la autorización indebida del tráfico hacia hosts enumerados en el bloque unsafe_routes. En la versión 1.9, la configuración está establecida en ‘true’, pero en la próxima versión 1.10 se reemplazará por ‘false’, lo que llevará a considerar las subredes locales al aplicar reglas de firewall a hosts accesibles a través de rutas inseguras (para acceder a tales hosts, es necesario especificar local_cidr).
- Se ofrece una imagen oficial para el sistema Docker, que permite desplegar rápidamente una red en capas basada en Nebula o un nodo para la misma.
- Se han añadido compilaciones experimentales para la arquitectura Loong64.
- Se ha implementado un script de servicio para el sistema de inicialización OpenRC.
- Se ha añadido soporte para autenticación mediante certificados firmados por una autoridad de certificación en el proceso en segundo plano de SSH (sshd.trusted_cas). Se ha implementado la posibilidad de incrustar claves de host en el bloque de configuraciones sshd.host_key.
- Se ha garantizado el soporte para reiniciar la configuración de ‘tun.unsafe_routes’.
- Se ha eliminado el soporte para la configuración obsoleta local_range, que debe ser reemplazada por preferred_ranges.
- Ahora se requiere la herramienta go 1.22 para la compilación. Los requisitos mínimos para las versiones de Windows se han elevado a Windows 10 y Windows Server 2016.
Fuente: opennet.ru
