Меня озадачил вопрос использования двухфакторной аутентификации для терминального доступа на тонких клиентах на базе Thinstation и немного удивил.
Оказывается, на данный момент ни одна сборка или конструктор Thinstation не поддерживает электронные USB-ключи, такие как eToken, RuToken, iKey. Несмотря на то, что дистрибутив Thinstation настолько популярен, что его используют вместо стандартного ПО на тонких клиентах HP, а средства аутентификации eToken получили большее распространение на постсоветском пространстве, чем решения других компаний, факт остается фактом: Thinstation не поддержка электронных USB-ключей.
И чтобы восполнить этот пробел, мне пришлось потратить немало времени на поиск работающего решения.
Собственно говоря, это то, что я привожу сюда.
Чтобы использовать двухфакторную аутентификацию для терминального доступа через RDP в Thinstation, вам необходимы три компонента: RDP-клиент, приложение, работающее со смарт-картами (электронными ключами), и драйвер смарт-карты.
Первые два компонента (rdesktop и pcc) изначально присутствуют в дизайнере Thinstation, и мы не будем на них заострять внимание, разве что убедиться, что в rdesktop есть поддержка смарт-карт, а pcc — версия не ниже 1.5.5. Третий компонент, драйвер, а также связующее звено для pcsc — это пакет OpenCT. OpenCT поддерживает относительно большое количество USB-считывателей и токенов и, что самое важное, корректно работает с rdesktop. Так что давайте уделим ему больше внимания.
Порядок сборки дистрибутива Thinstation с поддержкой электронных USB-ключей следующий: сборка из исходников OpenCT, создание пакета для Thinstation, редактирование файлов конфигурации, сборка образа Thinstation.
Создание OpenCT
Сборка будет происходить на Ubuntu, соответственно команды приведены для этого дистрибутива Linux, для других версий Linux команды будут другие Сначала устанавливаем необходимые для сборки пакеты: $ sudo apt-get install libhal1 libltdl7 dpkg-dev build-essential fakeroot Создаём в домашнем каталоге папку, в которой будем собирать OpenCT из исходников: $ mkdir ~/openct $ mkdir ~/openct/build $ cd ~/openct/build Загрузите исходники и установите зависимости для компиляции пакета.
$ sudo apt-get исходный код openct
$ sudo apt-get build-dep openct
Распаковка:
$ sudo dpkg-source -x openct_0.6.20-1.1.dsc
Собираем пакет OpenCT с необходимыми опциями — Enable-pcsc и Enable-usb:
$cd openct-0.6.20
$ sudo DEB_BUILD_OPTIONS="--enable-pcsc --enable-usb" fakeroot двоичный файл debian/rules
$компакт…
Компиляция пакета для Thinstation
Openct готов, давайте создадим структуру пакета для Thinstation. $ mkdir ~/openct/пакеты $ mkdir ~/openct/packages/openct $ mkdir ~/openct/packages/openct/bin $ mkdir ~/openct/packages/openct/etc $ mkdir ~/openct/packages/openct/etc/udev/ $ mkdir ~/openct/packages/openct/etc/udev/scripts $ mkdir ~/openct/packages/openct/lib $ mkdir ~/openct/packages/openct/usr $ mkdir ~/openct/packages/openct/usr/sbin $ mkdir ~/openct/packages/openct/var $ mkdir ~/openct/packages/openct/var/run $ mkdir ~/openct/packages/openct/var/run/openct Скопируйте необходимые файлы $ cp ~/openct/build/openct-0.6.20/debian/openct/usr/bin/openct-tool ~/openct/packages/openct/bin/openct-tool $ cp ~/openct/build/openct-0.6.20/debian/openct/usr/sbin/openct-control ~/openct/packages/openct/bin/openct-control $ cp ~/openct/build/openct-0.6.20/debian/openct/usr/sbin/if* ~/openct/packages/openct/usr/sbin/ $ cp -r ~/openct/build/openct-0.6.20/debian/openct/usr/lib/ ~/openct/packages/openct/ $ cp -r ~/openct/build/openct-0.6.20/debian/openct/lib/udev/rules.d ~/openct/packages/openct/etc/udev $ cp ~/openct/build/openct-0.6.20/debian/openct/lib/udev/openct* ~/openct/packages/openct/etc/udev/scripts $ cp ~/openct/build/openct-0.6.20/debian/openct/etc/openct.conf ~/openct/packages/openct/etc/openct.conf $ cp -r ~/openct/build/openct-0.6.20/debian/libopenct1/usr/lib/* ~/openct/packages/openct/lib $ cp -r /lib/libdbus* ~/openct/packages/openct/lib $ cp -r /usr/lib/libhal.so* ~/openct/packages/openct/lib $ cp -r /usr/lib/libltdl.so* ~/openct/packages/openct/libРедактирование файлов конфигурации
Хотя правило udev уже присутствует, его необходимо скорректировать.$ nano ~/openct/packages/openct/etc/udev/rules.d/60-openct.rules После линии ACTION!=“add”, GOTO="openct_usb_rules_end" вам нужно добавить: SUBSYSTEM==“usb”, ACTION==“добавить”, ENV{DEVTYPE}==“usb_device”, \ NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644" А также убедитесь, что правила, касающиеся необходимых электронных ключей, не закомментированы, а пути к исполняемым скриптам указаны правильно.
В Thinstation они находятся в /etc/udev/scripts. Файл openct_usb претерпевает более «серьёзную» модификацию.
$ nano ~/openct/packages/openct/etc/udev/scripts/openct_usb Вытаскиваем все и пишем только: #!/бин/ш Завершение работы /bin/openct-control /bin/openct-control инициализация выход 0 Было бы неплохо заглянуть в openct.conf и убедиться, что необходимый драйвер ключа загружен.
$ nano ~/openct/packages/openct/etc/openct.conf
Создаем зависимость пакета openct в Thinstation на pcscd:
$ echo 'pccd' | кот > ~/openct/packages/openct/зависимости
Сборка образа Thinstation
Создал пакет openct в папке packages: $ cp -r ~/openct/packages/openct ~/Thinstation-2.2.2/packages Сообщаем дизайнеру о необходимости включения пакета openct в сборку дистрибутива Thinstation: $ nano ~/Thinstation-2.2.2/build.conf пакеты openct Сборка образа тонкого клиента $ компакт-диск ~/Thinstation-2.2.2 $ судо ./сборка Изображение готово.
Загружаемся, подключаем токен и проверяем в консоли командами pcscd_scan и/или opensc-tool –l
Если все хорошо, то подключаемся к терминальному серверу, не забыв указать –r scard в параметрах подключения к серверу.
Теги: #linux #Системное администрирование #тонкие клиенты #смарткарты #rutoken #rutoken #etoken #thinstation #Thinstation #Thinstation #thinstation #Thinstation #Thinstation #Thinstation #Thinstation #смарткарты
-
Вам Не Нужно За Это Платить!
19 Oct, 24 -
Как Получить Массу Бесплатных Вещей
19 Oct, 24 -
Любопытный Случай С Root-Доступом К Mysql
19 Oct, 24 -
«Велосипед» Проверяет Версии Сайта
19 Oct, 24