В первой части нашей статьи мы изучили методы обеспечения информационной безопасности на уровне операционной системы контроллера. Сейчас мы обсудим средства безопасности в среде программирования CODESYS V3.5.
Криптографическая защита и сертификаты
Через меню «Вид — Безопасность» пользователь может настроить следующие параметры:
шифрование данных между средой разработки и контроллером;
- шифрование файлов проекта;
- использование электронной подписи для проектов, библиотек и операций с контроллером, таких как загрузка проекта или создание загрузочного приложения;
- сертификаты безопасности (раздел «Устройства»).
- Эти функции позволяют обеспечить конфиденциальность и подтверждение подлинности файлов. Например, если злоумышленник заменит приложение в контроллере, оно не запустится из-за отсутствия цифровой подписи.
Сертификаты могут быть созданы для следующих сервисов:
- веб-визуализации («Web Server»);
- сервера OPC UA («OPC UA Server»);
- зашифрованного обмена данными с контроллером («Encrypted Communication»);
- создания зашифрованного приложения («Encrypted Application»).

При использовании OPC UA сертификаты применяются следующим образом:
- Когда OPC UA клиент (например, SCADA-система) подключается к контроллеру, он отправляет свой сертификат.
- Этот сертификат отображается на вкладке «Устройства» в разделе «Карантинные сертификаты».
- Пользователь должен переместить его в раздел «Доверенные сертификаты», чтобы разрешить подключение к серверу OPC UA с клиента. Это гарантирует, что несанкционированный доступ будет предотвращен.
Генерация сертификата – ресурсоемкая операция, которая может занять от нескольких десятков минут до часа в некоторых случаях.
Настройка сервера веб-визуализации выполняется в веб-конфигураторе контроллера на вкладке «ПЛК — Настройки». Здесь можно:
- Выбрать тип соединения (например, для обеспечения доступа только через защищенный протокол HTTPS, нужно выбрать HTTPS; по умолчанию используется HTTP и HTTPS, позволяющие как защищенное, так и незащищенное соединение).
- Указать порт веб-сервера.
- Сгенерировать сертификат (аналогично команде из меню «Вид — Безопасность — Устройства» в среде CODESYS).
- Импортировать предварительно созданный сертификат.

Защита проекта
Файл проекта CODESYS может представлять собой интеллектуальную собственность компании, конкретного разработчика или заказчика. Для обеспечения его безопасности используется меню «Вид — Безопасность — Проект — Технология», где доступны три способа шифрования:
- Пароль: для открытия файла проекта требуется ввод пароля;
- Электронный ключ: для открытия файла проекта необходимо подключить специальный USB-ключ к ПК (в настоящее время CODESYS рассматривает этот метод защиты как устаревший и рекомендует использовать сертификаты);
- Сертификаты: для открытия файла проекта на ПК должен быть установлен соответствующий сертификат, предоставляемый разработчиком проекта.

По умолчанию шифрование отключено; используется режим Проверка целостности. В этом режиме при открытии CODESYS проверяет корректность файла проекта. Если она нарушена (например, если в процессе работы над проектом пропало питание ПК), то проект будет считаться поврежденным и CODESYS не будет пытаться восстановить его.
Всегда рады помочь вам решить любые вопросы.
Ваше мнение важно для нас. Если у вас есть вопросы, свяжитесь с нами.
При этом в режиме Без шифрования CODESYS предложит попробовать восстановить проект, и в ряде случаев эта процедура пройдёт успешно – так что рекомендуется использовать именно этот режим.

Кроме того, имеется возможность ограничить доступ к конкретным объектам проекта (функциональным блокам, визуализациям и т. д.). Это полезно в тех случаях, когда проект передается сторонним лицам, которые должны иметь возможность вносить изменения только в конкретные его фрагменты. Подробнее видео.
Защита доступа к контроллеру
Получение доступа к контроллеру позволяет загрузить (и выгрузить) приложение CODESYS, остановить его выполнение, получить доступ к логам и другим операциям, что обычно является одной из основных целей злоумышленника.
Для защиты от несанкционированного доступа в CODESYS на вкладке «Device — Пользователи и группы» можно создать пользователей, установить для них логины и пароли, а на вкладке «Device — Права доступа» указать операции, разрешенные для пользователей определенных групп.
Если пользователь был создан по ошибке и его необходимо удалить, подключитесь к контроллеру (для этого потребуется ввод логина и пароля), щелкните правой кнопкой мыши на узле «Device» и воспользуйтесь командой «Сброс заводской устройства [Device]».

