Быстрый старт. Начальное знакомство с SDK за один час
23 января 2025
ID 293845
Мы рекомендуем последовательно выполнить приведенные в этом разделе инструкции для быстрого знакомства с основами использования Kaspersky IoT Secure Gateway 1000 SDK. Вам потребуется компьютер с установленной операционной системой Ubuntu версии 20.04 или новее, редактор кода Visual Studio Code и приблизительно один час времени.
- Установка SDK и образа системы Kaspersky IoT Secure Gateway 1000
Вы узнаете, как установить Kaspersky IoT Secure Gateway 1000 SDK и образ системы Kaspersky IoT Secure Gateway 1000, как настроить окружение для удобного использования инструментов из состава SDK и как проверить успешность установки.
- Настройка сети для работы с эмулятором
В составе SDK есть основанный на QEMU эмулятор, позволяющий запускать и отлаживать программы в виртуальном окружении, без необходимости использования физического устройства Kraftway Рубеж-Н с системой Kaspersky IoT Secure Gateway 1000. Так как система Kaspersky IoT Secure Gateway 1000 устанавливается на устройство с несколькими сетевыми интерфейсами, то для полноценной эмуляции вам потребуется внести изменения в сетевые настройки вашей операционной системы – добавить виртуальные сетевые интерфейсы и настроить маршрутизацию.
- Запуск образа системы Kaspersky IoT Secure Gateway 1000 в эмуляторе
Вы запустите систему Kaspersky IoT Secure Gateway 1000 в эмуляторе и проверите доступность системы в виртуальной сети.
- Подключение к веб-интерфейсу системы, запущенной в эмуляторе
Вы настроите защищенный доступ к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе, и подключитесь к веб-интерфейсу системы из браузера.
- Создание и запуск программы Hello World
Вы создадите программу Hello World, которая выводит в журнал текст "HELLO WORLD", соберете и установите ее в системе Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе. В веб-интерфейсе системы вы сможете запустить программу и затем получить журнал программы.
- Запуск примеров Message Sender и Message Receiver
В состав SDK входят исходные коды демонстрационных программ (примеров). Вы соберете и запустите примеры, демонстрирующие передачу данных из внутренней сети во внешнюю. Программа Message Sender будет получать данные из эмулируемой внутренней сети (которые вы отправите с помощью утилиты
ncat) и передавать эти данные программе Message Receiver (используя библиотеку для обмена сообщениями между программами в KasperskyOS). Программа Message Receiver отправит полученные данные в эмулируемую внешнюю сеть, и вы сможете принять их утилитойncat.Помимо процедур сборки и установки программ (с которыми вы знакомитесь при создании программы Hello World), вы ознакомитесь с таким процедурами:
- настройка автозапуска программ;
- настройка маршрутизации данных между программами;
- запуск готовых наборов команд KDS для установки системных параметров, параметров программ и перезагрузки системы.
Практика 1. Установка SDK и образа системы Kaspersky IoT Secure Gateway 1000
Чтобы выполнить и проверить установку:
- Авторизуетесь на портале Kaspersky Appicenter for Developers и в разделе Средства разработки скачайте:
- Kaspersky IoT Secure Gateway 1000 SDK;
- Kaspersky IoT Secure Gateway 1000 Development Firmware.
Вы получите архивы
kisg_sdk_3.1.0.130.tgzиkisg_developer_software_3.1.0.130.tgz. - Перейдите в директорию с полученными архивами (например,
~/Загрузки), извлеките из архивов deb-пакеты с SDK и образом однонаправленного шлюза и запустите установку пакетов:cd ~/Загрузки
tar -xzf kisg_sdk_3.1.0.130.tgz KasperskyOS-IoT-Secure-Gateway-SDK_3.1.0.130_amd64.deb
tar -xzf kisg_developer_software_3.1.0.130.tgz kisg_developer_software_3.1.0.130/kasperskyos-sdk-kisg-qemu-diode-dev_3.1.0.130_amd64.deb --strip-components=1
sudo apt install ./KasperskyOS-SDK-KISG-Platform-3.1.0.130_amd64.deb ./kasperskyos-sdk-kisg-qemu-diode-dev_3.1.0.130_amd64.deb
SDK устанавливается в директорию
/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130.Обратите внимание на следующие поддиректории в директории установки SDK:
toolchain/bin– инструменты SDK.share/firmwares– образы системы.share/tls– файлы сертификатов для защищенного подключения к системе.examples/secure_gateway/sdkl3– примеры исходного кода программ, иллюстрирующих сценарии использования SDK.
Здесь мы перечислили только те директории, которые вы будете непосредственно использовать при выполнении инструкций в этом разделе справки.
- Добавьте путь до инструментов SDK в переменную окружения
$PATH:export PATH=$PATH:/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/toolchain/bin
Вы можете дописать эту команду в скрипт, выполняющийся при инициализации вашей командной оболочки (например,
~/.bashrc). Чтобы этот скрипт выполнился и значение переменной$PATHобновилось, потребуется перезапуск командной оболочки.Таким образом, вы сможете запускать инструменты SDK, не указывая полный путь до них. Основной инструмент SDK, который вам потребуется –
kosctl(KasperskyOS command line tool). - Проверьте, что инструмент
kosctlдоступен, запустив его без параметров:kosctl
kosctlотобразит в консоли собственную встроенную справку со списком доступных команд и групп команд. Вы можете получить дополнительную справочную информацию, запуская команды из списка (напримерkosctl emu). - Проверьте, какие образы устройства Kaspersky IoT Secure Gateway 1000 у вас установлены:
kosctl emu list-firmware
В полученном списке должен отображаться образ
diode-dev(однонаправленный шлюз):Using SDK '/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130'
* diode-dev
Вы можете также установить другие образы системы (как для запуска в эмуляторе, так и для прошивки физического устройства) из архива
kisg_developer_software_3.1.0.130.tgz, но в инструкциях этого раздела они не используются.
Выполнив пять шагов инструкции выше, вы научились устанавливать Kaspersky IoT Secure Gateway 1000 SDK, запускать инструмент kosctl, читать встроенную справку kosctl и получать список установленных образов системы Kaspersky IoT Secure Gateway 1000 для запуска в эмуляторе.
Практика 2. Настройка сети для работы с эмулятором
Чтобы настроить виртуальные сетевые интерфейсы для сетевого взаимодействия с эмулятором:
- Создайте файл
~/emu_net_setup.sh, сделайте файл исполняемым и откройте его в редакторе Visual Studio Code:touch ~/emu_net_setup.sh
chmod +x ~/emu_net_setup.sh
code ~/emu_net_setup.sh
- Добавьте в файл
emu_net_setup.shследующие команды и сохраните изменения:emu_net_setup.sh
#!/bin/bash
set -e
ip tuntap add tap0 mode tap user ${SUDO_USER:-$USER}
ip tuntap add tap1 mode tap user ${SUDO_USER:-$USER}
ip address add 192.168.2.1/24 dev tap0
ip address add 192.168.1.254/24 dev tap1
ip link set up dev tap0
ip link set up dev tap1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o <network_interface> -j MASQUERADE
iptables -I FORWARD 1 -i tap0 -j ACCEPT
iptables -I FORWARD 1 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 1 -i tap1 -j ACCEPT
iptables -I FORWARD 1 -o tap1 -m state --state RELATED,ESTABLISHED -j ACCEPT
dnsmasq --interface=tap0 --dhcp-range=192.168.2.100,192.168.2.110,12h --port=0
Вместо
<network_interface>подставьте имя физического сетевого интерфейса вашего компьютера, напримерeth0(проверить имена имеющихся интерфейсов можно командойip addr).Команды
ip tuntap addсоздают виртуальные сетевые интерфейсыtap0иtap1для подключения к эмулируемым сетевым интерфейсам Kaspersky IoT Secure Gateway 1000 (внешняя сеть подключается кtap0, а внутренняя – кtap1). Далее, настраивается маршрутизация с помощьюiptables. Так как Kaspersky IoT Secure Gateway 1000 по умолчанию получает параметры внешней сети по DHCP, в последней строке скрипта запускаетсяdnsmasqв режиме DHCP-сервера для интерфейсаtap0. Параметр--port=0отключает функциональность DNS-сервера уdnsmasq. - Запустите получившийся скрипт:
sudo ~/emu_net_setup.shСозданная этим скриптом сетевая конфигурация (виртуальные интерфейсы
tap0/tap1, правила маршрутизации и DHCP-сервер дляtap0) действует до перезагрузки компьютера. Чтобы восстановить конфигурацию сети после перезагрузки, запустите скриптemu_net_setup.shеще раз. - Убедитесь, что виртуальные сетевые интерфейсы добавлены:
ip addr
В списке сетевых интерфейсов должны присутствовать
tap0иtap1с указанными в скрипте параметрами:...
3: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 26:80:f6:e4:a6:3d brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 scope global tap0
valid_lft forever preferred_lft forever
inet6 fe80::2480:f6ff:fee4:a63d/64 scope link
valid_lft forever preferred_lft forever
4: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether d6:cc:e5:fa:e1:7c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.254/24 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::d4cc:e5ff:fefa:e17c/64 scope link
valid_lft forever preferred_lft forever
Выполнив четыре шага инструкции выше, вы научились создавать временную (действующую до перезагрузки) конфигурацию сетевых интерфейсов, предназначенных для взаимодействия с системой Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе.
Практика 3. Запуск образа Kaspersky IoT Secure Gateway 1000 в эмуляторе
Чтобы запустить образ системы Kaspersky IoT Secure Gateway 1000 в эмуляторе и проверить работоспособность запущенной системы:
- Инициализируйте эмулятор, используя ранее установленный образ
diode-dev:kosctl emu init diode-dev
При этом,
kosctlсоздает в текущей директории поддиректориюkos-qemu-imageи копирует в нее все файлы, нужные для запуска образаdiode-dev:kos-qemu-image/
├── assets.qcow2
├── assets.yaml
├── kos-qemu-image.romfs
├── kos-romfsloader-qemu-image
├── kos-romfsloader-qemu-image.qemu.txt
├── romfs0.sig
└── uboot.env
Файл
kos-romfsloader-qemu-image.qemu.txtсодержит ключи для запуска эмулятора. В частности, вы можете обратить внимание на ключи-netdevдля настройки виртуальных сетевых интерфейсов, соответствующих интерфейсамtap0иtap1. - Запустите эмулятор:
kosctl emu start
В окне терминала начнет отображаться процесс загрузки KasperskyOS (ниже показан небольшой фрагмент):
Booting from ROM..[BOOT ] Starting...
[BOOT ] Preparing memory...
(used)
(used)
[BOOT ] Checking memory size...
[BOOT ] Available RAM: 8190 MB.
[BOOT ] Looking up ACPI tables...
[BOOT ] Preparing loader info...
[BOOT ] Preparing ROMFS...
[BOOT ] Preparing KasperskyOS kernel...
[BOOT ] Preparing trampoline to kernel...
[BOOT ] Preparing page table...
[BOOT ] Freeing loader memory...
[BOOT ] Dump physical memory map
[BOOT ] Starting KasperskyOS...
Loading:
_ __ _ ___ ____
| |/ /__ _ ___ _ __ ___ _ __ ___| | ___ _ / _ \/ ___|
| ' // _` / __| '_ \ / _ \ '__/ __| |/ / | | | | | \___ \
| . \ (_| \__ \ |_) | __/ | \__ \ <| |_| | |_| |___) |
|_|\_\__,_|___/ .__/ \___|_| |___/_|\_\\__, |\___/|____/
|_| |___/
Built on: Jul 31 2024 00:22:19
Board: RUBEZH_N
SoC: atom_x5_e3940
ARCH: x86
Git hash: autosar-developer-x86-64-qemu-v4.2.0.4-1788-gad98462bd01dec21e647e9db186723c3ce9f23de
- Пока Kaspersky IoT Secure Gateway 1000 загружается в эмуляторе, вы можете проверить состояние эмулятора, перейдя в новое окно или вкладку терминала:
- Получите список эмуляторов от kosctl:
kosctl emu list
Вы можете работать сразу с несколькими эмуляторами, поэтому результат отображается в виде таблицы:
Found 1 emulator:
╭──────────┬───────────────────────────┬────────────┬──────┬───────────────────────┬─────────╮
│ NAME │ CONNECTIONS │ KDS_PARAMS │ PID │ IMAGE │ RUNNING │
├──────────┼───────────────────────────┼────────────┼──────┼───────────────────────┼─────────┤
│ 8rbd3tbq │ gdb = tcp- │ - │ 9364 │ /home/<username>/kos- │ True │
│ │ client://127.0.0.1:1024 │ │ │ qemu-image/kos- │ │
│ │ kds = tcp- │ │ │ romfsloader-qemu-image│ │
│ │ client://192.168.1.1:25014│ │ │ │ │
╰──────────┴───────────────────────────┴────────────┴──────┴───────────────────────┴─────────╯
Имя эмулятора в колонке
NAMEприсвоено автоматически, но вы можете указывать свое имя при запуске эмулятора, используя параметр-n(это позволяет проще различать эмуляторы, если потребуется работать с несколькими).Для запущенного эмулятора, в колонке
RUNNINGотображаетсяTrue. - Проверьте состояние сетевых интерфейсов:
ip addr
Обратите внимание, что состояние виртуальных интерфейсов
tap0иtap1изменилось по сравнению с тем, что вы получили на последнем шаге настройки сети:...
3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 36:d4:81:90:36:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 scope global tap0
valid_lft forever preferred_lft forever
inet6 fe80::34d4:81ff:fe90:361f/64 scope link
valid_lft forever preferred_lft forever
4: tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 56:77:6c:d5:ad:78 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.254/24 scope global tap1
valid_lft forever preferred_lft forever
inet6 fe80::5477:6cff:fed5:ad78/64 scope link
valid_lft forever preferred_lft forever
Теперь состояние
tap0иtap1изменилось наstate UP. Это означает, что сетевые интерфейсы эмулируемого устройства теперь активны. - Попробуйте выполнить
pingдля адреса эмулируемого устройства.ping 192.168.1.1
Первоначально настроенный статический адрес системы Kaspersky IoT Secure Gateway 1000 –
192.168.1.1. Пока загрузка системы не завершена, от192.168.1.254(ранее настроенный адрес интерфейсаtap1) могут приходить ошибкиDestination Host Unreachable. Но затем, по мере загрузки, появятся успешные ответы от системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе и ставшей доступной по адресу192.168.1.1.PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.254 icmp_seq=1 Destination Host Unreachable
From 192.168.1.254 icmp_seq=2 Destination Host Unreachable
From 192.168.1.254 icmp_seq=3 Destination Host Unreachable
From 192.168.1.254 icmp_seq=4 Destination Host Unreachable
64 bytes from 192.168.1.1: icmp_seq=5 ttl=255 time=228 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=255 time=0.440 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=255 time=0.465 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=255 time=0.541 ms
- Получите список эмуляторов от kosctl:
Выполнив три шага инструкции выше, вы научились запускать образ системы Kaspersky IoT Secure Gateway 1000 в эмуляторе, а также проверять состояние эмулятора и виртуальной сети.
Не останавливайте запущенный эмулятор, вы будете его использовать в дальнейших инструкциях этого раздела.
Практика 4. Подключение к веб-интерфейсу системы, запущенной в эмуляторе
Чтобы подключиться из браузера к веб-интерфейсу системы, запущенной в эмуляторе:
- Импортируйте файл
/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/share/tls/TlsClientAdmin.p12в хранилище сертификатов браузера.Подключение к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000 осуществляется по защищенному соединению. Поэтому, прежде чем открывать адрес
192.168.1.1, требуется добавить в браузер сертификат администратора. В Firefox (браузер по-умолчанию в Ubuntu), сертификат добавляется так:- В адресной строке браузера введите
about:preferences. - В открывшейся странице с настройками браузера в поле Найти в настройках введите
сертификаты. - В результатах поиска нажмите на кнопку Просмотр сертификатов.
- В открывшемся окне Управление сертификатами выберите вкладку Ваши сертификаты и нажмите на кнопку Импортировать.
- В открывшемся окне Импортируемый файл сертификата перейдите в директорию
/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/share/tls/и выберите файлTlsClientAdmin.p12. - В открывшемся окне Требуется пароль введите
adminadminи нажмите на кнопку Войти. - В окне Управление сертификатами нажмите на кнопку OK.

