SSH-аутентификация при помощи USB-ключа eToken Pro

    В этой заметке я расскажу вам, как настроить SSH-аутентификацию при помощи USB-ключа eToken.

    image

    Для этого нам понадобятся:

    — Собственно сам USB-ключ eToken Pro (в моем случае это eToken Pro 64k)
    — Операционная система Windows с установленными драйверами eToken PKI Client
    — Mozilla Firefox с установленным плагином Key Manager
    — SSH-клиент с поддержкой смарт-карт. Лично мне нравится PuTTY SC — модифицированная версия PuTTY.

    Предполагается, что у вас уже есть инициализированный USB-ключ с установленным пин-кодом, он подключен к компьютеру и готов к работе.

    Создание открытого/закрытого ключа.

    1) Запускаем Firefox и открываем Key Manager (Инструменты -> Key Manager Tool Box -> Key Manager)

    image

    2) Вводим пользовательский пароль для eToken

    image

    3) В главном меню Key Manager выбираем «Generate Self-Signed Cert»

    image

    4) Заполняем поля как показано на рисунке и нажимаем «Generate Self-Signed Cert». Естественно вам необходимо ввести свои данные, такие как город, страна, и fqdn сервера. Также по желанию можно указать дополнительные свойства сертификата — срок действия и т.д.

    image

    5) Выберите нужный токен из списка и нажмите «ОК». Обратите внимание, что если вы генерируете сертификат сразу на токене то экспортировать закрытый ключ потом будет невозможно.

    image

    6) В главном меню Key Manager выделите только что созданный сертификат, и нажмите кнопку «Export»

    image

    7) В появившемся окне выберите формат «OpenSSH Pubkey» и нажмите кнопку «ОК»

    image

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

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDL9ViU3+/80xZka0G91eoDyNuPT4eb1/8ro0iZEBnRI7+B+LwJbWrvqfJxNQluMiGPhftBCao4VjCcby21g0q+1sp42MR1bPD8BgA42ZDuum/sq5gFEM16n+g8+bXxtoZ/kF2bPJ4fGsowmdQCc8I7xECcYazz2AG8oZqU9l0anw==


    Настройка аутентификации по ключу на сервере.

    В качестве сервера в моем случае выступает машина с установленным Debian Lenny.

    Вам необходимо убедиться что в конфигурации sshd разрешена аутентификация при помощи публичных ключей. Для этого необходимо в файле «sshd_config» указать значение параметра «PubkeyAuthentication» в «yes».

    Затем в файл "~/.ssh/authorized_keys" добавляем наш публичный ключ полученный ранее (одной строкой). Обратите внимание, файл ".ssh/authorized_keys" находится в домашнем каталоге того пользователя, который потом будет логиниться по публичному ключу.

    Настройка SSH-клиента PuTTY SC на использование смарт-карт.

    PuTTY SC — это модифицированная версия PuTTY. Единственное значительное отличие от оригинальной версии — поддержка смарт-карт.

    Настройка в данном случае почти ничем не отличается от обычных соединений — нужно указать адрес сервера, тип подключения, тип клавиатуры, кодировку.

    Для использования аутентификации при помощи смарт-карты зайдите в раздел «Connection -> SSH -> Pkcs11», отметьте галочку «Attempt PKCS#11 smartcard auth (SSH-2)», укажите путь к библиотеке eToken — «C:\Windows\System32\eToken.dll», выберите в списке название токена и закрытый ключ, который мы создали ранее.

    image

    При подключении вас попросят ввести пользовательский пин-код к USB-ключу.

    image

    Поздравляю, теперь вы можете использовать SSH-аутентификацию при помощи eToken Pro!

    Примечание: несомненно, генерировать ключи можно различными способами, используя различное ПО и различные операционные системы. Связка Windows+Firefox была выбрана как наиболее простая и понятная.

    Еще примечание: по вкусу можно отключить на сервере другие методы аутентификации, оставив только аутентификацию по ключу.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 17
    • 0
      Под mac os и linux сработает?
      • 0
        Да, см. ответ ниже.
      • 0
        Спасибо!
        Не подскажете что можно использовать под Mac и Linux?
        И такой вопрос: где нам нужен закрытый ключ? Ведь сам смысл еТокена в том, что в нем сидит закрытый ключ, сам внутри себя все шифрует и его оттуда нельзя скопировать.
        • 0
          Можно ли генерировать ключ внутри самого токена, чтобы он вообще не появлялся на компе?
          • 0
            При генерации вышеуказанным способом он именно на етокене и создается.
            • 0
              Ясно. А можно его защитить каким-нибудь паролем на случай утери флешки?
              • 0
                Да. Там при каждом начале работы нужно ввести пин-код. Если даже злоумышленник завладеет брелком, то без знания пин-кода не сможет его использовать, а при определенном количестве неверных попыток токен заблокируется. Плюс сам eToken предусматривает возможность «вторичной идентификации с ключом RSA» — т.е. в дополнение к пин-коду, создается пароль для каждого конкретного закрытого ключа, который запрашивается при каждом использовании.
                • 0
                  > создается пароль для каждого конкретного закрытого ключа, который запрашивается при каждом использовании.
                  Пароль при каждом использовании? Это же муторно.
                  Что мне нравится в схеме с ключами -" открыл" его один раз паролем и работаешь со всеми серверами.

                  Как обеспечивается безопасность пин-кода? Чтобы его не перехватили?
                  • 0
                    Водить на самом брелке — как на сейфе, крутя кругляшок
                    Концепт!
                    • 0
                      Я тоже об этом подумал: прикрутить маленькую клавиатурку к нему, но от этого он сильно вырастет в размерах и упадет надежность.
          • 0
            Насколько мне известно, это будет работать под *NIX если скомпилировать ssh-клиент с поддержкой смарт-карт — см. www.opensc-project.org/, но лично я не делал этого.

            Закрытый ключ понадобится если вы захотите сделать его резервную копию. При генерации на етокене его забекапить не получится.
          • 0
            Какие ключи лушче использовать? С точки зрения надежности, производительности, поддержки.
            Смотрю eToken pro (java) объем памяти 72K, стоит где-то 1000 руб.
            • 0
              На данный момент актуальной версией ключей как раз является eToken Pro Java, по этому лучше использовать его. С точки зрения работы это тот же eToken Pro, только с большим объёмом памяти. С точки зрения надёжности, по опыту ключи намного чаще теряются чем ломаются :-)У меня ключ жил 5 лет, пока я случайно не наступил на него :-)
              • 0
                В Ростелекоме можно получить ЭЦП для доступа на сайт госуслуги.ру за 660 рублей. Как раз используется eToken Pro (Java). ;) Только надо определится, как его использовать — у меня навскидку не получилось записать в неё ещё что-либо, можно лишь очистить её полностью.
              • 0
                Уточните, пожалуйста, на клиентской машине, на которую аутентифицируемся, какие-либо настройки требуются?
                • 0
                  На клиенте (в случае Windows) должен стоять eToken PKI Client, чтобы система корректно распознавала подключаемые смарт-карты. Больше никаких дополнительных настроек не требуется.

                  На сервере — никакого дополнительного ПО не нужно. Только разрешить аутентификацию по ключу и добавить публичный ключ в список авторизованных.
                • 0
                  Кстати для тех, кто как и я, обламался на несовместимости KeyManager с Firefox 6, рекомендую open-source утилиту XCA. На Windows7 работает с eToken без проблем.

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

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