Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Добрый день

Тоже столкнулся с этой проблемой.
Дистрибутив Debian 9.5

[user@comp Downloads]$ ssh-add -s /usr/lib/librtpkcs11ecp.so
Enter passphrase for PKCS#11:
Could not add card "/usr/lib/librtpkcs11ecp.so": agent refused operation

Без ssh-agent использование токена для *nix админа не представляется возможным. Каждый раз вводить ПИН...
Печально, что проблему так и не решили до сих пор.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

мы, *nix пользователи – не в приоритете. готов поспорить, за эту проблему за истекший год никто просто не брался.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Добрый день, dim.

Мы помним про эту проблему, она находится в очереди задач, но пока не решена.

P.S. Надеюсь вы понимаете, что ввод PIN кода каждый раз является основой безопасности хранения чего-либо на токене. Если PIN знает кто-то кроме Вас или он сохранен в софте, то может быть использован без Вашего ведома.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Владимир Салыкин пишет:

Надеюсь вы понимаете, что ввод PIN кода каждый раз является основой безопасности хранения чего-либо на токене. Если PIN знает кто-то кроме Вас или он сохранен в софте, то может быть использован без Вашего ведома.

Вы совершенно случайно исключили третий вариант: кэширование PIN-кода приложением в сеансе.
Как компромисс между безопасностью и удобством.
Хотя бы потому что необходимость слишком частого ввода PIN-кода создаёт практически непреодолимые соблазны использования «простых» комбинаций. И необходимость учёта вероятности ошибок ввода. Особенно после замены заученного долгим регулярным использованием PIN-кода.

P.S. Именно такая логика (ввод passphrase ключа один раз при его загрузке) реализована в практически стандартном приложении PAGEANT.EXE.
Вы утверждаете, что она неправильна?

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Кстати, использование протокола http во времена, когда давно пропагандируется переход на протокол https — информативный маркер полноты подхода разработчика к решению задачи безопасности.

Как и критическая необходимость JavaScript'а без проверки поддержки фичи улиентом.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Добрый день, Бравлинъ.

Ваши аргументы понятны. Поддержка ssh-add в планах есть, но четких сроков по этой задачи сейчас нет. Как только будет реализовано - напишем в эту тему. Если для Вас это критично, то мы можем форсировать задачу, если Вы готовы обсуждать условия.

P.S. замечу, что нет никакой проблемы с "простыми комбинациями". PIN-код это не пароль и политики на него не нужны. Токен аппаратно блокирует попытки перебора. И стандартная установка в 10 попыток делает невероятной удачей успешный перебор даже PIN кода из 5-6 цифр.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Сегодня обновил до openssh-8.0_p1-r4, актуальная librtpkcs11ecp.so с ней работает. Вопрос закрыт, разработчикам спасибо за оперативное решение вопроса.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

На Debian 11 c openssh 8.4p1 снова не работает. Что делать?

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

ilmarranen, добрый день!

Опишите, пожалуйста, ваши действия и ситуацию подробнее. Попробуйте также использовать актуальную версию pkcs11ecp: https://www.rutoken.ru/support/download/pkcs/

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Debian 10 и openssh 7.x  - работает "ssh -o ..." с последней версией библиотеки, однако "ssh-add" возвращает только "Could not add card "/usr/lib/librtpkcs11ecp.so": agent refused operation" на запрос PIN.

В связи с этим решено было обновиться до Debian 11 c openssh 8.4p1 - под впечатлением от комментария #22 в данной теме.
В итоге - "Could not add card "/usr/lib/librtpkcs11ecp.so": agent refused operation", тогда как обычное ssh подключение работает по-прежнему.

Токен  ЭЦП 3.0 NFC 3100, ключ RSA 4096 bit

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

ilmarranen, добрый день!

Проблема скорее всего воспроизведётся и с другой библиотекой pkcs11, например с opensc-pkcs11.so.

Проверьте,  наличие живого ssh-agent'а (а если такого нет, то запускать его, например, так: eval $(ssh-agent)), иначе ssh-add связывается с дефолтным gnome-keyring-daemon'ом: https://github.com/ThomasHabets/simple- … /issues/30

Проверьте, что ssh-agent запускает ssh-pkcs11-helper.

Описание того, что вы наблюдаете похоже на этот тред: https://www.spinics.net/lists/openssh-u … 06440.html

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Павел Анфимов пишет:

ilmarranen, добрый день!

Проблема скорее всего воспроизведётся и с другой библиотекой pkcs11, например с opensc-pkcs11.so.

Проверьте,  наличие живого ssh-agent'а (а если такого нет, то запускать его, например, так: eval $(ssh-agent)), иначе ssh-add связывается с дефолтным gnome-keyring-daemon'ом: https://github.com/ThomasHabets/simple- … /issues/30

Запускаю агент:

ssh-agent -d                  
SSH_AUTH_SOCK=/tmp/ssh-D1lkqt0YYNTl/agent.16159; export SSH_AUTH_SOCK;
echo Agent pid 16159;
debug2: fd 3 setting O_NONBLOCK

