LINUX.ORG.RU

История изменений

Исправление 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, :

==== Скорректировал оформление, а то совсем ничего не понять.====
==== Разбито на два сообщения. №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