Здравствуйте, исходные данные стенда:
Альт линукс сервер сп, на нем контроллер домена самба, и удостоверяющий центр., самба развернута, два пользователя, один стандартный Administrator, второй создан Test, сертификат УЦ выпущен, подписан привязан к УЗ и записан на рутокен 3.0.
АРМ №1 Альт линукс 8 СП обновлен через СП репозиторий, бранч F1, введен в домен
АРМ №2 Альт линукс СП обновлен через СП репозиторий до, бранч F2,введен в домен
Теперь в чем проблема, нужна авторизация по рутокену без возможности входа, для УЗ домена по паролю, но с возможностью входа локальной УЗ по паролю, но втык на одном из этапов- на F1 обновлении удалось настроить вход, уход в блокировку экрана, с шероховатостями, но работает стабильно и штатно, но на F2 бранче, при чем не важно обновлять систему в начале или в конце, вход по ЭП работает, но, после блокировки экрана вход по пинкоду просто недоступен, ОС упорно запрашивает пароль вместо пинкода,, внизу произведенные настройки, может поможет. Спасибо:
ЧАСТЬ 1. НАСТРОЙКА СЕРВЕРА (SAMBA DC)
1.1. Подготовка сервера apt-get install librtpkcs11ecp pcsc-lite-ccid pcsc-lite pcsc-tools opensc libp11 p11-kit gnutls-utils systemctl enable –now pcscd.socket pcsc_scan -r pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –list-token-slots
1.2. Создание Удостоверяющего центра (CA) mkdir -p ~/demoCA/{certs,newcerts,private} touch ~/demoCA/index.txt echo «01» > ~/demoCA/serial openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ~/demoCA/private/cakey.pem openssl req -new -x509 -key ~/demoCA/private/cakey.pem -out ~/demoCA/certs/cacert.pem -days 3650 -subj «/C=RU/ST=Moscow/O=ДОМЕН/CN=CA»
1.3. Создание сертификата KDC (сервера домена) openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out ~/demoCA/private/dc-key.pem openssl req -new -key ~/demoCA/private/dc-key.pem -out ~/demoCA/dc-req.csr -subj «/C=RU/ST=Moscow/O=ДОМЕН/CN=СЕРВЕР»
cat > ~/demoCA/cert_extension_KDC << ‘EOF’ [kdc_cert] basicConstraints=CA:FALSE keyUsage=nonRepudiation,digitalSignature,keyEncipherment,keyAgreement extendedKeyUsage=1.3.6.1.5.2.3.5 subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer issuerAltName=issuer:copy subjectAltName=otherName:1.3.6.1.5.2.2;SEQUENCE:kdc_princ_name
[kdc_princ_name] realm=EXP:0,GeneralString:ДОМЕН principal_name=EXP:1,SEQUENCE:kdc_principal_seq
[kdc_principal_seq] name_type=EXP:0,INTEGER:1 name_string=EXP:1,SEQUENCE:kdc_principals
[kdc_principals] princ1=GeneralString:krbtgt princ2=GeneralString:ДОМЕН EOF
openssl ca -batch -in ~/demoCA/dc-req.csr -out ~/demoCA/certs/dc-cert.pem -cert ~/demoCA/certs/cacert.pem -extfile ~/demoCA/cert_extension_KDC -extensions kdc_cert
1.4. Настройка Samba и Kerberos mkdir -p /var/lib/samba/private/tls/ cp ~/demoCA/certs/{cacert.pem,dc-cert.pem} /var/lib/samba/private/tls/ cp ~/demoCA/private/dc-key.pem /var/lib/samba/private/tls/ chmod 600 /var/lib/samba/private/tls/dc-key.pem
В /etc/samba/smb.conf в секцию [global] добавить: tls enabled = yes tls certfile = /var/lib/samba/private/tls/dc-cert.pem tls keyfile = /var/lib/samba/private/tls/dc-key.pem tls cafile = /var/lib/samba/private/tls/cacert.pem
В /etc/krb5.conf добавить секцию: [kdc] enable-pkinit = yes pkinit_identity = FILE:/var/lib/samba/private/tls/dc-cert.pem,/var/lib/samba/private/tls/dc-key.pem pkinit_anchors = FILE:/var/lib/samba/private/tls/cacert.pem pkinit_principal_in_certificate = yes pkinit_win2k_require_binding = yes
systemctl restart samba
1.5. Подготовка Рутокена и создание сертификата пользователя pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –init-token –slot 0 –label «МЕТКА_ТОКЕНА» –so-pin ПИН_АДМИНА pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –init-pin –login –pin ПИН_ПОЛЬЗОВАТЕЛЯ –so-pin ПИН_АДМИНА pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –pin ПИН_ПОЛЬЗОВАТЕЛЯ –login –keypairgen –key-type rsa:2048 –id ID_КЛЮЧА –label МЕТКА_КЛЮЧА –token-label МЕТКА_ТОКЕНА
cat > ~/openssl-req.cnf << ‘EOF’ [ req ] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no
[ req_distinguished_name ] C = RU ST = Moscow O = ДОМЕН CN = ПОЛЬЗОВАТЕЛЬ
[ req_ext ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = otherName:1.3.6.1.4.1.311.20.2.3;UTF8:ПОЛЬЗОВАТЕЛЬ@ДОМЕН extendedKeyUsage = clientAuth,1.3.6.1.4.1.311.20.2.2 EOF
openssl req -new -out ~/rt_smb.csr -keyform engine -engine pkcs11 -key «pkcs11:token=МЕТКА_ТОКЕНА;object=МЕТКА_КЛЮЧА» -passin pass:ПИН_ПОЛЬЗОВАТЕЛЯ -config ~/openssl-req.cnf openssl x509 -req -in ~/rt_smb.csr -out ~/rt_smb.pem -CA ~/demoCA/certs/cacert.pem -CAkey ~/demoCA/private/cakey.pem -CAserial ~/demoCA/serial -days 365 -extfile ~/openssl-req.cnf -extensions req_ext pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –pin ПИН_ПОЛЬЗОВАТЕЛЯ –login –write-object ~/rt_smb.pem –type cert –id ID_КЛЮЧА –label МЕТКА_КЛЮЧА –token-label МЕТКА_ТОКЕНА pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –pin ПИН_ПОЛЬЗОВАТЕЛЯ –login –list-objects
1.6. Создание доменного пользователя samba-tool user create ПОЛЬЗОВАТЕЛЬ ‘Pa$$word’ –given-name=rutoken
В ADMC (Центр управления Active Directory) для пользователя ПОЛЬЗОВАТЕЛЬ включить опцию: «Смарт-карта необходима для интерактивного входа в систему»
samba-tool user show ПОЛЬЗОВАТЕЛЬ
ЧАСТЬ 2. НАСТРОЙКА КЛИЕНТА (АЛЬТ РАБОЧАЯ СТАНЦИЯ)
2.1. Установка необходимого ПО apt-get update apt-get install librtpkcs11ecp pcsc-lite pcsc-lite-ccid pcsc-tools opensc pam_pkcs11 libp11 sssd
2.2. Настройка pcscd systemctl stop pcscd.socket systemctl disable pcscd.socket systemctl enable –now pcscd
mkdir -p /etc/systemd/system/pcscd.service.d cat > /etc/systemd/system/pcscd.service.d/override.conf << ‘EOF’ [Service] Restart=always RestartSec=3 EOF
systemctl daemon-reload
2.3. Создание симлинков для модуля PAM ln -sf /usr/lib64/librtpkcs11ecp.so /lib64/opensc-pkcs11.so ln -sf /usr/lib64/librtpkcs11ecp.so /usr/lib64/opensc-pkcs11.so
2.4. Копирование сертификата CA mkdir -p /etc/pki/tls/certs cp /путь/к/cacert.pem /etc/pki/tls/certs/ chmod 644 /etc/pki/tls/certs/cacert.pem
2.5. Настройка pam_pkcs11 mkdir -p /etc/security/pam_pkcs11/cacerts cp /etc/pki/tls/certs/cacert.pem /etc/security/pam_pkcs11/cacerts/ c_rehash /etc/security/pam_pkcs11/cacerts/
cat > /etc/security/pam_pkcs11/pam_pkcs11.conf << ‘CONFIG’ pam_pkcs11 { debug = false; use_pkcs11_module = opensc; use_mappers = «pwent»; nullok = true; ca_dir = «/etc/security/pam_pkcs11/cacerts»; pkcs11_module opensc { module = /usr/lib64/librtpkcs11ecp.so; slot_num = 0; } } CONFIG
2.6. Настройка PAM для различных служб
Для графического входа (LightDM): cat > /etc/pam.d/lightdm << ‘EOF’ #%PAM-1.0 auth sufficient pam_pkcs11.so auth sufficient pam_sss.so auth required pam_unix.so try_first_pass account sufficient pam_sss.so account required pam_unix.so password sufficient pam_sss.so password required pam_unix.so sha512 shadow try_first_pass session optional pam_sss.so session required pam_unix.so session optional pam_mate_keyring.so auto_start EOF
Для экрана блокировки (mate-screensaver): cat > /etc/pam.d/mate-screensaver << ‘EOF’ #%PAM-1.0 auth sufficient pam_pkcs11.so auth sufficient pam_sss.so auth required pam_unix.so try_first_pass account sufficient pam_sss.so account required pam_unix.so session optional pam_sss.so session required pam_unix.so EOF
Для текстовой консоли (login): cat > /etc/pam.d/login << ‘EOF’ #%PAM-1.0 auth sufficient pam_sss.so auth required pam_securetty.so auth include common-auth account include common-account password include common-password session substack common-session session optional pam_lastlog.so nowtmp session optional pam_motd.so session optional pam_mail.so -session optional pam_console.so -session optional pam_ck_connector.so EOF
Для переключения на root (su): cat > /etc/pam.d/su << ‘EOF’ #%PAM-1.0 auth sufficient pam_rootok.so auth required pam_succeed_if.so uid = 0 quiet auth include system-auth account include system-auth password include system-auth session include system-auth session optional pam_xauth.so EOF
2.7. Настройка common-auth и других common-файлов cat > /etc/pam.d/common-auth << ‘EOF’ #%PAM-1.0 auth sufficient pam_pkcs11.so auth sufficient pam_sss.so auth required pam_unix.so try_first_pass EOF
cat > /etc/pam.d/common-account << ‘EOF’ #%PAM-1.0 account sufficient pam_sss.so account required pam_unix.so EOF
cat > /etc/pam.d/common-session << ‘EOF’ #%PAM-1.0 session optional pam_sss.so session required pam_unix.so EOF
cat > /etc/pam.d/common-password << ‘EOF’ #%PAM-1.0 password sufficient pam_sss.so password required pam_unix.so sha512 shadow try_first_pass EOF
2.8. Настройка SSSD cat > /etc/sssd/sssd.conf << ‘EOF’ [sssd] config_file_version = 2 services = nss, pam domains = ДОМЕН
[nss]
[pam] pam_cert_auth = True pam_p11_allowed_services = +gdm-password, +gdm-smartcard, +login, +sshd, +mate-screensaver pam_cert_db_path = /etc/pki/tls/certs/cacert.pem p11_child_timeout = 60
[domain/ДОМЕН] id_provider = ad auth_provider = ad chpass_provider = ad access_provider = ad default_shell = /bin/bash fallback_homedir = /home/%d/%u ad_gpo_ignore_unreadable = True ad_gpo_access_control = permissive krb5_auth_timeout = 60
ldap_user_extra_attrs = userPrincipalName ldap_user_certificate = userCertificate
[certmap/ДОМЕН/adcerts] matchrule = .ДОМЕН. maprule = (userPrincipalName={subject_principal}) EOF
chmod 600 /etc/sssd/sssd.conf
2.9. Настройка LightDM cat >> /etc/lightdm/lightdm.conf << ‘EOF’
[Seat:*] greeter-show-manual-login=true greeter-hide-users=false user-session=mate allow-guest=false EOF
2.10. Создание пользователя в AccountsService mkdir -p /var/lib/AccountsService/users cat > /var/lib/AccountsService/users/ПОЛЬЗОВАТЕЛЬ << ‘EOF’ [User] SystemAccount=false XSession=mate Icon= EOF chmod 644 /var/lib/AccountsService/users/ПОЛЬЗОВАТЕЛЬ
2.11. Настройка UDEV для правильных прав на токен cat > /etc/udev/rules.d/99-rutoken.rules << ‘EOF’
Rutoken ECP
ACTION==«add|change», SUBSYSTEM==«usb», ATTRS{idVendor}==«0a89», ATTRS{idProduct}==«0020», MODE=«0666» EOF
udevadm control –reload-rules udevadm trigger
2.12. Настройка автоматического перезапуска служб после ждущего режима cat > /etc/systemd/system/resume-pcscd.service << ‘EOF’ [Unit] Description=Restart pcscd and sssd after resume After=suspend.target
[Service] Type=oneshot ExecStart=/bin/systemctl restart pcscd ExecStart=/bin/sleep 2 ExecStart=/bin/systemctl restart sssd ExecStart=/bin/sleep 1
[Install] WantedBy=suspend.target EOF
systemctl enable resume-pcscd.service
2.13. Создание домашней директории пользователя mkdir -p /home/ДОМЕН/ПОЛЬЗОВАТЕЛЬ chown -R ПОЛЬЗОВАТЕЛЬ:«domain users» /home/ДОМЕН/ПОЛЬЗОВАТЕЛЬ chmod 700 /home/ДОМЕН/ПОЛЬЗОВАТЕЛЬ
2.14. Запуск и проверка служб systemctl restart pcscd sssd lightdm systemctl enable pcscd sssd lightdm
2.15. Проверка работы
Проверка токена: pkcs11-tool –module /usr/lib64/librtpkcs11ecp.so –pin ПИН_ПОЛЬЗОВАТЕЛЯ –login –list-objects Должны увидеть Public Key, Private Key и Certificate.
Проверка Kerberos: kinit -X X509_user_identity=PKCS11:librtpkcs11ecp.so ПОЛЬЗОВАТЕЛЬ klist