В параллельной консоли:

┌─[root@arm] - [/home/ilmarranen] - [Пн окт 24, 13:01]
└─[$]> ps -ax | grep ssh-agent
  16047 pts/1    S+     0:00 ssh-agent -d
┌─[root@arm] - [/home/ilmarranen] - [Пн окт 24, 13:01]
└─[$]> ssh-add -v -s /usr/lib/librtpkcs11ecp.so 
Could not open a connection to your authentication agent.
┌─[root@arm] - [/home/ilmarranen] - [Пн окт 24, 13:01]
└─[$]> SSH_AUTH_SOCK=/tmp/ssh-D1lkqt0YYNTl/agent.16159; export SSH_AUTH_SOCK;
┌─[root@arm] - [/home/ilmarranen] - [Пн окт 24, 13:03]
└─[$]> ssh-add -v -s /usr/lib/librtpkcs11ecp.so                              
Enter passphrase for PKCS#11: 
Could not add card "/usr/lib/librtpkcs11ecp.so": agent refused operation

После этого полный отладочный лог ssh-agent'а:

ssh-agent -d                  
SSH_AUTH_SOCK=/tmp/ssh-D1lkqt0YYNTl/agent.16159; export SSH_AUTH_SOCK;
echo Agent pid 16159;
debug2: fd 3 setting O_NONBLOCK
debug2: fd 4 setting O_NONBLOCK
debug1: process_message: socket 1 (fd=4) type 20
refusing PKCS#11 add of "/opt/aktivco/rutokenecp/amd64/librtpkcs11ecp.so": provider not allowed
Павел Анфимов пишет:

Проверьте, что ssh-agent запускает ssh-pkcs11-helper.

Как это проверить?

Павел Анфимов пишет:

Описание того, что вы наблюдаете похоже на этот тред: https://www.spinics.net/lists/openssh-u … 06440.html

Думаю, что не совсем. Там обсуждают проблему повторного добавления ключа после его удаления (видимо вместе с провайдером). Я же не могу добавить и первый раз.

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

ilmarranen,

Как это проверить?

ps -ef | grep ssh-pkcs11-helper

Ошибка "provider not allowed" описана здесь:
https://github.com/openssh/openssh-port … nt.c#L1401

При этом:

#ifndef DEFAULT_ALLOWED_PROVIDERS
# define DEFAULT_ALLOWED_PROVIDERS "/usr/lib*/*,/usr/local/lib*/*"
#endi

Скопируйте библиотеку librtpkcs11ecp.so  из /opt/aktivco/rutokenecp/amd64/librtpkcs11ecp.so в /usr/lib

(2022-10-24 14:38:24 отредактировано ilmarranen)

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

Павел Анфимов пишет:

ilmarranen,

Как это проверить?

ps -ef | grep ssh-pkcs11-helper

Такого процесса при запущенном ssh-agent нет.

Павел Анфимов пишет:

Скопируйте библиотеку librtpkcs11ecp.so  из /opt/aktivco/rutokenecp/amd64/librtpkcs11ecp.so в /usr/lib

Библиотека итак находится по указанному пути, точнее ссылка на неё:

┌─[root@arm] - [/home/ilmarranen] - [Пн окт 24, 14:13]
└─[$]> ls -lah /usr/lib/librtpkcs11ecp.so 
lrwxrwxrwx 1 root root 47 сен  7 18:31 /usr/lib/librtpkcs11ecp.so -> /opt/aktivco/rutokenecp/amd64/librtpkcs11ecp.so

Об этом же говорит лог из моего предыдущего сообщения - обращение к библиотеке идет по полному пути, однако добавление ключа отклонено:

refusing PKCS#11 add of "/opt/aktivco/rutokenecp/amd64/librtpkcs11ecp.so": provider not allowed

Обратите также внимание вот на какой косвенный признак - при попытке ssh-add запрос PIN выглядит следующим образом:

Enter passphrase for PKCS#11:

Тогда как при успешной попытке применения ключа с обычным ssh по-другому:

Enter PIN for 'CardName': 

Re: librtpkcs11ecp.so и openssh-7.5_p1-r1

ilmarranen, до загрузки ssh-pkcs11-helper еще дело не доходит.

Проблема в том, что по пути /usr/lib/ находится симлинк на librtpkcs11ecp.so.
Физическое расположение библиотеки по пути /opt/aktivco/rutokenecp/amd64/ не находится в списке разрешенных (DEFAULT_ALLOWED_PROVIDERS "/usr/lib*/*,/usr/local/lib*/*").

Удалите симлинк в /usr/lib/, скопируйте туда библиотеку из папки /opt/aktivco/rutokenecp/amd64/, и попробуйте снова.

Или передавайте параметр -P <allowed_providers>, например так:  -p /opt/aktivco/rutokenecp/amd64/*
Подробнее: https://manpages.debian.org/testing/ope … .1.en.html

Проверка добавилась начиная с версии OpenSSH 7.4p1: https://github.com/openssh/openssh-port … bbba61c0cc