Подтверждение добавления сертификата
- В адресной строке браузера введите
- Перезапустите браузер.
- Перейдите по ссылке https://192.168.1.1/ (при первом переходе, браузер может запросить подтверждение использования ранее добавленного сертификата).
Откроется страница входа в Kaspersky IoT Secure Gateway 1000:

Страница входа в систему
- Введите имя пользователя
admin, временный парольadminadminи нажмите на кнопку Продолжить.Откроется окно Изменение учетных данных, так как временный пароль необходимо сразу же заменить на постоянный.
- Снова введите временный пароль
adminadminв поле Старый пароль. Введите собственный постоянный пароль в поле Новый пароль, повторите ввод в поле Повторите новый пароль и нажмите Сохранить.Откроется веб-интерфейс Kaspersky IoT Secure Gateway 1000:

Веб-интерфейс Kaspersky IoT Secure Gateway 1000.
Ознакомьтесь с разделами веб-интерфейса. Например, вы можете:
- Перейти в раздел Приложения и выбрать вкладку Установленные приложения. Отобразится список установленных приложений, в котором изначально будет только одно приложение Kaspersky Debug Service. Оно позволяет управлять Kaspersky IoT Secure Gateway 1000 с вашего компьютера с помощью
kosctl, например, устанавливать и запускать другие приложения. Вы подробнее ознакомитесь с этими возможностями далее. - Перейти в раздел Параметры, выбрать вкладку Диагностика и перейти по ссылке на страницу исправления неисправностей. На этой странице вы можете убедиться, что внешний сетевой интерфейс
en0автоматически получил IP-адрес из диапазона192.168.2.100–192.168.2.110(указанного вами в параметрахdnsmasqпри настройке сети). Также на этой странице вы можете использовать утилитуpingдля проверки доступности адресов интерфейсовtap0иtap1(192.168.2.1и192.168.1.254, согласно скрипту настройки сети).
- Перейти в раздел Приложения и выбрать вкладку Установленные приложения. Отобразится список установленных приложений, в котором изначально будет только одно приложение Kaspersky Debug Service. Оно позволяет управлять Kaspersky IoT Secure Gateway 1000 с вашего компьютера с помощью
Выполнив пять шагов инструкции выше, вы научились настраивать защищенное соединение и подключаться к веб-интерфейсу системы Kaspersky IoT Secure Gateway 1000, работающей в эмуляторе.
Не закрывайте вкладку браузера с веб-интерфейсом Kaspersky IoT Secure Gateway 1000. Вы будете использовать веб-интерфейс в дальнейших инструкциях этого раздела.
Практика 5. Создание и запуск программы Hello World
Чтобы собрать и запустить программу Hello World, которая выводит текст в журнал:
- Создайте новый проект по шаблону
kosctl new -t helloworld my-hello app_id=my.hello app_name="My Hello World"
Эта команда создает в текущей директории поддиректорию
my-helloс проектомmy-helloпо встроенному в SDK шаблонуhelloworld. Параметры шаблонаapp_idиapp_nameуказывают идентификатор и имя создаваемой программы. - Ознакомьтесь с исходным кодом созданной программы (например, открыв его в редакторе Visual Studio Code).
code my-hello

