WINE@Etersoft/Использование аппаратных ключей защиты в Linux
Содержание
- 1 Использование аппаратных ключей защиты в Linux
- 1.1 Ключи защиты HASP 4/HL (Aladdin — Sentinel)
- 1.2 Подключение ключей HASP 4/HL
- 1.3 Установка драйвера ключа HASP 4/HL
- 1.4 Настройка приложения, использующего сетевой ключ
- 1.5 Проверка доступности ключа
- 1.6 Компоненты драйвера HASP в GNU/Linux
- 1.7 Сборка модулей ядра для HASP
- 1.8 Ключи HASP SRM
- 1.9 Ключи Smartkey 3 (EUTRON)
- 1.10 Сетевые ключи
- 1.11 Локальные ключи
- 1.12 Ключи SuperPro, UltraPro, SHK (Sentinel)
- 1.13 Сетевые ключи
- 1.14 Локальные ключи
- 1.15 Ключи Катран
- 1.16 Ключи GUARDANT (Актив)
- 1.17 eToken (Aladdin)
- 1.18 Ключи SenseLock (SecuLab)
- 1.19 Использование прочих ключей защиты
Использование аппаратных ключей защиты в Linux
HASP (от англ. Hardware Against Software Piracy) — это мультиплатформенная аппаратно-программная система защиты программ и данных от нелегального использования и несанкционированного распространения.
Менеджеры лицензий и необходимые драйверы для поддержки ключей защиты в Linux поставляются в пакетах haspd и haspd-modules (модули ядра могут дополнительно поставляться в пакете dkms-*, если система поддерживает DKMS).
Драйверов для прочих систем (MacOS, FreeBSD, Solaris) не имеется, и в этих системах предоставляется только режим работы с сетевыми ключами (когда ключ подключен к другой машине с системой GNU/Linux или Windows.
При использовании локального ключа в программе winecfg на вкладке Ключи защиты
нужно отметить соответствующий ключ загружаемым (см. winecfg).
Если необходимо обеспечить загрузку драйверов локальных ключей без ручной настройки, в соответствующий файл /etc/wine/reg.d
(например, для HASP это будет /etc/wine/reg.d/usb_hasp.reg
) нужно добавить строку Start
=dword: 00000003 перед каждой строкой Type
= в файле.
Для некоторых драйверов (Hardlock и Sentinel) в Start должно быть не 00000003, а 00000002.
Ключи защиты HASP 4/HL (Aladdin — Sentinel)
Ключи HASP бывают как локальные (однопользовательские), так и сетевые (многопользовательские). По способу подключения ключи также бывают двух типов: подключаемые к порту LPT (параллельный порт) и к шине USB. Для ОС GNU/Linux имеются драйверы USB- и LPT-ключей защиты для ядра версии 2.4 и 2.6. Рекомендуется использовать USB-ключ защиты, так как его подключение и настройка вызывает меньше проблем. Возможно, потребуется обратиться к поставщику программы и попросить о замене ключа.
Начиная с Win32 HASP HL API версии 1.12 поддерживаются локальные ключи HASP при работе из WINE@Etersoft. Примером такой программы является 1С:Предприятие 8.0 и выше. Также поддерживается платформа 1С:Предприятие 7.7, начиная с релиза 27 (за исключением локальных ключей для конфигурации Торговля и Склад).
Подключение ключей HASP 4/HL
При эксплуатации программ, защищённых ключом защиты HASP (например, 1С:Предприятие 7.7), необходим драйвер ключа, установленный на компьютере с подключённым ключом. Для сетевого ключа в дополнение к драйверу потребуется также работающий сетевой менеджер лицензий. Сетевой ключ может располагаться на любом узле сети, работающем под управлением Linux или Windows.
Различение ключей:
- локальные LPT-ключи -- белого цвета;
- сетевые LPT-ключи -- красного цвета;
- локальные USB-ключи фиолетового цвета (H4 M1 ORGL8);
- однопользовательский USB-ключ синего цвета (H4 B1 ORGL8);
- сетевые USB-ключи -- красного цвета (H4 NET5 ORGL8- после слова NET указано количество лицензий);
- USB-ключ 32-битного сервера 1С:Предприятия 8 является локальным и имеет фиолетовый цвет (надпись H4M1 ENSR8).
- USB-ключ 64-битного сервера 1С:Предприятия 8 является локальным и имеет фиолетовый цвет (надпись H4P1 ENSR8).
- USB-ключ 64-битного сервера 1С:Предприятия 8 является локальным и имеет зелёный цвет (надпись H4 M4 EN8SA).
Если ключ не работает, и при этом мигает, возможно, он неисправен. См. подробнее здесь.
Установка драйвера ключа HASP 4/HL
Все компоненты драйвера HASP, включая сетевой менеджер лицензий, находятся в пакете haspd
. Достаточно обычным способом установить этот пакет (из каталога для вашей версии дистрибутива GNU/Linux) на тот компьютер, к которому подсоединён ключ (вне зависимости от типа ключа).
Проверить, что все компоненты драйвера запущены и работают правильно, можно командой:
[root@test root]# service haspd status Aladdin HASP 4/HL driver status: kernel module aksparlnx is loaded aksusbd is running winehasp is running hasplm is running
Для тех систем, где отсутствует команда service
, следует использовать команду /etc/init.d/haspd status
.
Если в выводе service haspd status
появляется предупреждение о том, что не загружен модуль ядра (kernel module aksparlnx is not loaded
), это свидетельствует о том, что у вас установлено ядро, для которого не удалось автоматически подобрать драйвер, и требуется сборка модуля ядра (см. ниже). Это потребуется только в случае использования LPT-ключа.
Проверить, какие порты прослушивает менеджер лицензий HASP, можно командой:
[root@test root]# netstat -ap | grep hasp udp 0 0 *:475 *:* 1535/hasplm udp 0 0 localhost.localdom:2790 *:* 1169/winehasp
Мы видим, что на порту 475 по протоколу UDP ожидает подключения с любых адресов менеджер лицензий, а на локальном порту 2790 по протоколу UDP слушает winehasp соединения с этой же машины.
Настройка приложения, использующего сетевой ключ
Если приложение использует сетевой ключ, то ему требуется знать информацию о расположении ключа защиты (сетевого менеджера лицензий) и способа обращения к нему. Эти данные указываются в файле NETHASP.INI
в каталоге с исполняемыми файлами защищённого приложения. Этот файл может выглядеть, например, так:
[NH_COMMON] NH_TCPIP = Enabled ; Используем только IP-протокол [NH_TCPIP] NH_SERVER_ADDR = 192.168.0.1 ; IP-адрес (или имя) машины с менеджером лицензий NH_TCPIP_METHOD = UDP ; UDP для Linux-сервера и TCP для Windows-сервера NH_USE_BROADCAST = Disabled ; Отключить поиск ключа по всей сети
notepad
, входящем в состав WINE.
Если этого файла нет, или настройки в нём не выполнены, будет выполняться широковещательный запрос по локальной сети. Результат может быть нестабилен. В случае наличия нескольких сетевых интерфейсов на машине ключ может быть не найден.
Для упрощения настройки можно воспользоваться командой setnethasp IP-адрес
, которая создаст конфигурационный файл nethasp.ini
, настроенный на указанный сервер. Если менеджер лицензий расположен на Windows-машине, настройка осуществляется командой setnethasp --win IP-адрес
.
Обращение к сетевому менеджеру лицензий, запущенному под Linux, возможно только по протоколу UDP/IP. Если вы используете менеджер лицензий, запущенный под Windows, то удостоверьтесь что в нём включен протокол TCP/IP.
hinstall.exe
из поставки Win-приложения.
При использования менеджера лицензий под Windows может задействоваться файл nhsrv.ini
, в котором указывается в том числе протокол работы (TCP/UDP).
[NHS_IP] NHS_USE_UDP = enabled ; enabled or disabled (default: enabled) NHS_USE_TCP = enabled ; enabled or disabled (default: enabled) NHS_IP_portnum = 475 ; IP port number (default: 475 (IANA registered))
Проверка доступности ключа
Если всё правильно настроено, но приложение не видит ключ, следует для проверки отключить межсетевой экран (firewall) командой service iptables stop
или iptables -F
Далее можно попробовать обратиться к менеджеру лицензий с помощью тестовой программы.
# eterkeytest --hasp USB: HASP: Needed registry section for local HASP key is present HASP API VERSION: 8.0 HASP Local: LPT HASP4 M4 (HASP3 is connected, key is HASP4 Net 5) 1C:Accountancy v7.7 (simple and network) HASP Net (press Ctrl-C to break): ..... -- active logins: 1 -- max logins: 5 -- key type: HASP4 Net 5 -- activations: 65535 1C:Accountancy v7.7 (simple and network)
Для проверки сетевого ключа eterkeytest
пользуется файлом nethasp.ini
для получения информации о доступе к ключу (регистр букв важен).
Надпись Needed registry section for local HASP key is present
показывает, что необходимые для работы 1С 8.x с локальным ключом записи в реестр внесены.
Для Windows существует программа АКС Монитор, позволяющая увидеть тип ключа и количество лицензий в нём: ftp://ftp.aladdin.com/pub/hasp/new_releases/utility/monitor/Monitor_Setup.zip
Компоненты драйвера HASP в GNU/Linux
Драйвер ключей защиты HASP для GNU/Linux состоит из нескольких взаимодействующих компонент:
-
aksparlnx
(версия 1.6) -- модуль ядра, обеспечивающий низкоуровневый доступ к LPT-ключу; -
askusbd
(версия 1.8.1) -- универсальный драйвер для USB- и LPT-ключей (системная служба); -
winehasp
(версия 1.00) -- часть драйвера, предоставляющая доступ к ключу HASP win-приложениям, исполняющимся в среде WINE (системная служба); -
hasplm
(версия 8.30) -- сетевой менеджер лицензий (системная служба).
Сборка модулей ядра для HASP
Если используется LPT-ключ, вам потребуется запустить сборку модуля для вашего ядра командой service haspd build
. На системах, где нет команды service, запускайте /etc/init.d/haspd build
.
О том, что модуль ещё не собран, можно узнать из вывода service haspd status
:
Aladdin HASP 4/HL driver status:
kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled!)
Для сборки потребуется установить заголовочные файлы ядра или исходники ядра (зависит от системы) именно той версии, под которую вы планируете сборку.
- Для систем ALT Linux это пакет
kernel-headers-*
. - Для систем RHEL, Fedora, ASP Linux, LinuxXP это пакет
kernel-devel-*
. - Для систем Debian, Ubuntu это пакет
linux-headers-*
. - Для систем SUSE, Slackware, MOPSLinux это пакет
kernel-source-*
. - Для систем Mandriva это пакет
kernel-source-stripped-*
.
Если заголовочные файлы находятся в нестандартном месте, путь можно указать через переменную окружения KERNSRC: KERNSRC=/путь/к/исходникам/ядра service haspd build
Если требуется просто собрать модуль не для текущего загруженного ядра, версию ядра можно указать через переменную окружения KERNELVERSION
: KERNELVERSION=2.6.26-wks-smp-alt1 service haspd build
Часто задаваемые вопросы по HASP с сайта Aladdin Форум по поддержке HASP на сайте Aladdin
Ключи HASP SRM
Подробности про защиту HASP SRM можно прочитать на странице Поддержка ключей HASP в Wine.
Ключи Smartkey 3 (EUTRON)
Сетевые ключи
Сетевыми ключами Smartkey 3 USB/LPT
защищаются, например, конфигурации 1С: Рарус 7.7. Драйвер для ключей входит в пакет haspd (/usr/sbin/keyd
) и запускается в сервисе haspd. Конфигурационный файл драйвера находится в /etc/skeyd.conf
, там можно настроить адрес и порт, на котором находится ключ. По умолчанию драйвер слушает на адресе 127.0.0.1
порт 13527/tcp
.
export USB_DEVFS_PATH=/dev/bus/usb
В защищаемой программе параметры доступа указываются в файле Server.ini
(должен находиться в каталоге с конфигурацией).
MODE=NET
SERVER=localhost
IP=127.0.0.1
PORT=13527
PING=0
Дополнительно можно посмотреть здесь: http://www.forum.mista.ru/topic.php?id=242981&forum=it&order=answers
Ключи Smartkey 2 требуют использования модуля ядра и не поддерживаются.
Локальные ключи
WINE@Etersoft, начиная с версии 1.0.9 поддерживает библиотеки ключа skeydrv.dll или skeylink.dll и драйвер ключа eusk3usb.sys, необходимый для работы ключей Eutron из WINE.
Локальный USB-ключ Smartkey 3 используется, например, для защиты СБИС++.
Возможны проблемы с правами доступа к файлу устройства /dev/usb/*
, отвечающего за вставленный ключ. Для автоматической установки прав с помощью сервиса udev поставляется файл /etc/udev/rules.d/90-winkeys.rules
.
Проверить доступность ключа можно командой eterkeytest --list
, которая выведет список имеющихся ключей и сообщит об ошибке (denied) доступа или о том, что ключ теоретически поддерживается (supported).
Ключи SuperPro, UltraPro, SHK (Sentinel)
Сетевые ключи
Данные ключи используются для защиты таких программ, как Инфо-Бухгалтер, БЭСТ. Сетевой драйвер для ключей и менеджер лицензий входит в пакет haspd и запускается в сервисе haspd, если соответствующий ключ подключен в USB. По умолчанию используется порт 6001 по протоколу UDP и TCP. На порту 6002 должен работать веб-интерфейс по проверке лицензий.
Настройки сервера (например/usr/lib/sentinel/sntlconfigsrvr.xml
Пример конфигурационного файла клиента поставляется в /usr/share/doc/haspd-3.1/sntlconfig.xml
Сайт производителя - устарел
Сайт производителя - текущий
Локальные ключи
WINE@Etersoft поддерживает загрузку драйвера SNTNLUSB.SYS, необходимого для работы ключей из Wine. Сам драйвер поставляется в закрытой части WINE@Etersoft, начиная со сборки 1.0.9-eter8, и находится в каталоге system32/drivers
.
Возможны проблемы с правами доступа к файлу устройства /dev/usb/*
, отвечающего за вставленный ключ. Для автоматической установки прав с помощью сервиса udev поставляется файл /etc/udev/rules.d/90-winkeys.rules
.
Проверить доступность ключа можно командой eterkeytest --list
, которая выведет список имеющихся ключей и сообщит об ошибке (denied) доступа или о том, что ключ поддерживается (supported):
$ eterkeytest --list USB: Vendor:Product: 04b9:0300 Rainbow Sentinel SuperPro/UlraPro (supported): SafeNet Inc., USB UltraPro
Проверить ключ для программы Инфо-Бухгалтер можно через программу chkey32w.exe
из каталога с установленной программой.
Ключи Катран
Данные ключи применяются, например, в составе решения по защите конфигураций 1С. Драйверы ключа поставляются вместе с WINE@Etersoft.
Полный список проверенных конфигураций
Для проверки ключа используется программа PSTest.exe.
Ключи GUARDANT (Актив)
К версии WINE@Etersoft 1.0.10 для платформы GNU/Linux совместно со специалистами компании Актив была разработана полная поддержка всех USB-ключей Guardant, а именно:
- Guardant Sign/Time/HID/USB
- Guardant Stealth III/Net III USB
- Guardant Stealth II/Net II USB
Также выполнена поддержка сервера лицензий Guardant Net, что позволяет использовать сетевые ключи. Программы, защищённые сетевым ключом, могут быть запущены с использованием сервера ключей, запущенного на Windows или в WINE@Etersoft.
Все необходимые драйверы уже поставляются в составе WINE@Etersoft и загружаются при наличии ключа. Специальных действий предпринимать не требуется. При возникновении затруднений обращайтесь в службу поддержки mailto:support@etersoft.ru.
eToken (Aladdin)
Поддержка брелоков eToken сама по себе бессмысленна, а необходимое Microsoft CryptoAPI и PKCS#11 ещё не реализовано в нужном объёме.
Ключи SenseLock (SecuLab)
Новые электронные ключи SenseLock на основе смарт-карты имеют поддержку операционных систем Windows, Linux, Mac OS, а также имеют поддержку WINE.
Использование прочих ключей защиты
В случае использования других ключей защиты следует руководствоваться следующими общими правилами:
- ключи по возможности должны быть USB;
- ключи должны быть сетевыми (точнее, программа должна обращаться к драйверу ключа (менеджеру лицензий) по сетевому протоколу TCP/IP, иначе без специальной поддержки со стороны производителя программа работать не будет;
- для сетевого ключа должен иметься драйвер ключа и менеджер лицензий под Linux, написанные производителем;
- компанией Этерсофт может быть выполнена поддержка загрузки необходимого Windows-драйвера ключа.
В случае затруднений или при встрече с неподдерживаемым ключом обращайтесь с описанием проблемы по адресу mailto:hasp@etersoft.ru.