В коде программы можно использовать функциональный блок PlcOperationControl из библиотеки ComponentManager. Этот блок позволяет включать и отключать возможность выполнения определенных операций для всех пользователей, основываясь на определенных условиях, таких как команда оператора или системное время (например, после завершения смены). Данный функциональный блок обеспечивает управление доступом к операциям, таким как загрузка проекта и другие. Подробнее о его использовании можно узнать из данного видео.

Безопасность обмена по протоколу OPC UA
Протокол OPC UA поддерживает два средства обеспечения безопасности: использование сертификатов (упомянутых в начале статьи) и логинов/паролей. Для использования логинов/паролей необходимо также наличие сертификата. Пример настройки безопасного подключения по OPC UA можно увидеть в данном видео, а также получить дополнительные пояснения по этому поводу.
В качестве логинов/паролей используются учетные данные пользователей контроллера, созданные на вкладке «Device — Пользователи и группы» (см. предыдущий пункт). Если требуется обеспечить возможность подключения по OPC UA без логина/пароля при наличии пользователей в контроллере, необходимо в CODESYS в разделе «Device» на вкладке «Установки соединения» выполнить следующее действие: «Устройство — Изменить политику соединения» и установить галочку «Анонимный логин».
Мы всегда на связи, чтобы помочь вам.
У вас есть вопросы или предложения? Свяжитесь с нами. Мы рады помочь.
Ограничение прав пользователей визуализации
Визуализация в CODESYS дает оператору возможность влиять на технологический процесс, вводить уставки, изменять режим работы оборудования, управлять исполнительными механизмами и т.д. Однако у разных пользователей визуализации должны быть различные права доступа. Например, оператору обычно не требуется доступ к изменению сетевых настроек контроллера. Для предотвращения несанкционированного доступа визуализация CODESYS позволяет создавать группы пользователей с разными правами. Настройка пользователей осуществляется в Менеджере визуализации на вкладке «Управление пользователями». Для каждого элемента визуализации устанавливается уровень доступа для каждой группы. Существует 3 уровня доступа:
- Элемент не отображается для пользователей данной группы.
- Элемент отображается, но неактивен.
- Элемент отображается и активен.
Защита проекта от тиражирования
Один из часто задаваемых вопросов клиентов: «Как я могу защитить загруженный в контроллер проект от выгрузки, чтобы его нельзя было скопировать?»
По умолчанию при загрузке проекта в контроллер не происходит загрузка исходных кодов программы. Если вы не выполните эту операцию специальной командой, в контроллере будет только скомпилированное приложение, которое нельзя открыть в CODESYS. Однако его можно перенести на другой контроллер с той же модификацией и версией прошивки.
Чтобы защитить скомпилированное приложение от выгрузки, следует:
- Изменить пароль на конфигураторе (см. детали в предыдущей части статьи). Это предотвратит возможность постороннему лицу выгрузить приложение путем создания резервной копии через конфигуратор или через SSH-подключение.
- Запретить подключение к контроллеру (см. выше в разделе «Защита доступа к контроллеру»). Это помешает постороннему лицу подключиться к контроллеру из CODESYS и выгрузить приложение через вкладки «Device — Файлы» или «Device — Резервное копирование и восстановление».
Кроме того, можно включить в код программы чтение серийного номера контроллера и обработать его в логике программы. Например, не выполнять определенные операции, если серийный номер не соответствует ожидаемому (то есть если приложение все же было скопировано с другого контроллера).
Мы здесь, чтобы помочь вам.
Если у вас есть вопросы или проблемы, свяжитесь с нами.Мы всегда на страже ваших интересов.
Для считывания серийного номера достаточно привязать переменную типа STRING к каналу SERIAL узла таргет-файла Info.
В первой части нашей статьи мы изучили методы обеспечения информационной безопасности на уровне операционной системы контроллера. Сейчас мы обсудим средства безопасности в среде программирования CODESYS V3.5.
Криптографическая защита и сертификаты
Через меню «Вид — Безопасность» пользователь может настроить следующие параметры:
шифрование данных между средой разработки и контроллером;
- шифрование файлов проекта;
- использование электронной подписи для проектов, библиотек и операций с контроллером, таких как загрузка проекта или создание загрузочного приложения;
- сертификаты безопасности (раздел «Устройства»).
- Эти функции позволяют обеспечить конфиденциальность и подтверждение подлинности файлов. Например, если злоумышленник заменит приложение в контроллере, оно не запустится из-за отсутствия цифровой подписи.
Сертификаты могут быть созданы для следующих сервисов:
- веб-визуализации («Web Server»);
- сервера OPC UA («OPC UA Server»);
- зашифрованного обмена данными с контроллером («Encrypted Communication»);
- создания зашифрованного приложения («Encrypted Application»).

