Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline berdievda  
#11 Оставлено : 26 декабря 2023 г. 9:16:16(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Автор: nickm Перейти к цитате

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

Работали бы хотя бы сценарии... Через
Код:
udevadm monitor --env
смотрел переменные событий, взял от туда idVendor и idProduct, ID_VENDOR_ID и ID_MODEL_ID для ENV, однако же по непонятным для меня причинам, он не отрабатывает скрипт, вообще ни в какую, права на исполнения есть.. Ладно, что ж, буду думать, спасибо за разного рода информацию в топике!
Offline nickm  
#12 Оставлено : 26 декабря 2023 г. 12:08:22(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,864

Сказал(а) «Спасибо»: 652 раз
Поблагодарили: 506 раз в 477 постах
Автор: berdievda Перейти к цитате
Через
Код:
udevadm monitor --env
смотрел переменные событий, взял от туда idVendor и idProduct, ID_VENDOR_ID и ID_MODEL_ID для ENV

Хмм, странно, так как в Моём случае, в "Астра SE 1.7.5", не все перечисленные Вами переменные отображаются и рабочие правила для токенов "Рутокен" выглядят так:

Правило на событие подключения токена:
Код:
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_VENDOR_ID}=="0a89", RUN+="что-нибудь запускаем"

Правило на событие отключения токена:
Код:
SUBSYSTEM=="usb", ACTION=="remove", ENV{PRODUCT}=="a89/*", RUN+="что-нибудь запускаем"

Сами события выглядят так, например, для "Рутокен ЭЦП 3.0":



Как видно, не все переменные присутствуют в обоих событиях, тот же "PRODUCT" имеется и в add и remove, а "ID_VENDOR_ID" только в событии add.

Отредактировано пользователем 26 декабря 2023 г. 12:44:05(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил nickm за этот пост.
berdievda оставлено 27.12.2023(UTC)
Offline berdievda  
#13 Оставлено : 27 декабря 2023 г. 11:08:15(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Автор: nickm Перейти к цитате

Сами события выглядят так, например, для "Рутокен ЭЦП 3.0":


Здравствуйте. Реализовал я то, что хотел. Проблема была в том, что udev запускает от рута, а сценарий от юзера, поэтому он не отрабатывал сценарий вообще. Добавил использование скрипта через su -всё заработало, но вот возникла интересная ситуация. Значит этапы, которые проводились, следующие:
  1. Я установил рутокен в usb порт, индикаторы на токене замигали - сертификат перенесён в личное хранилище;
  2. Вытащил рутокен из usb - удалён сертификат из личного хранилища;
  3. Устанавливаю второй раз уже другой токен - не устанавливается уже.


Решил вытащить токен и подождать. В общем пришёл к выводу, что криптопро нужно 60 секунд для того, чтобы обновить сессию udev. То есть только после 60 секунд работает сценарии, которые были прописаны. Возможно ли как-нибудь уменьшить время обновления udev, чтобы можно было добавлять и удалять из хранилища сертификаты без времени ожидания? Может в скрипте дополнительно прописать что-то типо:
Код:
su -c "udevadm control --reload" administrator?
Offline nickm  
#14 Оставлено : 27 декабря 2023 г. 11:52:10(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,864

Сказал(а) «Спасибо»: 652 раз
Поблагодарили: 506 раз в 477 постах
Автор: berdievda Перейти к цитате
Реализовал я то, что хотел. Проблема была в том, что udev запускает от рута, а сценарий от юзера, поэтому он не отрабатывал сценарий вообще.

Покажите, пжлст., итоговые правила udev;

Автор: berdievda Перейти к цитате
В общем пришёл к выводу, что криптопро нужно 60 секунд для того, чтобы обновить сессию udev.

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

Автор: berdievda Перейти к цитате
чтобы можно было добавлять и удалять из хранилища сертификаты без времени ожидания?

Никакого ожидания, для установки сертификата с токена и очистки хранилища uMy не требуется.
thanks 1 пользователь поблагодарил nickm за этот пост.
berdievda оставлено 28.12.2023(UTC)
Offline berdievda  
#15 Оставлено : 27 декабря 2023 г. 12:28:42(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Автор: nickm Перейти к цитате

Покажите, пжлст., итоговые правила udev;

Структура файлов следующая - файлы 90-rutoken.rules и 90-rutoken-removed.rules; первый отвечает за инициализацию подключения рутокена в usb, второй за очистку личного храналища. В 90-rutoken.rules прописано:
Код:
SUBSYSTEM=="usb", ACTION=="add", ENV{PRODUCT}=="a89/25/100", RUN+="/usr/bin/rutoken-inserted.sh"

Скрипт rutoken-inserted.sh:
Код:
su -c "/home/administrator/token_insert_hook.sh" administrator


Тут указывается скрипт token_insert_hook.sh, в котором:
Код:

#!/bin/sh -e

echo `date` script called >> /home/administrator/token_insert_hook.log
cd /opt/cprocsp/bin/amd64
./csptestf -absorb -certs -autoprov >> /home/administrator/token_insert_hook.log 2>&1
echo `date` script finished >> /home/administrator/token_insert_hook.log


На всякий случай скидываю файл логов токена:
Код:

Ср дек 27 10:56:43 MSK 2023 script called
Match: SCARD\rutoken_lt_428b9d54\0A00\A4AA
OK.
Total: SYS: 0,040 sec USR: 0,150 sec UTC: 0,320 sec
[ErrorCode: 0x00000000]
Ср дек 27 10:56:44 MSK 2023 script finished
Ср дек 27 10:57:02 MSK 2023 script called
No containers.
Total: SYS: 0,020 sec USR: 0,080 sec UTC: 0,150 sec
[ErrorCode: 0x00000000]
Ср дек 27 10:57:02 MSK 2023 script finished
Ср дек 27 10:57:02 MSK 2023 script called
No containers.
Total: SYS: 0,010 sec USR: 0,090 sec UTC: 0,160 sec
[ErrorCode: 0x00000000]
Ср дек 27 10:57:02 MSK 2023 script finished


Примечательно, что сперва он записал токен, однако через 20 секунд уже выдал No containers.
И через 60 секунд ровно он уже помещает в личное хранилище:
Код:

Ср дек 27 12:07:18 MSK 2023 script called
Match: SCARD\rutoken_lt_404465b1\0A00\A4A8
OK.
Ср дек 27 12:08:19 MSK 2023 script finished
Ср дек 27 12:08:27 MSK 2023 script called
No containers.
Total: SYS: 0,020 sec USR: 0,080 sec UTC: 0,140 sec
[ErrorCode: 0x00000000]
Ср дек 27 12:08:27 MSK 2023 script finished
Ср дек 27 12:09:39 MSK 2023 script called
Match: SCARD\rutoken_lt_404465b1\0A00\A4A8
OK.
Total: SYS: 0,040 sec USR: 0,220 sec UTC: 1,220 sec
[ErrorCode: 0x00000000]

Вот тут в логах выше видно, что если через 8 секунд вставлять токен - показывает No containers., а уже через 72 секунды относительно статуса No containers. уже записывает в хранилище.
На основании этого и сделал вывод, что ему нужно 60 секунд для обновления сессии :)

