gna_lighthouse: Координатор и Маяк Сети

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

В философии Zero Trust Lighthouse является Policy Enforcement Point (PEP) — точкой, где применяются политики доступа, проверяются сертификаты и принимаются решения о маршрутизации трафика.


1. Архитектура и Внутреннее Устройство

Lighthouse построен на базе асинхронного движка Tokio, что позволяет ему обрабатывать тысячи UDP-сессий одновременно с минимальными задержками.

1.1. In-Memory State (Состояние в памяти)

Для обеспечения мгновенной реакции сервер хранит ключевые данные в оперативной памяти:

  • UDP Sessions: Таблица соответствия Публичный IP:Порт <-> Виртуальный IP. Позволяет идентифицировать отправителя пакета без повторной проверки подписи для каждого байта.
  • Blacklist: Список заблокированных узлов. Пакеты от узлов в этом списке отбрасываются на самом раннем этапе обработки.
  • Online Status: Хранит временные метки последних Handshake-пакетов, позволяя определять реальный статус узлов в реальном времени.

1.2. Асинхронная шина событий (Event Bus)

Внутри Lighthouse работает Unbounded Channel, по которому административная панель передает приказы сетевому ядру. Это позволяет, например, нажать кнопку "Block" в браузере и мгновенно отправить UDP-команду на отзыв прав (PeerRevoke) всем агентам сети.


2. Ключевой Функционал

2.1. Оркестрация Пиров (Peer Orchestration)

Lighthouse ведет "карту мира" всей сети.

  1. Handshake: Получая AgentReport, Lighthouse проксирует его в gna_ca_server.
  2. PeerMap Update: Если CA подтверждает валидность узла, Lighthouse обновляет данные о его текущем публичном IP.
  3. PeerList Distribution: Lighthouse рассылает всем доверенным узлам пакет 0x04, содержащий список всех остальных участников. Это позволяет агентам "видеть" друг друга и пытаться построить прямые P2P-туннели.

2.2. L3 VPN Routing & Relay (Ретрансляция)

Lighthouse работает на сетевом уровне (Layer 3).

  • Blind Relay: Если два агента находятся за жесткими NAT и не могут соединиться напрямую, они шлют пакеты на Lighthouse.
  • Конфиденциальность: Благодаря PFS (Perfect Forward Secrecy), пакеты данных зашифрованы ключами, которых нет у Lighthouse. Сервер видит только IP-заголовок внутри конверта, чтобы знать, куда переслать пакет, но не может прочитать содержимое.

2.3. DNS Authority (Зона .ghost)

Lighthouse является "хозяином" доменной зоны .ghost.

  • Он слушает порт UDP 53.
  • Когда агент запрашивает, например, files.ghost, Lighthouse ищет в своей базе узел с алиасом files и возвращает его VIP (10.0.0.X).
  • Если запрос касается внешнего мира (например, google.com), Lighthouse выступает как рекурсивный резолвер, проксируя запрос на 8.8.8.8.

2.4. Remote CLI (Удаленное управление)

Сервер позволяет выполнять команды на агентах через защищенный канал.

  • Команды шифруются общим ключом сети (GHOST_PSK).
  • Реализована защита от Replay-атак: каждая команда имеет уникальный UUID. Если злоумышленник перехватит и попробует отправить ту же команду еще раз, агент её проигнорирует.
  • Поддерживается смена директорий (cd) и интерактивный вывод результатов.

3. SPA & Admin Tunneling (Безопасность Панели)

Это одна из самых мощных функций Lighthouse. Веб-панель управления физически закрыта для всего интернета.

  1. SPA (Single Packet Authorization): Чтобы "увидеть" панель, администратор должен отправить специальный подписанный UDP-пакет через gna_agent.
  2. TCP-over-UDP Tunnel: При успешной проверке сертификата в CA, Lighthouse открывает виртуальный туннель.
  3. Изоляция: Веб-сервер панели слушает только 127.0.0.1. Попасть на него можно только пройдя через криптографический фильтр Lighthouse. Это делает невозможным брутфорс паролей или эксплуатацию уязвимостей в веб-движке снаружи.

4. Сетевой протокол и типы кадров (Frame Types)

Lighthouse общается с агентами через проприетарный двоичный протокол поверх UDP. Каждый пакет зашифрован (ChaCha20-Poly1305) и имеет следующий заголовок типов:

