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 ведет "карту мира" всей сети.
- Handshake: Получая
AgentReport, Lighthouse проксирует его вgna_ca_server. - PeerMap Update: Если CA подтверждает валидность узла, Lighthouse обновляет данные о его текущем публичном IP.
- 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. Веб-панель управления физически закрыта для всего интернета.
- SPA (Single Packet Authorization): Чтобы "увидеть" панель, администратор должен отправить специальный подписанный UDP-пакет через
gna_agent. - TCP-over-UDP Tunnel: При успешной проверке сертификата в CA, Lighthouse открывает виртуальный туннель.
- Изоляция: Веб-сервер панели слушает только
127.0.0.1. Попасть на него можно только пройдя через криптографический фильтр Lighthouse. Это делает невозможным брутфорс паролей или эксплуатацию уязвимостей в веб-движке снаружи.
4. Сетевой протокол и типы кадров (Frame Types)
Lighthouse общается с агентами через проприетарный двоичный протокол поверх UDP. Каждый пакет зашифрован (ChaCha20-Poly1305) и имеет следующий заголовок типов:
| Тип (Hex) | Название | Описание |
|---|---|---|
0x01 | VpnData | Инкапсулированный IP-трафик (стандартный режим). |
0x02 | Handshake | Пакет с AgentReport для авторизации узла. |
0x03 | KeepAlive | Легкий пакет для поддержания NAT-сессий. |
0x04 | PeerList | Рассылка актуальной карты сети всем агентам. |
0x05 | PeerRevoke | Приказ всем узлам немедленно забанить конкретный VIP. |
0x06 | PfsRequest | Инициация обмена эфемерными ключами (PFS). |
0x08 | PfsData | Трафик, зашифрованный сессионным ключом (End-to-End). |
0x10 | AdminTunnelRequest | Запрос на открытие SPA-туннеля к панели управления. |
0x12 | AdminTunnelData | Инкапсуляция TCP-трафика панели внутри UDP. |
0x30 | CommandRequest | Отправка CLI-команды от сервера к агенту. |
0x31 | CommandResponse | Возврат результата выполнения команды на сервер. |
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) для сбора системных логов и их трансляции в веб-панель в режиме реального времени.