Offline nickm  
#16 Оставлено : 27 декабря 2023 г. 16:45:42(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,864

Сказал(а) «Спасибо»: 652 раз
Поблагодарили: 506 раз в 477 постах
Автор: berdievda Перейти к цитате
Проблема была в том, что udev запускает от рута, а сценарий от юзера, поэтому он не отрабатывал сценарий вообще.

Во-первых: проблема была не в этом точно, а в том, что Вы не правильно составляли правила udev, когда не верно указывали переменные окружения;

Автор: berdievda Перейти к цитате
В общем пришёл к выводу, что криптопро нужно 60 секунд для того, чтобы обновить сессию udev.

Во-вторых: как и говорилось выше этот вывод не верный - изменил юнит на стенде с указанием Вашей команды логгирования и получил:
Код:
Ср дек 27 18:33:14 +05 2023 script called
Match: SCARD\rutoken_fkc_418caab1\73a48247c-af6c-415e-658c-0f9ee627f6c
Match: SCARD\rutoken_ecp_418caab1\0000\5050
Match: SCARD\rutoken_ecp_418caab1\0000\6161
OK.
Total: SYS: 0,010 sec USR: 0,170 sec UTC: 0,590 sec
[ErrorCode: 0x00000000]
Ср дек 27 18:33:14 +05 2023 script finished

Ср дек 27 18:33:19 +05 2023 script called
Match: SCARD\rutoken_fkc_418caab1\73a48247c-af6c-415e-658c-0f9ee627f6c
Match: SCARD\rutoken_ecp_418caab1\0000\5050
Match: SCARD\rutoken_ecp_418caab1\0000\6161
OK.
Total: SYS: 0,010 sec USR: 0,150 sec UTC: 0,570 sec
[ErrorCode: 0x00000000]
Ср дек 27 18:33:20 +05 2023 script finished

