В первой части нашей статьи мы изучили методы обеспечения информационной безопасности на уровне операционной системы контроллера. Сейчас мы обсудим средства безопасности в среде программирования 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.