LINUX.ORG.RU
ФорумAdmin

Альт линукс авторизация п рутокену

 


1

1

Здравствуйте, исходные данные стенда:

Альт линукс сервер сп, на нем контроллер домена самба, и удостоверяющий центр., самба развернута, два пользователя, один стандартный 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


но, после блокировки экрана вход по пинкоду просто недоступен

вероятно, что-то с PAM, включать debug и смотреть

Для экрана блокировки (mate-screensaver)

точно такое название facility? включать debug и смотреть

Ещё, может, выгружается или USB или что-то, относящееся к самарт-карте. В принципе, будет видно в дебаге PAM, но можно ещё посмотреть в kernel log и dmesg.

Я бы туда покопал

anonymous
()

==== Скорректировал оформление, а то совсем ничего не понять.====
==== Разбито на два сообщения. №1 ====

Здравствуйте, исходные данные стенда:

Альт линукс сервер сп - на нем контроллер домена самба, и удостоверяющий центр.
Cамба развернута, два пользователя, один стандартный 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 ПОЛЬЗОВАТЕЛЬ

Atlant ★★★★★
()
Ответ на: комментарий от Atlant

==== Скорректировал оформление, а то совсем ничего не понять.====
==== Разбито на два сообщения. №2 ====

ЧАСТЬ 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

Atlant ★★★★★
()
Последнее исправление: Atlant (всего исправлений: 1)
Ответ на: комментарий от AS

У СП техподдержка есть, лучше там спрашивать. А то все эти ФСТЭК, ограничения и т.п....

Плюсую! Я в прошлом году начал решать проблему, но меня резко осадили со стороны заказчика на тему «только через тех.под.»
Впрочем конечного ответа от ТП я так и не дождался.

anc ★★★★★
()