Ср дек 27 18:33:26 +05 2023 script called
Match: SCARD\rutoken_fkc_418caab1\73a48247c-af6c-415e-658c-0f9ee627f6c
Match: SCARD\rutoken_ecp_418caab1\0000\5050
Match: SCARD\rutoken_ecp_418caab1\0000\6161
OK.
Total: SYS: 0,000 sec USR: 0,160 sec UTC: 0,580 sec
[ErrorCode: 0x00000000]
Ср дек 27 18:33:26 +05 2023 script finished


В-третьих: для чего в команде установки сертификатов указывать параметр:
Код:
-autoprov         Get provider type from algid and use default type name

?
thanks 1 пользователь поблагодарил nickm за этот пост.
berdievda оставлено 28.12.2023(UTC)
Offline berdievda  
#17 Оставлено : 27 декабря 2023 г. 17:24:37(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Автор: nickm Перейти к цитате

Во-первых: проблема была не в этом точно, а в том, что Вы не правильно составляли правила udev, когда не верно указывали переменные окружения;

Изначально, когда я составил правило udev с указанием переменных окружения, я проотлаживал применение правил при помощи
Код:
udevadm test  --action=add /path/to/device

Показало, что отрабатывает он верно и запускает как положено скрипт, но не выполняет то, что требует по скрипту. Углубившись в udev прочитал, что сам udev запускается от рута, а сценарии, что прописаны в udev от юзера. Указав в запуске скрипта
Код:
su -c "название_команды" username
он начал отрабатывать скрипты, но не так, как нужно (проблему писал выше).

Автор: nickm Перейти к цитате
В-третьих: для чего в команде установки сертификатов указывать параметр:

Честно признаться не знал для чего нужен был этот параметр. Взял команду из астра вики, темы Работа с КриптоПРО. Попробую без него прогнать работу.

Отредактировано пользователем 27 декабря 2023 г. 17:25:31(UTC)  | Причина: Не указана

Offline berdievda  
#18 Оставлено : 27 декабря 2023 г. 17:41:59(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Автор: nickm Перейти к цитате
Во-вторых: как и говорилось выше этот вывод не верный - изменил юнит на стенде с указанием Вашей команды логгирования и получил:

Может в этом и дело, что я делаю по средству udev -> /usr/bin/*.sh -> /home/username/*.sh, а Вы через systemd-юниты.
В линукс ещё "зелёный", пока что systemd особо не трогал (хоть и были попытки по гайду из Интернета со скриптом автозагрузки). Завтра изучу литературу и попробую сделать так, как это реализовали Вы. Благодарю!

Отредактировано пользователем 27 декабря 2023 г. 17:42:32(UTC)  | Причина: Не указана

Offline berdievda  
#19 Оставлено : 27 декабря 2023 г. 17:43:56(UTC)
berdievda

Статус: Участник

Группы: Участники
Зарегистрирован: 15.12.2023(UTC)
Сообщений: 12
Российская Федерация
Откуда: Петрозаводск

Сказал(а) «Спасибо»: 6 раз
Цитата:
Попробую без него прогнать работу.

Результат тот же Brick wall
Offline nickm  
#20 Оставлено : 27 декабря 2023 г. 17:55:29(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,864

Сказал(а) «Спасибо»: 652 раз
Поблагодарили: 506 раз в 477 постах
Автор: berdievda Перейти к цитате
Показало, что отрабатывает он верно

Автор: berdievda Перейти к цитате
файл создаёт, но не удаляет.

Первая проблема была здесь и по какой причине было сказано выше:
Автор: nickm Перейти к цитате

Как видно, не все переменные присутствуют в обоих событиях, тот же "PRODUCT" имеется и в add и remove, а "ID_VENDOR_ID" только в событии add.


Автор: berdievda Перейти к цитате
Углубившись в udev прочитал, что сам udev запускается от рута, а сценарии, что прописаны в udev от юзера.

Всё верно, об этом и было сказано выше:
Автор: nickm Перейти к цитате
И да, следует добавить, что простой запуск сценариев Вам может и не поможет, т.к. следует учитывать и понимать, от какого пользователя они будут выполняться.


Автор: nickm Перейти к цитате
попробовал создать два systemd-юнита с запуском от имени единственного пользователя системы, и два правила для токена "Rutoken ECP" с запуском этих юнитов.

Работает как часы:
  • подключил токен - сертификат установился;
  • отключил токен - личное хранилище зачистилось.

Если не сможете разобраться с прямым запуском сценариев, попробуйте использовать пользовательские юниты systemd в правилах udev с параметром запуска:
Код:
RUN+="/bin/systemctl restart <наименование_нужного_юнита>.service"

где юниты могут быть следующие, например:



+

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

Отредактировано пользователем 27 декабря 2023 г. 20:19:03(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил nickm за этот пост.
berdievda оставлено 28.12.2023(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.