Новая программа в редакторе Visual Studio Code
Файлы в директории
my-hello:my-hello/
├── resources
│ └── manifest.json.in # Манифест программы.
├── src
│ ├── my_hello_world.cpp # Точка входа - функция main().
│ │ # Выполняет запись в журнал.
│ │
│ └── my_hello_world.h # Содержит определение константы с
│ # с текстом для записи в журнал.
├── test
│ ├── CMakeLists.txt # CMake-команды сборки тестов.
│ └── src
│ └── my_hello_world_test.cpp # Тесты.
│
├── CMakeLists.txt # CMake-команды сборки программы.
│
└── kos-project.yml # Параметры проекта.
- Перейдите в директорию с исходным кодом программы и выполните сборку:
cd my-hello
kosctl build
Программы для Kaspersky IoT Secure Gateway 1000 поставляются в виде KPA-пакетов – архивов, содержащих бинарные файлы, ресурсные файлы и прочие данные, необходимые для установки и запуска программы. При успешном выполнении сборки, в директории
my-helloсоздается поддиректория.build/x86_64-pc-kos-debug, в которую помещается файл KPA-пакетаmy_hello_world.kpacи другие артефакты сборки программы Hello World. - Установите вашу программу:
kosctl app install .build/x86_64-pc-kos-debug/my_hello_world.kpac
Если образ Kaspersky IoT Secure Gateway 1000 запущен в эмуляторе, программа будет установлена.
- Проверьте, что ваша программа успешно установлена и запустите ее:
- Перейдите в окно браузера с веб-интерфейсом Kaspersky IoT Secure Gateway 1000.
- Перейдите в раздел Приложения и выберите вкладку Установленные приложения.
- Нажмите на кнопку Запустить в строке с названием программы My Hello World.

