Аутентификация в OpenSSH Putty по JaCarta PKI

    В настоящей статье описан алгоритм настройки SSH-клиента Putty для ОС Windows для работы с JaCarta PKI.

    JaCarta PKI – токены производства компании «Аладдин Р.Д.» для строгой двухфакторной аутентификации пользователей при доступе к защищённым информационным ресурсам предприятия, безопасного хранения ключей и ключевых контейнеров программных СКЗИ.

    Общие сведения


    SSH


    SSH — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений. Шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.

    SSH поддерживает возможность аутентификации по RSA-ключу, что обеспечивает максимальный уровень безопасности для канала передачи данных, а также двухфакторную аутентификацию удалённых пользователей.

    Аутентификация по сертификату


    Для настройки работы SSH по RSA-сертификатам необходимо настроить SSH-сервер, а также SSH-клиента на клиентской машине. В данном документе описан алгоритм настройки работы SSH с использованием смарт-карты, либо токена JaCarta PKI для целей аутентификации и шифрования установленного канала.

    Настройка смарт-карт для SSH-клиента


    Порядок настройки серверной части на примере Ubuntu


    Генерация ключевой пары утилитой ssh-keygen


    • Перейти в директорию /home/user/.ssh
    • ssh-keygen -t rsa
    • Задать имя ключа, например, key
    • Задать пароль ключа (для шифрования закрытого ключа), например, 12345678
    • На выходе получаем два файла, например, key и key.pub

    Генерация запроса на сертификат с ключами из п. 1


    • openssl req -new -out user.req -key key

    Выпуск сертификата в CA openssl


    • Настройка openssl CA
      1. cd /etc/ssl
      2. sudo -i
      3. echo “01” > serial
      4. cp /dev/null index.txt
      5. Редактируем /etc/ssl/openssl.cnf nano openssl.cnf

        • dir = ./
        • certs = $dir/certs
        • crl_dir = $dir/crl
        • database = $dir/index.txt
        • new_certs_dir = $dir/certs
        • certificate = $dir/ca.crt
        • serial = $dir/serial
        • crl = $dir/crl.pem
        • private_key = $dir/ca.key

      6. openssl req -new -x509 -keyout ca.key -out ca.crt -days 3650
      7. mkdir crl
      8. Скачать
      9. Запуск makehashlink
      10. chmod +x make_hash_link.sh
      11. ./make_hash_link.sh /etc/ssl
      12. ./make_hash_link.sh /etc/ssl/crl

    • Подписание сертификата пользователя (выпуск)

      1. sudo -i
      2. cd /home/user/.ssh
      3. openssl ca -out user.crt -infiles user.req

    Импорт открытого ключа в Autorized_keys


    • В директории /home/user/.ssh должен находиться файл открытого ключа, содержащий ssh-rsa {KEY}. В примере мы создали файл с именем key.pub
    • Импортируем данный ключ в файл authorized_keys
    • echo key.pub > authorized_keys

    Донастройка серверной части


    • chmod 700 authorized_keys
    • Настройки openssh. В /etc/ssh/sshd.conf редактируем конфигурацию аутентификации

      1. RSAAuthentication yes
      2. PubkeyAuthentication yes
      3. PasswordAuthentication no — отказ от аутентификации по паролю (опционально)

    Запись сертификата на смарт-карту


    Необходимо перенести сертификат на смарт-карту. Для переноса необходимо собрать все необходимые объекты в зашифрованный контейнер и записать его на смарт-карту.

    • openssl pkcs12 -export -in user.crt -inkey key -certfile ca.crt -name «user» -out user.pfx
    • Перенос файла user.pfx на Windows систему с установленным ПО «Единый Клиент JaCarta», либо JC Client
    • Ввод PIN-кода пользователя


    • Импортировать сертификат на токен


    • Выбрать файл user.pfx и нажать «Импорт»

    Проверка работоспособности сертификата


    ssh -I /usr/lib/x86-athena/libASEP11.so 127.0.0.1

    Настройка SSH-клиента Putty на ОС Windows


    Запуск утилит из дистрибутива putty-cac\executables


    • pageant.exe
    • putty.exe

    Для работы требуется версия putty-cac 0.62

    Выбор сертификата в pageant



    В общем случае сертификат появляется в хранилище сертификатов автоматически, но в некоторых случаях может потребоваться его добавление вручную.

    Запуск и настройка Putty


    Вкладка Connection/SSH/CAPI


    Вход в сессию SSH по сертификату


    После ввода PIN-кода пользователя будет установлена сессия SSH.
    Аладдин Р.Д. 91,19
    Информационная безопасность
    Поделиться публикацией
    Комментарии 10
    • 0
      Подскажите, пожалуйста,
      1. Зачем импортировать ключ в токен предварительно сгенерив его программно и сохранив в pfx? Это же прямой путь к утечке и/или подмене сертификата.
      2. Почему Pkcs11 библиотека работающая с «полностью российской разработкой» токеном Jacartaподписана компанией Athena?
      P.S. Спасибо за статью!
      • 0
        Потому что другого пути генерации ключевой пары для SSH нет. Соответственно приходится часть шагов производить «вручную». Конечно, это несколько менее безопасный путь, чем если бы ключи генерировались прямо в смарт-карте. Но все равно, это гораздо надежнее, чем парольная аутентификация.
        • 0
          Допустим.
          А что по поводу второго вопроса:
          2. Почему Pkcs11 библиотека работающая с «полностью российской разработкой» токеном Jacartaподписана компанией Athena?
          • 0
            Другой путь генерации ключевой пары для SSH есть — вот он — https://geektimes.ru/post/88540/ — описан аж в 2010 году.
            • 0
              Спасибо Вам! Действительно существует способ генерации ключевой пары непосредственно на устройстве, но в статье мы не рассмотрели этих способов, наше упущение. В скором времени дополним статью альтернативным вариантом генерации КП на устройстве JaCarta PKI.
              • 0
                Так а что по поводу второго вопроса:
                2. Почему Pkcs11 библиотека работающая с «полностью российской разработкой» токеном Jacarta подписана компанией Athena?
                Вы упорно игнорируете этот вопрос — это становится подозрительным.
                • 0
                  Видимо Компания Аладдин Р.Д. не может ответить на заданный вопрос.
                  • 0
                    Библиотека PKCS#11, которая используется в «Едином Клиенте JaCarta» написана сотрудниками «Аладдин Р.Д.» и подписана цифровой подписью Аладдин.

                    image

                    «Аладдин Р.Д.» проводит сертификацию своих решений во ФСТЭК России с соответствующим уровнем контроля отсутствия недекларированных возможностей и предоставлением исходных кодов по запросу регуляторов.

                    Библиотека PKCS#11 совершенствуется для различных платформ (например, Apple Mac, мобильных платформ) и в процессе развития проектов (например, ЕГАИС).

                    Что касается истории использования версий библиотек PKCS#11, распространявшихся «Аладдин Р.Д.», то в состав СТАРЫХ версий продуктов и решений «Аладдин Р.Д.» могли входить ОТДЕЛЬНЫЕ ВЕРСИИ библиотеки, разработанных Athena. Замена версий библиотек происходит по мере запросов со стороны партнеров/заказчиков.
        • 0

          Все это интересней, когда идет идентификация в OpenSSH или Putty на ГОСТ-ах:


          • 0
            Спасибо! Действительно ГОСТ смотрится интереснее, однако к данному сценарию есть ряд оговорок.

            Дело в том, что в описанном мной методе используется аппаратная криптография на самом устройстве, с неизвлекаемым закрытым ключом. Для реализации взаимодействия с устройством используется интерфейс PKCS#11, в случае работы с криптопровайдером — CAPI. В ближайшее время будем исследовать возможность использования аппаратной криптографии для ГОСТ в сценарии SSH.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое