Linux
September 14

Что такое Nebula и зачем она нужна?  

Nebula — это оверлейная сеть, которая позволяет создавать зашифрованные, безопасные соединения между узлами (компьютерами, серверами, устройствами) через существующие IP-сети, такие как Интернет. Основное назначение Nebula — это создание частных виртуальных сетей, которые могут работать поверх любых IP-сетей, включая сети с ограниченным доступом за NAT или брандмауэрами. Этот инструмент был разработан компанией Slack и открыт как проект с открытым исходным кодом.

Nebula работает по модели P2P (peer-to-peer) и использует сертификаты для аутентификации и авторизации узлов, что обеспечивает высокий уровень безопасности и контроля над сетью.

Основные компоненты сети Nebula

1. Центр сертификации (CA):
Это ключевой элемент для управления узлами в сети Nebula. Центр сертификации используется для генерации и подписания сертификатов узлов, которые позволяют им участвовать в сети. Сертификаты содержат информацию о каждом узле, включая его IP-адрес и группы безопасности (т.н. "группы"). Все узлы доверяют одному центру сертификации, что обеспечивает их взаимную аутентификацию.

2. Узлы (Nodes):
Узлы — это устройства (сервера, компьютеры, устройства IoT и т.д.), которые участвуют в оверлейной сети Nebula. Каждый узел использует зашифрованное соединение для общения с другими узлами, и каждый узел имеет уникальный сертификат для аутентификации.

3. Маяки (Lighthouses):
Маяки служат для обнаружения узлов в сети и помогают узлам найти друг друга, особенно если они находятся за NAT или брандмауэром. Маяки не маршрутизируют трафик, а только сообщают узлам, как установить соединение между собой. Маяки играют важную роль в обеспечении работы сети, но они не участвуют в передаче данных напрямую.

Принцип работы Nebula

Nebula использует криптографические протоколы для шифрования трафика между узлами, включая Elliptic-curve Diffie-Hellman (ECDH) для обмена ключами и AES-256-GCM для шифрования данных. Все узлы используют сертификаты, которые подписаны одним центром сертификации, что гарантирует, что все узлы доверяют друг другу.

Когда узел хочет установить соединение с другим узлом, он обращается к маякам (lighthouses) для получения информации об IP-адресах других узлов. После этого узлы могут установить прямое P2P-соединение через зашифрованные туннели.

Сертификаты и центр сертификации (CA)

Одним из ключевых аспектов работы Nebula является управление сертификатами. Для настройки сети необходимо:
1. Создать центр сертификации (CA), который будет генерировать сертификаты для всех узлов.
2. Для каждого узла (маяков и узлов сети) необходимо создать сертификат, подписанный центром сертификации. Сертификат содержит информацию об IP-адресе узла и его принадлежности к определённой группе безопасности.

Сертификаты позволяют контролировать, какие узлы могут общаться друг с другом и какие права доступа есть у каждого узла.

Группы безопасности и файерволл

Nebula использует концепцию групп безопасности, которые определяют, какие узлы могут взаимодействовать друг с другом. Например, вы можете разделить сеть на несколько групп (например, "network1", "network2", "servers", "clients") и настроить правила файерволла, которые будут управлять доступом между узлами.

Пример правил файерволла:

firewall:
  inbound:
    - port: any
      proto: any
      groups:
        - network1  # Разрешить входящий трафик только от узлов из группы network1
  outbound:
    - port: any
      proto: any
      host: any

Эти правила позволяют ограничить доступ к узлам на основе их принадлежности к группам безопасности.

Настройка нескольких маяков

Для повышения отказоустойчивости и производительности рекомендуется настроить несколько маяков в разных частях мира. Если один маяк выйдет из строя, другие маяки смогут продолжать работу, помогая узлам находить друг друга.

Сервер генерации сертификатов и резервирование данных

Для управления сертификатами обычно используется отдельная машина — сервер центра сертификации (CA). На этом сервере хранятся:
- Закрытый ключ центра сертификации (ca.key) — самый важный файл, который нужно защитить. Без него невозможно будет создать новые сертификаты.
- Сертификат центра сертификации (ca.crt) — этот файл распространяется среди узлов для их аутентификации друг с другом.

Если сервер центра сертификации выйдет из строя или потеряет доступ, вам потребуется восстановить его с помощью резервной копии файла `ca.key`. Без этого файла вы не сможете создать новые сертификаты для узлов.

Автоматизация и управление сетью

Автоматизация управления сетью Nebula может быть достигнута с помощью инструментов конфигурации, таких как Ansible, Puppet или Chef, которые позволяют автоматизировать развертывание узлов и обновление конфигурационных файлов. Эти инструменты помогают централизованно управлять сертификатами и обновлениями для всех узлов в сети.

На текущий момент официального web-GUI для управления Nebula нет, однако с помощью CLI и вышеупомянутых инструментов можно автоматизировать многие процессы. При необходимости можно разработать собственный веб-интерфейс для управления сетью на основе существующих скриптов.

Масштабирование сети Nebula

Nebula легко масштабируется, что позволяет добавлять новые узлы и сети (сегменты) в существующую инфраструктуру. Для этого достаточно создать сертификаты для новых узлов с помощью центра сертификации, настроить конфигурационные файлы и подключить узлы к маякам. Сетевые сегменты можно разделить на группы безопасности для ограничения доступа между различными сетями.

Заключение

Nebula — это мощное решение для создания защищённых виртуальных сетей поверх существующих IP-сетей. Она обеспечивает высокий уровень безопасности, гибкости и масштабируемости благодаря использованию сертификатов, шифрования и централизованного управления доступом. Несмотря на отсутствие официального веб-интерфейса, Nebula позволяет эффективно управлять большими распределёнными сетями с помощью инструментов автоматизации и центра сертификации.

Это делает Nebula отличным выбором для компаний, которые хотят создать собственную VPN-сеть с высокой степенью контроля и безопасности.

https://linuxblog.xyz/posts/slack-nebula/
Вот отличная статья по настройке

https://hub.docker.com/r/renehonig/nebula
докер контейнер для быстрого старта