Программа My Hello World в списке установленных приложений.
Так как программа только выводит текст в журнал и сразу завершает работу, приложение будет в состоянии Остановлено сразу после запуска.
Вы также можете:
- получить список установленных программ с помощью команды
kosctl app list(отображает список идентификаторов установленных программ); - запустить программу с помощью команды
kosctl app start my.hello(запускает программу с указанным идентификаторомmy.hello).
- Проверьте, что программа успешно вывела заданный текст в журнал:
- В разделе Приложения выберите вкладку Журнал приложений.
- Нажмите на ссылку Скачать в строке с названием программы My Hello World.
- В списке загрузок браузера найдите архив
log_files_My Hello World.tar.gzи распакуйте его. - Просмотрите содержимое файла
my.hello.logиз загруженного архива.

Получение журнала программы.
Вы также можете найти сообщение программы в окне терминала, в котором запущен эмулятор. Сообщение выполнено псевдографикой, чтобы его было проще обнаружить среди других сообщений.
Выполнив шесть шагов инструкции выше, вы научились создавать проект с программой по шаблону, устанавливать и запускать программу в эмуляторе, а также просматривать журнал программы.
Практика 6. Запуск примеров Message Sender и Message Receiver
Примеры Message Sender и Message Receiver демонстрируют следующий сценарий передачи данных:
Сценарий передачи данных
- Программа Message Sender слушает порт
48051на внутреннем сетевом интерфейсе с адресом192.168.1.1(подключен кtap1). - При получении данных из внутреннего сетевого интерфейса, Message Sender отправляет их программе Message Receiver (используя библиотеку для обмена сообщениями между программами в KasperskyOS).
- Программа Message Receiver отправляет данные через внешний сетевой интерфейс (подключен к
tap0) в порт48061хоста192.168.2.1по защищенному соединению (c использованием сертификата).
Чтобы запустить демонстрацию передачи данных из внешней сети во внутреннюю с использованием примеров Message Sender и Message Receiver:
- Скопируйте директорию
/opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/examples/secure_gateway/sdkl3в домашнюю директорию:cp -r /opt/KasperskyOS-SDK-KISG-Platform-3.1.0.130/examples/secure_gateway/sdkl3 ~/sdkl3
Директория
sdkl3содержит примеры, иллюстрирующие сценарии использования SDK. Изучая их и экспериментируя, вы будете вносить изменения в код и конфигурационные файлы. Кроме того, при сборке примера осуществляется запись в директорииsdkl3/platform-buildиsdkl3/applications/<директория_примера>/.build. Создание копии директорииsdkl3позволяет:- Не модифицировать файлы и директории, созданные при установке SDK из deb-пакета. Такая модификация может привести к нарушению корректной работы SDK и невозможности полного удаления SDK командой
apt remove. - Сохранить оригинальное состояние директории
sdkl3, к которому можно будет вернуться без переустановки SDK. - Не выполнять все дальнейшие действия с root-правами.
- Не модифицировать файлы и директории, созданные при установке SDK из deb-пакета. Такая модификация может привести к нарушению корректной работы SDK и невозможности полного удаления SDK командой
- Перейдите в скопированную директорию:
cd ~/sdkl3
Обратите внимание на содержимое этой директории:
sdkl3/
├── applications/
│ ├── hello_world_package/ # Код программы Hello World.
│ ├── message_receiver_package/ # Код программы Message Receiver.
│ ├── message_sender_package/ # Код программы Messаge Sender.
│ └── ...
├── playbooks/ # Наборы команд для выполнения в Kaspersky IoT Secure Gateway 1000.
└── ...
Дальнейшие шаги выполняйте в директории
~/sdkl3. - Соберите и установите программы Message Sender и Message Receiver:
pushd applications/message_sender_package
kosctl build -b type=release
kosctl app install .build/x86_64-pc-kos-release/messagesender.kpac
popd
pushd applications/message_receiver_package
kosctl build -b type=release
kosctl app install .build/x86_64-pc-kos-release/messagereceiver.kpac
popd
- Создайте директорию для системных конфигурационных файлов и скопируйте в нее файл
applications/message_sender_package/resources/configs/TrafficControllerConfig:mkdir configs
cp applications/message_sender_package/resources/configs/TrafficControllerConfig configs/
В дальнейшем, вы отправите файлы из этой директории в Kaspersky IoT Secure Gateway 1000.
- Создайте и откройте в редакторе файлы
configs/RoutesConfigиconfigs/LauncherConfig:touch configs/RoutesConfig
touch configs/LauncherConfig
code configs/RoutesConfig
code configs/LauncherConfig
- Добавьте в эти файлы следующий JSON-код и сохраните изменения:
configs/RoutesConfig
{
"routes": [
{
"active": true,
"destination": {
"application": "kaspersky.kisg.messagereceiver",
"endpoint": "ReceiverEndpoint1"
},
"source": {
"application": "kaspersky.kisg.messagesender",
"endpoint": "SenderEndpoint1"
}
}
]
}
configs/LauncherConfig
{
"startupSettings": {
"kaspersky.kisg.kds": {
"launchRule": "auto",
"logLevel": 4,
"restartPolicy": "DO_NOT_RESTART"
},
"kaspersky.kisg.messagesender": {
"launchRule": "auto",
"restartPolicy": "DO_NOT_RESTART"
},
"kaspersky.kisg.messagereceiver": {
"launchRule": "auto",
"restartPolicy": "DO_NOT_RESTART"
}
}
}
Файл
configs/RoutesConfigсодержит параметры маршрутизации данных между программами – добавляет маршрут от Message Sender к Message Receiver.Файл
configs/LauncherConfigсодержит параметры запуска программ – включает автозапуск Message Sender и Message Receiver. Программа Kaspersky Debug Service (KDS) добавлена в автозапуск по умолчанию (вы могли это ранее заметить при просмотре списка Установленные приложения в веб-интерфейсе). Правило для автозапуска KDS добавлено вconfigs/LauncherConfigчтобы эта программа продолжала запускаться автоматически после применения новой конфигурации. - Создайте сертификат для
192.168.2.1(адрес интерфейсаtap0вашего компьютера) в директорииca_cert:openssl genrsa -out my_key.key
mkdir ca_cert
openssl req -x509 -new -key my_key.key -days 30 -subj "/CN=192.168.2.1" -out ca_cert/my_cert.crt
Программа Message Receiver будет пересылать данные на
192.168.2.1по защищенному соединению с использованием этого сертификата. - Запустите наборы команд из директории
playbooksв указанном ниже порядке# Настройка установленных программы, с использованием файлов
# applications/*_package/resources/configs/app1.
kosctl play playbooks/configure_applications.py
# Установка корневого сертификата для Message Receiver.
# Используется сертификат из директории ca_cert.
kosctl play playbooks/set_app_ca_cert.py
# Настройка системных параметров, используя файлы
# configs/LauncherConfig, configs/RoutesConfig и configs/TrafficControllerConfig.
kosctl play playbooks/set_system_configs.py
# Перезапуск Kaspersky IoT Secure Gateway 1000.
kosctl play playbooks/reboot.py
После перезапуска системы, все готово для демонстрации передачи данных. Вы можете убедиться в том что система перезагрузилась и новые параметры применены, зайдя в веб-интерфейс и проверив состояние программ Message Sender и Messаge Receiver в списке Установленные приложения (программы должны быть запущены).
- Запустите сервер, слушающий порт
48061на интерфейсеtap0. Для этого используйте инструментncat:ncat -l -k 192.168.2.1 48061 --ssl-key my_key.key --ssl-cert ca_cert/my_cert.crt
Инструмент
ncatбудет ожидать данные от Message Receiver и отображать их в терминале.Если
ncatне установлен, установите его командойsudo apt install ncatи повторите запуск сервера. - В новом окне терминала запустите отправку данных в порт
48051хоста192.168.1.1, который слушает Message Sender:ncat 192.168.1.1 48051
Теперь, если вы будете печатать любой текст в этом окне терминала, текст будет дублироваться в окне терминала с запущенным сервером
ncat:Отправка
$ ncat 192.168.1.1 48051
Привет из локальной сети!
Как дела снаружи?
Получение
$ ncat -l -k 192.168.2.1 48061 --ssl-key my_key.key --ssl-cert ca_cert/my_cert.crt
Привет из локальной сети!
Как дела снаружи?
Также вы можете просмотреть отладочные сообщения с пересылаемым текстом в журналах программ Message Sender и Message Receiver.
kaspersky.kisg.messagesender.log (фрагмент)
[16-12-2024 10:35:09][Info][kaspersky.kisg.messagesender][4712:4713][][tcp_server.cpp:StartAccept:104] Listening SenderEndpoint1: address 192.168.1.1, port 48051
...
[16-12-2024 10:40:48][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():131] Endpoint SenderEndpoint1 have accepted new connection
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():152] Server endpoint SenderEndpoint1 received 47 bytes: Привет из локальной сети!
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:376] New proxy for appId: kaspersky.kisg.messagereceiver
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:381] Send 47 bytes to appId kaspersky.kisg.messagereceiver endpoint ReceiverEndpoint1
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagesender][4712:5061][][tcp_server.cpp:operator():152] Server endpoint SenderEndpoint1 received 32 bytes: Как дела снаружи?
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagesender][4712:5061][][message_sender.cpp:SendDataByRoute:381] Send 32 bytes to appId kaspersky.kisg.messagereceiver endpoint ReceiverEndpoint1
kaspersky.kisg.messagereceiver.log (фрагмент)
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:Consume:105] Got request from endpoint: SenderEndpoint1 to endpoint ReceiverEndpoint1
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:SendMessage:139] transfer payload = Привет из локальной сети!
...
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:34] Send to host: 192.168.2.1, port: 48061, resolved address: 192.168.2.1
[16-12-2024 10:41:06][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:40] Client sent: Привет из локальной сети!
...
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:Consume:105] Got request from endpoint: SenderEndpoint1 to endpoint ReceiverEndpoint1
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][message_receiver.cpp:SendMessage:139] transfer payload = Как дела снаружи?
...
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:34] Send to host: 192.168.2.1, port: 48061, resolved address: 192.168.2.1
[16-12-2024 10:41:14][Info][kaspersky.kisg.messagereceiver][4631:4987][][tcp_client.cpp:Send:40] Client sent: Как дела снаружи?
Выполнив десять шагов инструкции выше, вы научились запускать демонстрацию передачи данных из внутренней сети во внешнюю. Далее, вы можете ознакомиться с исходными кодами программ Message Sender и Message Receiver и использовать их как основу при создании собственных программ для Kaspersky IoT Secure Gateway 1000, которые обмениваются данными между собой и работают с сетью.