При использовании OPC UA сертификаты применяются следующим образом:
- Когда OPC UA клиент (например, SCADA-система) подключается к контроллеру, он отправляет свой сертификат.
- Этот сертификат отображается на вкладке «Устройства» в разделе «Карантинные сертификаты».
- Пользователь должен переместить его в раздел «Доверенные сертификаты», чтобы разрешить подключение к серверу OPC UA с клиента. Это гарантирует, что несанкционированный доступ будет предотвращен.
Генерация сертификата – ресурсоемкая операция, которая может занять от нескольких десятков минут до часа в некоторых случаях.
Настройка сервера веб-визуализации выполняется в веб-конфигураторе контроллера на вкладке «ПЛК — Настройки». Здесь можно:
- Выбрать тип соединения (например, для обеспечения доступа только через защищенный протокол HTTPS, нужно выбрать HTTPS; по умолчанию используется HTTP и HTTPS, позволяющие как защищенное, так и незащищенное соединение).
- Указать порт веб-сервера.
- Сгенерировать сертификат (аналогично команде из меню «Вид — Безопасность — Устройства» в среде CODESYS).
- Импортировать предварительно созданный сертификат.

Защита проекта
Файл проекта CODESYS может представлять собой интеллектуальную собственность компании, конкретного разработчика или заказчика. Для обеспечения его безопасности используется меню «Вид — Безопасность — Проект — Технология», где доступны три способа шифрования:
- Пароль: для открытия файла проекта требуется ввод пароля;
- Электронный ключ: для открытия файла проекта необходимо подключить специальный USB-ключ к ПК (в настоящее время CODESYS рассматривает этот метод защиты как устаревший и рекомендует использовать сертификаты);
- Сертификаты: для открытия файла проекта на ПК должен быть установлен соответствующий сертификат, предоставляемый разработчиком проекта.

По умолчанию шифрование отключено; используется режим Проверка целостности. В этом режиме при открытии CODESYS проверяет корректность файла проекта. Если она нарушена (например, если в процессе работы над проектом пропало питание ПК), то проект будет считаться поврежденным и CODESYS не будет пытаться восстановить его.
Всегда рады помочь вам решить любые вопросы.
Ваше мнение важно для нас. Если у вас есть вопросы, свяжитесь с нами.
При этом в режиме Без шифрования CODESYS предложит попробовать восстановить проект, и в ряде случаев эта процедура пройдёт успешно – так что рекомендуется использовать именно этот режим.

Кроме того, имеется возможность ограничить доступ к конкретным объектам проекта (функциональным блокам, визуализациям и т. д.). Это полезно в тех случаях, когда проект передается сторонним лицам, которые должны иметь возможность вносить изменения только в конкретные его фрагменты. Подробнее видео.
Защита доступа к контроллеру
Получение доступа к контроллеру позволяет загрузить (и выгрузить) приложение CODESYS, остановить его выполнение, получить доступ к логам и другим операциям, что обычно является одной из основных целей злоумышленника.
Для защиты от несанкционированного доступа в CODESYS на вкладке «Device — Пользователи и группы» можно создать пользователей, установить для них логины и пароли, а на вкладке «Device — Права доступа» указать операции, разрешенные для пользователей определенных групп.
Если пользователь был создан по ошибке и его необходимо удалить, подключитесь к контроллеру (для этого потребуется ввод логина и пароля), щелкните правой кнопкой мыши на узле «Device» и воспользуйтесь командой «Сброс заводской устройства [Device]».

