В первой части мы рассмотрели обеспечение информационной безопасности операционной системы контроллера. Теперь обсудим безопасность в CODESYS V3.5.
Криптографическая защита и сертификаты
В меню “Вид – Безопасность” можно настроить:
- шифрование передаваемых данных;
- шифрование файлов проекта;
- использование электронной подписи для проектов, библиотек и операций с контроллером;
- сертификаты безопасности (вкладка “Устройства”).
Все эти средства позволяют обеспечить конфиденциальность и проверку подлинности файлов (например, если злоумышленник подменит приложение в контроллере, то оно не будет запущено из-за отсутствия цифровой подписи).
Сертификаты можно сгенерировать для следующих сервисов:
- web-визуализации («Web Server»);
- сервера OPC UA («OPC UA Server»);
- сервиса связи с контроллером («Encrypted Communication»);
- сервиса создания загрузочного приложения («Encrypted Application»).
На примере OPC UA использование сертификатов выглядит следующим образом:
- когда OPC UA клиент (например, SCADA-система) подключается к контроллеру, то он отправляет ему свой сертификат;
- этот сертификат будет отображаться на вкладке Devices в папке Quarantined Certificates;
- пользователь должен перенести его в папку Trusted Certificates, чтобы разрешить подключение к серверу OPC UA со стороны клиента. Таким образом, несанкционированный доступ будет невозможен.
Генерация сертификата является ресурсоемкой операцией, и время ее выполнения может занимать до нескольких десятков минут, а в некоторых случаях даже до часа.
Настройка сервера web-визуализации осуществляется в web-конфигураторе контроллера на вкладке “ПЛК – Настройки”. Здесь вы можете:
- установить тип подключения (например, если требуется обеспечить доступ только по защищенному протоколу HTTPS – то нужно выбрать тип HTTPS; по умолчанию используется тип HTTP и HTTPS, который допускает как защищенное, так и незащищенное подключение);
- выбрать номер порта web-сервера;
- сгенерировать сертификат (аналог соответствующей команды из меню Вид – Безопасность – Devices в среде CODESYS);
- импортировать заранее созданный сертификат.
Защита проекта
Файл проекта CODESYS может представлять интеллектуальную собственность компании, разработчика или заказчика. Для защиты используется меню “Вид – Безопасность – Проект – Технология”, в котором доступны 3 способа шифрования:
- пароль – для открытия файла проекта потребуется ввести пароль;
- электронный ключ – для открытия файла проекта потребуется подключить к ПК специальный USB-ключ (в настоящий момент CODESYS считает этот способ защиты устаревшим и рекомендует использовать сертификаты);
- сертификаты – для открытия файла проекта на ПК должен быть установлен соответствующий сертификат, предоставляемый разработчиком проекта.
По умолчанию шифрование отключено, и используется режим проверки целостности. В этом режиме CODESYS проверяет корректность файла проекта при его открытии. Если целостность файла нарушена (например, из-за сбоя питания ПК в процессе работы над проектом), то файл будет считаться поврежденным, и CODESYS не будет пытаться восстановить его.
При использовании режима “Без шифрования” CODESYS предложит попробовать восстановить проект, и в некоторых случаях это может быть успешно. Поэтому рекомендуется использовать именно этот режим для обеспечения возможности восстановления проекта.
Кроме того, имеется возможность ограничить доступ к конкретным объектам проекта (функциональным блокам, визуализациям и т. д.). Это полезно в тех случаях, когда проект передается сторонним лицам, которые должны иметь возможность вносить изменения только в конкретные его фрагменты.
Защита доступа к контроллеру
Получение доступа к контроллеру позволяет злоумышленнику загрузить или выгрузить приложение CODESYS, остановить его выполнение и получить доступ к логам и другим функциям. Для защиты от несанкционированного доступа в CODESYS можно создать пользователей с уникальными логинами и паролями на вкладке “Device – Пользователи и группы”. Также можно указать разрешенные операции для пользователей конкретных групп на вкладке “Device – Права доступа”. Если пользователь был создан по ошибке и требуется его удаление, можно подключиться к контроллеру, нажать правой кнопкой мыши на узел “Device” и использовать команду “Сброс заводской устройства [Device]”.
В программе можно использовать функциональный блок PlcOperationControl из библиотеки ComponentManager. Он позволяет включать и отключать выполнение определенных операций для всех пользователей в зависимости от условий, таких как команда оператора или системное время (например, после завершения смены).
Безопасность обмена по протоколу OPC UA
Протокол OPC UA поддерживает два средства обеспечения безопасности – использование сертификатов и логинов/паролей. Для использования логинов/паролей требуется наличие сертификата. Пример безопасного подключения по OPC UA и дополнительные настройки можно найти в соответствующем видео.
Логины/пароли пользователей контроллера, созданные на вкладке “Device – Пользователи и группы”, используются в качестве логинов/паролей для OPC UA. Если требуется возможность подключения по OPC UA без логина/пароля при наличии пользователей в контроллере, можно выполнить команду “Устройство – Изменить политику соединения – Анонимный логин” на вкладке “Установки соединения” в узле “Device” в CODESYS.
Ограничение прав пользователей визуализации
Визуализация CODESYS позволяет оператору влиять на протекание технологического процесса – вводить уставки, изменять режим работы оборудования, включать и отключать исполнительные механизмы и т. д. При этом у разных пользователей визуализации обычно должны быть разные права – например, оператору обычно не требуется возможность изменений сетевых настроек контроллера. Для предотвращения несанкционированного доступа визуализация CODESYS позволяет создавать группы пользователей с различными правами. Настройка пользователей выполняется в Менеджере визуализации на вкладке Управление пользователями. Для каждого элемента визуализации настраивается уровень доступа для каждой группы. Существует 3 уровня доступа:
- элемент не отображается для пользователей данной группы;
- элемент отображается, но не является активным;
- элемент отображается и является активным.
Защита проекта от тиражирования
Для защиты загруженного проекта в контроллере от выгрузки и тиражирования, можно принять следующие меры:
- Измените пароль на конфигураторе, чтобы предотвратить выгрузку приложения через создание резервной копии или SSH-подключение.
- Запретите подключение к контроллеру, чтобы предотвратить выгрузку приложения через вкладки “Device – Файлы” или “Device – Резервное копирование и восстановление” в CODESYS.
- В коде программы можно считать серийный номер контроллера и обработать его в логике приложения. Например, можно прервать выполнение операций, если серийный номер контроллера не соответствует ожидаемому.
Для считывания серийного номера контроллера можно использовать переменную типа STRING, привязанную к каналу SERIAL узла таргет-файла Info.