Содержание
Настройка шлюза
Сценарий настройки передачи данных от сервера OPC UA в MQTT-брокер через Kaspersky IoT Secure Gateway 100 состоит из следующих этапов:
- Генерация криптографического ключа и сертификатов для подключения по протоколу OPC UA
Генерация
и требуется, если используется защищенное соединение . - Настройка узлов передачи данных по протоколу OPC UA на сервере OPC UA
Вы можете ознакомиться со спецификацией протокола OPC UA на сайте разработчика. В Kaspersky IoT Secure Gateway 100 версии 2.0 поддерживается протокол OPC UA версии 1.04.
- Генерация криптографического ключа и сертификатов для подключения по протоколу MQTT
Вам потребуется сгенерировать криптографический ключ и сертификат для клиента
, а также подготовить файл, содержащий , которыми производилась подпись сертификата сервера. - Настройка параметров Kaspersky IoT Secure Gateway 100 для передачи данных от сервера OPC UA в MQTT-брокер
Подробные инструкции, относящиеся к этому шагу, приведены в этом разделе справки.
Извлечение и установка карты памяти microSD
Карта microSD установлена в слот для карт microSD устройства Siemens SIMATIC IOT2040 и содержит следующие файлы:
- конфигурационные файлы с параметрами Kaspersky IoT Secure Gateway 100;
- файлы журнала состояния Kaspersky IoT Secure Gateway 100;
- файл с информацией о стороннем коде.
Для доступа к этим файлам, вам нужно извлечь карту microSD из устройства и подключить ее к компьютеру с установленной операционной системой Linux. Для продолжения работы шлюза, следует поместить карту microSD обратно.
Извлечение и установку карты памяти microSD следует производить при отключенном питании устройства Siemens SIMATIC IOT2040.
Чтобы извлечь и затем установить обратно карту памяти microSD:
- Откройте правую крышку устройства.
- Сдвиньте фиксатор слота карты памяти вниз и откройте фиксатор.
- Извлеките карту microSD.
- Поместите карту microSD обратно, закройте фиксатор и сдвиньте фиксатор вверх.
Извлечение и установка карты памяти microSD
Расположение файлов на карте памяти microSD
Для изменения параметров Kaspersky IoT Secure Gateway 100, вам потребуется извлечь карту microSD из слота microSD устройства Siemens SIMATIC IOT2040, подключить карту microSD к компьютеру с операционной системой Linux, изменить содержимое конфигурационных файлов и установить карту microSD обратно.
Карта памяти microSD включает пять разделов (см. рис. ниже):
HW-BOOT
– содержит загрузочный образ и текстовый файл с информацией о стороннем коде.HW-LOG
– содержит файлы журнала состояния и файл.log
c параметрами журнала состояния.HW-IDS
– содержит:- файл
OpcUaClientSettings-0.json
с параметрами получения данных по протоколу OPC UA; - файл
MqttPublisherSettings-0.json
с параметрами отправки данных по протоколу MQTT; - файлы сертификатов и криптографических ключей.
- файл
HW-INW
– содержит файл с параметрами внутренней сети.HW-ENW
– содержит файл с параметрами внешней сети.Расположение файлов на карте памяти microSD
Подключение к сети и настройка сетевых параметров
Для подключения устройства к внешней и внутренней сети требуется установить физические подключения (по кабелю RJ45) и при необходимости настроить параметры внешней и внутренней сети.
Физическое подключение к сети
Чтобы подключить Kaspersky IoT Secure Gateway 100 к сети передачи данных:
- Подключите сетевой кабель внутренней сети (в которой находится сервер OPC UA) к порту PN/IE LAN X2 P1 устройства.
- Подключите сетевой кабель внешней сети (в которой находится ) к порту PN/IE LAN X1 P1 устройства.
Схема расположения портов Ethernet на устройстве Siemens SIMATIC IOT2040
Автоматическое получение параметров сети
По умолчанию, Kaspersky IoT Secure Gateway 100 поставляется с динамической (DHCP) конфигурацией для внутренней и внешней сети. В этой конфигурации для автоматического получения параметров сети требуется наличие настроенного сервера DHCP, расположенного в той же сети.
Если сервер DHCP отсутствует или вы по каким-либо причинам не хотите использовать динамическую конфигурацию сети, используйте статическую конфигурацию сети.
Настройка статических параметров сети
Чтобы настроить статические параметры внешней и внутренней сети:
- Создайте два отдельных конфигурационных файла с названием
dhcpcd.conf
на карте microSD:- для внешней сети – в директории
/etc
разделаHW-ENW
; - для внутренней сети – в директории
/etc
разделаHW-INW
.
- для внешней сети – в директории
- В файлах
dhcpcd.conf
укажите параметры сети в соответствии с документацией dhcpd.Пример конфигурационного файла, в котором указаны параметры для внешней или внутренней сети:
static ip_address=192.168.1.177/23
static routers=192.168.1.1
- Сохраните изменения.
Настройка соединения по протоколу OPC UA
Kaspersky IoT Secure Gateway 100 получает данные от сервера OPC UA, расположенного во внутренней сети организации, по протоколу OPC UA, описанному в спецификации OPC Unified Architecture (унифицированная архитектура OPC). Вы можете ознакомиться со спецификацией протокола OPC UA на сайте разработчика. Kaspersky IoT Secure Gateway 100 поддерживает протокол OPC UA версии 1.04.
Защита соединения по протоколу OPC UA
Чтобы использовать защищенное соединение клиента OPC UA c сервером OPC UA:
- Скопируйте сертификат клиента OPC UA в директорию
/app/Core/pki/certs/transfer/opc_ua/client
разделаHW-IDS
карты microSD. - Скопируйте сертификат сервера OPC UA в директорию
/app/Core/pki/certs/transfer/opc_ua/client
разделаHW-IDS
карты microSD. - Скопируйте закрытый криптографический ключ клиента OPC UA в директорию
/app/Core/pki/private/transfer/opc_ua/client
разделаHW-IDS
карты microSD.
Передача данных по протоколу OPC UA возможна и без использования защищенного соединения. Но в этом случае не обеспечивается безопасное подключение клиента OPC UA к серверу OPC UA. Мы не рекомендуем использовать такой режим работы Kaspersky IoT Secure Gateway 100.
В началоНастройка получения данных по протоколу OPC UA
Чтобы настроить получение данных по протоколу OPC UA:
- Создайте конфигурационный файл
OpcUaClientSettings-0.json
. - В файле
OpcUaClientSettings-0.json
укажите параметры OPC UA и их значения, соблюдая синтаксис JSON. - Поместите конфигурационный файл в директорию
/app/Core/config/transfer/opc_ua/client
в разделеHW-IDS
карты microSD.
Пример конфигурационного файла:
OpcUaClientSettings-0.json
{
"id": 0,
"name": "Kaspersky IoT Secure Gateway 100 OPC UA Client",
"description": "Collects data from CNC by Kaspersky IoT Secure Gateway 100",
"url": "opc.tcp://192.168.177.7:4840",
"readingCycle": 1,
"security": {
"mode": "SignAndEncrypt",
"policy": "Basic256Sha256",
"clientPkiData": {
"certificate": "opc-ua-client.crt",
"privateKey": "opc-ua-client.key"
},
"trustList": ["opc-ua-server.crt"]
},
"userCredentials":
{
"username": "KISG100",
"password": "0R20jN#yZd~zaLKe?2J#@~|YC"
},
"heartbeat": {
"id": 0,
"name": "Heartbeat",
"timeout": 60
},
"nodes": [
{
"id": 1,
"name": "Temperature",
"nodeId": "ns=1;s=VariableTemperature"
},
{
"id": 2,
"name": "Speed",
"nodeId": "ns=2;i=2045"
}
]
}
Для редактирования файлов в формате JSON мы рекомендуем использовать текстовый редактор с поддержкой подсветки синтаксиса JSON. Это позволит избежать возможных ошибок (например, непарных скобок).
Описание параметров в конфигурационном файле OpcUaClientSettings-0.json
Параметры, отмеченные как обязательные, следует явно указать. Прочие параметры настраивать необязательно. Для необязательных параметров, не включенных в конфигурационный файл, может использоваться значение по умолчанию, предусмотренное протоколом OPC UA.
Параметры в файле OpcUaClientSettings-0.json
Имя параметра |
Обязательный параметр |
Описание |
Возможные значения и примечания |
---|---|---|---|
|
Да |
Идентификатор клиента OPC UA, принимающего данные от сервера OPC UA. |
Значение этого параметра должно совпадать со значением параметра |
|
Да |
Имя клиента OPC UA, принимающего данные от сервера OPC UA. |
Пример: |
|
|
Описание клиента OPC UA, принимающего данные от сервера OPC UA. |
Пример: |
|
Да |
Адрес сервера OPC UA. |
Пример: Порт 4840 используется по умолчанию. |
|
Нет |
Частота считывания данных шлюзом (в секундах). |
Целое значение не меньше
|
|
Да |
Блок . Содержит параметрыmode , policy , trustList и блок параметров clientPkiData .
|
В блоке параметров Если не требуется настраивать параметры безопасности, укажите |
|
Нет |
Режим управления безопасностью подключения клиентского приложения. |
|
|
Нет |
Название , используемой на сервере OPC UA. |
Политика безопасности |
|
Нет |
Блок параметров, содержащий сертификат и закрытый криптографический ключ клиента OPC UA для безопасного соединения. |
Блок параметров Блок параметров Для безопасного взаимодействия по OPC UA вам потребуется создать закрытый криптографический ключ и сертификат и добавить их в конфигурацию клиента и сервера. При генерации сертификатов для соединения клиента (Kaspersky IoT Secure Gateway 100) и сервера OPC UA удостоверьтесь, что сертификаты удовлетворяют следующим требованиям:
|
|
Нет |
Имя файла сертификата. |
|
|
Нет |
Имя файла закрытого криптографического ключа. |
|
|
Нет |
Массив, содержащий имена файлов доверенных сертификатов. |
Если конфигурация сервера OPC UA предполагает использование собственного списка доверенных сертификатов, добавьте сертификат клиента в этот список. Если проверка сертификатов не требуется, укажите для этого параметра значение |
|
Нет |
Блок параметров с учетными данными клиента OPC UA на сервере OPC UA. |
|
|
Нет |
Имя учетной записи пользователя для авторизации на сервере OPC UA. |
|
|
Нет |
Пароль учетной записи пользователя для авторизации на сервере OPC UA. |
|
|
Нет |
Блок параметров, содержащий настройки сигнала работоспособности Kaspersky IoT Secure Gateway 100, генерируемый клиентом OPC UA. |
Если вы не добавите параметр |
|
Нет |
Идентификатор узла данных. |
|
|
Нет |
Имя узла данных. |
Пример: |
|
Нет |
Период в секундах между генерацией сигналов работоспособности. |
Требуется указать целое значение не меньше |
|
Да |
Блок параметров узлов данных. |
Блок параметров Заполняется для каждого узла данных. Идентификатор и имя узла данных требуются для построения маршрутов и передачи данных от сервера OPC UA в MQTT-брокер. |
|
Да |
Идентификатор исходящего порта. |
|
|
Да |
Имя исходящего порта. Должно совпадать с именем целевого порта topics в конфигурационном файле MqttPublisherSettings-0.json .
|
Пример: Для корректной передачи данных от сервера OPC UA в MQTT-брокер, требуется сопоставить OPC UA и соответствующие им MQTT-топики. Сопоставление осуществляется по значениюname .
|
|
Да |
Идентификатор узла данных. |
|
|
Да |
Идентификатор пространства имен сервера OPC UA. |
|
|
Да |
Идентификатор узла данных в пространстве имен сервера OPC UA. |
Возможны два типа идентификатора:
|
Особенности настройки параметров безопасности OPC UA
Kaspersky IoT Secure Gateway 100 не устанавливает соединение по протоколу OPC UA в следующих случаях:
- сервер не имеет сертификата и не разрешено небезопасное подключение;
- в параметре
trustList
не указан сертификат сервера и не установлено значениеAllowAll
; - сертификат клиента, сертификат сервера или криптографические ключи не удовлетворяют параметрам выбранной политики безопасности.
Клиент и сервер OPC UA устанавливают небезопасное соединение в следующих случаях:
- установлено значение
null
для блоков параметровsecurity
иuserCredentials
, и сервер поддерживает такое соединение; - установлено значение
Any
для полейmode
иpolicy
, и сервер предлагает выбор небезопасного соединения.
Любое понижение параметров безопасности снижает защищенность соединения. Например, следующие настройки параметров снижают защищенность соединения по протоколу OPC UA:
- Использование значения
null
для блока параметровsecurity
приводит к использованию соединения без шифрования и подписи. - Использование значения
AllowAll
для поляtrustList
отключает проверку сертификата сервера. - Использование значения
null
для блока параметровuserCredentials
отключает возможность подключения к серверу с использованием имени пользователя и пароля. - Значения
Basic128Rsa15
иBasic256
для поляpolicy
считаются устаревшими в спецификации протокола OPC UA версии 1.4, так как алгоритм хеширования SHA-1 больше не считается безопасным. - Использование значения
None
для полейpolicy
илиmode
приводит к:- использованию соединения без шифрования и подписи данных;
- передаче пароля серверу в открытом виде.
Настройка соединения по протоколу MQTT
Kaspersky IoT Secure Gateway 100 передает данные в MQTT-брокер по протоколу MQTT. Вы можете ознакомиться со спецификацией протокола MQTT на сайте разработчика. В Kaspersky IoT Secure Gateway 100 версии 2.0 поддерживается протокол MQTT версии 3.1.1.
Защита соединения по протоколу MQTT
Чтобы использовать защищенную передачу данных по протоколу MQTT:
- Скопируйте файл, содержащий цепочку сертификатов клиента MQTT (цепочка может состоять из одного листового сертификата клиента) в директорию
/app/Core/pki/certs/transfer/mqtt/publisher
разделаHW-IDS
карты microSD. - Скопируйте файл, содержащий цепочку сертификатов, которыми производилась цифровая подпись сертификата сервера в директорию
/app/Core/pki/certs/transfer/mqtt/publisher
разделаHW-IDS
карты microSD. - Скопируйте файл закрытого криптографического ключа клиента MQTT в директорию
/app/Core/pki/private/transfer/mqtt/publisher
разделаHW-IDS
карты microSD.
Используемые клиентом MQTT сертификаты и криптографические ключи должны быть в формате PEM. Длина ключа сертификата клиента должна составлять не менее 2048 бит.
В началоНастройка отправки данных по протоколу MQTT
Чтобы настроить отправку данных по протоколу MQTT:
- Создайте файл
MqttPublisherSettings-0.json
. - В файле
MqttPublisherSettings-0.json
укажите параметры MQTT и их значения, соблюдая синтаксис JSON. - Поместите конфигурационный файл в директорию
/app/Core/config/transfer/mqtt/publisher
в разделHW-IDS
карты microSD.
Пример конфигурационного файла:
MqttPublisherSettings-0.json
{
"id": 0,
"name": "Kaspersky IoT Secure Gateway 100 MQTT Publisher",
"description": "Transfer data to MQTT Broker by Kaspersky IoT Secure Gateway 100",
"clientId": "KISG100",
"serverUri": "ssl://192.168.188.8:8883",
"security": {
"clientPkiData": {
"certificate": "mqtt-publisher.crt",
"privateKey": "mqtt-publisher.key"
},
"trustStore": ["ca-bundle.crt"]
},
"userCredentials":{
"username": "KISG100",
"password": "4vRXE84zsCy8bLQcZi2HH82TmC"
},
"lastWill": {
"topicName": "LastWill",
"message": "LastMessage"
},
"keepAlive": 800,
"qualityOfService": 1,
"topics": [
{
"id": 0,
"name": "Heartbeat",
"topicName": "Heartbeat"
},
{
"id": 1,
"name": "Temperature",
"topicName": "Temperature"
},
{
"id": 2,
"name": "Speed",
"topicName": "Speed"
}
]
}
Для редактирования файлов в формате JSON мы рекомендуем использовать текстовый редактор с поддержкой подсветки синтаксиса JSON. Это позволит избежать возможных ошибок (например, непарных скобок).
Описание параметров в конфигурационном файле MqttPublisherSettings-0.json
Параметры, отмеченные как обязательные, следует явно указать. Прочие параметры настраивать необязательно. Для необязательных параметров, не включенных в конфигурационный файл, может использоваться значение по умолчанию, предусмотренное протоколом MQTT.
Параметры в файле MqttPublisherSettings-0.json
Имя параметра |
Обязательный параметр |
Описание |
Возможные значения и примечания |
---|---|---|---|
|
Да |
Идентификатор клиента MQTT, который будет отправлять данные в MQTT-брокер. |
Значение этого параметра должно совпадать со значением параметра |
|
Да |
Имя клиента MQTT, который будет отправлять данные в MQTT-брокер. |
Пример: |
|
Нет |
Описание клиента MQTT, который будет отправлять данные в MQTT-брокер. |
Пример: |
|
Нет |
Уникальный идентификатор клиента MQTT. |
Внутренняя архитектура Kaspersky IoT Secure Gateway 100 предполагает взаимодействие между принимающим и отправляющим концентратором. Параметр Значение |
|
Да |
Адрес сервера, к которому будет подключаться клиент MQTT. |
Пример:
|
|
Да |
Блок параметров для настройки безопасного соединения. Содержит блоки параметров |
Блок параметров В блоке параметров |
|
Да |
Блок параметров с именами файлов сертификата и закрытого криптографического ключа клиента MQTT для безопасного соединения. |
Блок параметров |
|
Да |
Имя файла, содержащего цепочку сертификатов до сертификата клиента MQTT. |
|
|
Да |
Имя файла закрытого криптографического ключа. |
Длина ключа должна составлять не менее 2048 бит. |
|
Да |
Массив, который содержит имя файла, содержащего цепочку сертификатов до сертификата MQTT-брокера. |
Имя файла, содержащего цепочку сертификатов до сертификата удостоверяющего центра, который подписывал сертификат MQTT-брокера. |
|
Да |
Блок параметров, который отвечает за аутентификацию клиента MQTT на сервере. |
|
|
Нет |
Имя учетной записи пользователя для авторизации на сервере MQTT. |
|
|
Нет |
Пароль учетной записи пользователя для авторизации на сервере MQTT. |
|
|
Нет |
Блок параметров для настройки сообщения, которое уведомляет о некорректном отключении клиента (LWT-сообщение). |
Блок параметров Клиент может указать LWT-сообщение при первом подключении к MQTT-брокеру. MQTT-брокер хранит это сообщение до тех пор, пока не обнаружит некорректное отключение клиента, а при обнаружении – отправит LWT-сообщение всем клиентам, подписавшимся на получение такого сообщения. При корректном отключении клиента, MQTT-брокер не отправляет такое сообщение. |
|
Нет |
Название MQTT-топика, который определяет информационный канал, на котором публикуется LWT-сообщение. |
Пример: |
|
Нет |
Содержание LWT-сообщения. |
Пример: |
|
Нет |
Интервал, в течение которого MQTT-брокер может не получать сообщения от клиента MQTT и при этом не разрывать соединение. |
Значение по умолчанию: Возможные значения: Если значение Сервер может отключить клиента, который, по его мнению, неактивен или не отвечает на запросы, в любое время, независимо от значения |
|
Нет |
Параметр, определяющий гарантию отправки сообщений. |
Соглашение между отправителем сообщения (издателем) и получателем сообщения (подписчиком), которое определяет гарантию доставки для конкретного сообщения. В спецификации MQTT определены три уровня
Значение по умолчанию: |
|
Да |
Массив из блоков параметров MQTT-топиков. |
Массив блоков параметров Отдельный блок параметров в массиве заполняется для каждого MQTT-топика. |
|
Да |
Идентификатор целевого порта. |
Пример: |
|
Да |
Имя целевого порта. Должно совпадать с именем исходящего порта |
Пример: Для корректной передачи данных от сервера OPC UA в MQTT-брокер, требуется сопоставить MQTT-топики и соответствующие им узлы данных OPC UA. Сопоставление осуществляется по значению |
|
Да |
Название MQTT-топика. |
Пример: См. также: Особенности заполнения названий MQTT-топиков. |
Особенности заполнения названий MQTT-топиков
При заполнении значений topicName
учитывайте следующие особенности:
- В названиях MQTT-топиков нельзя использовать подстановочные знаки. Также мы не рекомендуем использовать в названиях MQTT-топиков знак
$
. - Название MQTT-топика не может быть пустым (должно содержать хотя бы один символ).
- Названия MQTT-топиков чувствительны к регистру.
- Названия MQTT-топиков могут содержать символ пробела.
- MQTT-топики, различающимися только символом
/
в начале или в конце названия, являются разными MQTT-топиками. - Допустимо название MQTT-топика, состоящее только из символа
/
. - Название MQTT-топика не должно содержать нулевой символ (NUL).
- Названия MQTT-топиков представляют собой строки в кодировке UTF-8, они не должны быть объемом более 65535 байт.
Действия при отзыве сертификата MQTT-брокера
При отзыве сертификата MQTT-брокера, вам потребуется получить новый сертификат у администратора MQTT-брокера и заменить отозванный сертификат. Если этого не сделать, Kaspersky IoT Secure Gateway 100 будет доверять как отозванному сертификату, так и новому, пока не истечет срок действия отозванного сертификата. При этом возможна ситуация, когда соединение, установленное по безопасному каналу, в действительности не будет являться безопасным.
Чтобы использовать новый сертификат MQTT-брокера вместо отозванного:
- В директории
/app/Core/pki/certs/transfer/mqtt/publisher
разделаHW-IDS
карты microSD удалите файл, указанный в параметреtrustStore
конфигурационного файла MqttPublisherSettings-0.json. - В параметре
trustStore
конфигурационного файлаMqttPublisherSettings-0.json
укажите имя файла нового сертификата. - Скопируйте в директорию
/app/Core/pki/certs/transfer/mqtt/publisher
разделаHW-IDS
файл нового сертификата.