В коде программы можно использовать функциональный блок PlcOperationControl из библиотеки ComponentManager. Этот блок позволяет включать и отключать возможность выполнения определенных операций для всех пользователей, основываясь на определенных условиях, таких как команда оператора или системное время (например, после завершения смены). Данный функциональный блок обеспечивает управление доступом к операциям, таким как загрузка проекта и другие. Подробнее о его использовании можно узнать из данного видео.

Безопасность обмена по протоколу OPC UA
Протокол OPC UA поддерживает два средства обеспечения безопасности: использование сертификатов (упомянутых в начале статьи) и логинов/паролей. Для использования логинов/паролей необходимо также наличие сертификата. Пример настройки безопасного подключения по OPC UA можно увидеть в данном видео, а также получить дополнительные пояснения по этому поводу.
В качестве логинов/паролей используются учетные данные пользователей контроллера, созданные на вкладке «Device — Пользователи и группы» (см. предыдущий пункт). Если требуется обеспечить возможность подключения по OPC UA без логина/пароля при наличии пользователей в контроллере, необходимо в CODESYS в разделе «Device» на вкладке «Установки соединения» выполнить следующее действие: «Устройство — Изменить политику соединения» и установить галочку «Анонимный логин».
Мы всегда на связи, чтобы помочь вам.
У вас есть вопросы или предложения? Свяжитесь с нами. Мы рады помочь.
Ограничение прав пользователей визуализации
Визуализация в CODESYS дает оператору возможность влиять на технологический процесс, вводить уставки, изменять режим работы оборудования, управлять исполнительными механизмами и т.д. Однако у разных пользователей визуализации должны быть различные права доступа. Например, оператору обычно не требуется доступ к изменению сетевых настроек контроллера. Для предотвращения несанкционированного доступа визуализация CODESYS позволяет создавать группы пользователей с разными правами. Настройка пользователей осуществляется в Менеджере визуализации на вкладке «Управление пользователями». Для каждого элемента визуализации устанавливается уровень доступа для каждой группы. Существует 3 уровня доступа:
- Элемент не отображается для пользователей данной группы.
- Элемент отображается, но неактивен.
- Элемент отображается и активен.
Защита проекта от тиражирования
Один из часто задаваемых вопросов клиентов: «Как я могу защитить загруженный в контроллер проект от выгрузки, чтобы его нельзя было скопировать?»
По умолчанию при загрузке проекта в контроллер не происходит загрузка исходных кодов программы. Если вы не выполните эту операцию специальной командой, в контроллере будет только скомпилированное приложение, которое нельзя открыть в CODESYS. Однако его можно перенести на другой контроллер с той же модификацией и версией прошивки.
Чтобы защитить скомпилированное приложение от выгрузки, следует:
- Изменить пароль на конфигураторе (см. детали в предыдущей части статьи). Это предотвратит возможность постороннему лицу выгрузить приложение путем создания резервной копии через конфигуратор или через SSH-подключение.
- Запретить подключение к контроллеру (см. выше в разделе «Защита доступа к контроллеру»). Это помешает постороннему лицу подключиться к контроллеру из CODESYS и выгрузить приложение через вкладки «Device — Файлы» или «Device — Резервное копирование и восстановление».
Кроме того, можно включить в код программы чтение серийного номера контроллера и обработать его в логике программы. Например, не выполнять определенные операции, если серийный номер не соответствует ожидаемому (то есть если приложение все же было скопировано с другого контроллера).
Мы здесь, чтобы помочь вам.
Если у вас есть вопросы или проблемы, свяжитесь с нами.Мы всегда на страже ваших интересов.
Для считывания серийного номера достаточно привязать переменную типа STRING к каналу SERIAL узла таргет-файла Info.