Тип (Hex)НазваниеОписание
0x01VpnDataИнкапсулированный IP-трафик (стандартный режим).
0x02HandshakeПакет с AgentReport для авторизации узла.
0x03KeepAliveЛегкий пакет для поддержания NAT-сессий.
0x04PeerListРассылка актуальной карты сети всем агентам.
0x05PeerRevokeПриказ всем узлам немедленно забанить конкретный VIP.
0x06PfsRequestИнициация обмена эфемерными ключами (PFS).
0x08PfsDataТрафик, зашифрованный сессионным ключом (End-to-End).
0x10AdminTunnelRequestЗапрос на открытие SPA-туннеля к панели управления.
0x12AdminTunnelDataИнкапсуляция TCP-трафика панели внутри UDP.
0x30CommandRequestОтправка CLI-команды от сервера к агенту.
0x31CommandResponseВозврат результата выполнения команды на сервер.

5. База данных и Хранение состояния

Lighthouse использует SQLite (lighthouse.db) для хранения долгоживущих данных. Основные таблицы:

  • nodes: Содержит реестр всех когда-либо подключавшихся узлов, их NodeID, виртуальные IP, аппаратные отпечатки, версии ОС и список опубликованных сервисов.
  • command_log: История всех команд, выполненных через Remote CLI, включая время запуска, текст команды, статус (Success/Fail) и полный вывод (stdout/stderr).

6. Установка и запуск

Lighthouse поставляется со встроенным менеджером служб для Linux (systemd).

6.1. Первичная настройка

Перед запуском необходимо создать файл .env в корневой директории:

GHOST_PSK="ваш_секретный_ключ_32_символа"

Управление и конфигурация Lighthouse

6.2. Команды управления

Бинарный файл gna_lighthouse поддерживает следующие команды для ручного управления и установки в качестве сервиса:

  • Ручной запуск:
    ./gna_lighthouse
    
  • Установка службы (systemd):
    sudo ./gna_lighthouse install
    
  • Удаление службы:
    sudo ./gna_lighthouse uninstall
    

6.3. Systemd Unit

При установке службы создается unit-файл /etc/systemd/system/ghost_lighthouse.service, который содержит следующие важные параметры конфигурации:

  • Restart=always: гарантирует автоматический перезапуск сервиса в случае сбоя или паники.
  • WorkingDirectory: устанавливает рабочую директорию в папку с бинарным файлом. Это критически важно для корректного доступа к базе данных и файлу окружения .env.
  • LimitNOFILE=65536: повышает лимит на количество открытых файловых дескрипторов, что необходимо для обработки большого количества одновременных соединений.

7. Безопасность и Firewall

Lighthouse является единственным компонентом системы, который имеет прямой доступ в интернет, поэтому его защита критична. Рекомендуемая конфигурация с использованием UFW:

  • UDP 50000 (VPN/Signaling): ALLOW from ANY (Обязательно для входа агентов в сеть).
  • TCP 9000 (HTTPS Panel): DENY from ANY (Доступ к панели управления разрешен только через VPN-туннель или из внутренней подсети 10.0.0.0/24).
  • TCP 9100 (CA API): СТРОГО ЗАПРЕЩЕНО открывать доступ извне. (Доступ разрешен только с адреса 127.0.0.1).
  • UDP 53 (DNS): ALLOW from 10.0.0.0/24 (Разрешить DNS-запросы только от авторизованных агентов из внутренней сети).

8. Экспериментальные функции и автономность

8.1. CRL Caching (Автономная безопасность)

Lighthouse обеспечивает отказоустойчивость системы путем кэширования списков отозванных сертификатов (CRL). Каждые 30 секунд он опрашивает gna_ca_server на предмет обновлений и сохраняет актуальный список в памяти.

Преимущество: Если CA-сервер станет недоступен или уйдет в офлайн, Lighthouse продолжит блокировать подключения уже отозванных узлов, используя данные из кэша.

8.2. Smart Relay Selection

Экспериментальный алгоритм динамической маршрутизации, основанный на оценке задержек (Latency).

Принцип работы: Если качество прямого P2P-соединения между агентами падает (потеря пакетов превышает 10%), Lighthouse может принудительно перевести их на Relay-режим, обеспечивая более стабильное и надежное соединение.

8.3. DNS Forwarding & Filtering

Встроенный DNS-сервер может быть настроен на фильтрацию доменных имен.

Применение: Позволяет реализовать корпоративную политику безопасности на уровне всей сети GhostNet (например, блокировку фишинговых или вредоносных сайтов) без необходимости установки дополнительного ПО на агенты.


9. Технологический стек

  • Runtime: Tokio (Асинхронный движок для работы с UDP/TCP).
  • Web API: Axum (Высокопроизводительный роутинг для веб-панели).
  • TLS: Rustls (Современная замена OpenSSL, исключающая legacy-уязвимости).
  • DNS: Hickory-DNS (Чистая реализация протокола DNS на Rust).
  • Logging: Кастомный кольцевой буфер (Ring Buffer) для сбора системных логов и их трансляции в веб-панель в режиме реального времени.