(2021-07-20 10:31:57 отредактировано Ilia Che)

Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Здравствуйте! Можно ли настроить токен так, чтобы при его извлечении, компьютер блокировался?
Я работаю на ОС Убунту, пытался настроить аутентификацию, следуя инструкциям в портале документации Рутокен. Итак, что я сделал:
1. git clone https://github.com/AktivCo/rutoken-linux-gui-manager --recursive
2. sudo apt-get install pcscd opensc openssl libpam-p11 libengine-pkcs11-openssl
3. Создал файл   /usr/share/pam-configs/p11
4. Записал туда:
Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11.so /usr/lib/librtpkcs11ecp.so
5. Прописал команду sudo pam-auth-update
И Выбрал следующие параметры:
Pam_P11, register user sessions in the systemd control group hierarchy, GNOME Keyring Daemon - login keyring managment, inheritable capabilities management
Не выбрал: UNIX authentication, create home directory on login
6. В терминале открыл token-assistent.run
Выбрал токен
Сгенерировал ключи и сертификат
Нажал на "Настроить локальную аутентификацию для данного сертификата"
Появляется уведомление - Локальная аутентификация настроена
В итоге, при запуске ПК требуется ввести пароль рутокен, НО при извлечении токена в уже запущенном рабочем столе, ПК не блокируется, что и хотелось бы исправить

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Здравствуйте,
Блокировка компьютера при извлечении токена описана в статье на Портале Документации.

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Ilia Che, добрый день!

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

Попробуйте использовать команду:

xdg-screensaver lock

Или другие варианты по ссылке https://wiki.ubuntu.com/DebuggingScreen … ckingWorks

Подскажите также версию ОС и графическую оболочку, которую вы используете, чтобы мы смогли улучшить автонастройщик.

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Ubuntu 18.04.5 LTS
Правильно ли я понял, что мне необходимо дополнительно к уже совершенным действиям создать папку etc,затем  pam_pkcs11 и там уже файл pkcs11_eventmgr.conf? И что нужно вставить в него? Весь приведенный в статье код?

pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
     
    # Настройка сообщений отладки
    debug = false;

    # Время опроса в секундах
    polling_time = 1;

    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;

    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module = usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;

    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;

        action = "/bin/false";
    }

    # Карта извлечена
    event card_remove {
        on_error = ignore;
         
        # Вызываем функцию блокировки экрана
       
        # Для GNOME
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";

            # Для XFCE
            # action = "xflock4";

            # Для Astra Linux (FLY)
            # action = "fly-wmfunc FLYWM_LOCK";
    }

    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;

        action = "/bin/false";
    }
}

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Ilia Che, сначала нужно поставить пакет

libpam-pkcs11

Затем отредактируйте файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf

pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
     
    # Настройка сообщений отладки
    debug = false;
 
    # Время опроса в секундах
    polling_time = 1;
 
    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;
 
    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module = usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;
 
    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Карта извлечена
    event card_remove {
        on_error = ignore;
         
        # Вызываем функцию блокировки экрана
       
        # Для GNOME 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";

    }
 
    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

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

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

У меня появились новые вопросы.. Итак, я решил пройти все заново, поэтому переустановил систему и сразу начал следовать инструкции Локальная аутентификация в Linux по ГОСТ 2012.
Все действия я совершал в корневой папке от имени админа
1. sudo apt-get install libccid pcscd opensc openssl libpam-pkcs11
2. wget --no-check-certificate https://download.rutoken.ru/Rutoken/PAM … m.so.1.0.0
3. sudo cp librtpam.so.1.0.0 /usr/lib/x86_64-linux-gnu/
    sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpam.so.1.0.0
4. wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKC … cs11ecp.so
5. sudo cp librtpkcs11ecp.so /usr/lib/x86_64-linux-gnu/
    sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
6. pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -T
Так как до этого я создавал и ключи, и сертификат на токене, то пропустил следующие инструкции и сразу перешел к настройке аутентификации
7. sudo nano /usr/share/pam-configs/rtpam-gost
8. Name: Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient usr/lib/x86_64-linux-gnu/librtpam.so.1.0.0 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
9. sudo pam-auth-update
10. sudo login - проверить правильность настройки я не смог, потому что запришивалось имя пользователя, которое почему-то было постоянно неверно..
11. sudo nano /etc/pam_pkcs11/pkcs11_eventmgr.conf
12. pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
     
    # Настройка сообщений отладки
    debug = false;

    # Время опроса в секундах
    polling_time = 1;

    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;

    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module = usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;

    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;

        action = "/bin/false";
    }

    # Карта извлечена
    event card_remove {
        on_error = ignore;
         
        # Вызываем функцию блокировки экрана
       
        # Для GNOME
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";

    }

    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;

        action = "/bin/false";
    }
}
13. Зашел в настройки запуска приложений и добавил туда конфиг: в  строке "команда" прописал путь к конфигу
14. Нажимаю на перезапуск, ПК выключается и уже не запускается. Загрузка не идет, я достаточно долго ждал. Пробовал на втором ПК проделать то же самое - такая же картина.
https://forum.rutoken.ru/uploads/images/2021/08/eb390e2560045acbd3a1a0734b80216a.jpg

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Добрый день.
В нашей инструкции были допущены две ошибки:
1. В вашем пункте 8 cтрока
Auth: sufficient usr/lib/x86_64-linux-gnu/librtpam.so.1.0.0 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
должна выглядеть как
Auth: sufficient /usr/lib/x86_64-linux-gnu/librtpam.so.1.0.0 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
После этого должна успешно проходить команда sudo login

2. В пункте 12 строка:
pkcs11_module = usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;
должна выглядеть как
pkcs11_module = /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;

Для автоматической блокировки экрана при извлечении токена нужно создать файл /etc/xdg/autostart/smartcard-screensaver.desktop с содержимым:
[Desktop Entry]
Type=Application
Name=Smart Card Screensaver
Comment=Application to lock screen on smart card removal.
Exec=/usr/bin/pkcs11_eventmgr daemon

После перезагрузки должно все заработать.

Ilia Che пишет:

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

У вас Ubuntu 18.04? Кроме выше описанных действий еще что-то делали с системой?
Токен был подключен во время загрузки?

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Здравствуйте! В общем, вроде бы получилось настроить блокировку при извлечении и запрос пароля токена при входе.
Правда теперь ПК не запрашивает пароль пользователя-админа совсем. В терминале если набрать команду sudo su - зайти как админ, нужен будет пароль токена. Скажите, пожалуйста, как это исправить. Возможно, в настройке PAM нужно что-то поменять..

https://forum.rutoken.ru/uploads/images/2021/08/a4914f828d0a802372f58bcb5316197f.png

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Если вы включите пункт "Unix authentification", то сможете входить и по пин-коду токена и по паролю.

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

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

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

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

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Да, пароль запрашивается, если нет рутокена. Но можно ли настроить так, чтобы при входе запрашивался только рутокен, а при других взаимодействиях с системой, в том числе, когда нужно зайти как админ в терминале, запрашивался пароль ПК?

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

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

А чем не устраивает вариант вводить в консоли пин-код от токена?

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Хорошо. Хотел, чтобы пользователь(сотрудник) мог только работать в системе, не изменяя ее. Ну и при этом ПК должен быть защищен от посторонних лиц при помощи токена) Большое Вам спасибо за помощь! Очень помогли мне.

Re: Блокирование компьютера при извлечении рутокена ЭЦП 2.0

Подскажите, пожалуйста, можно ли полностью отключить unix аутентификацию? в настройках PAM я убрал галочку, но при входе после ввода пина от рутокена, через несколько минут запрашивается пин пользователя