LDAP Linux Auth SSS

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску


SSSD


Изначально задача стояла - сделать авторизацию (shell) в LDAP причем

* Огромный корпоративный LDAP где куча всяких данных и в целом мне не доступно управление 
* Доступ должен определяться членством в группах (обратить внимание - есть более чем 1 группа, memberOf ко торой должны иметь возможность  логиниться на сервер  что исключает pam_ldap)
* sudo для этой группы
* sudosh2 для записи сессии 


Пару слов про sssd:


SSSD (System Security Services Daemon) позволяет обращаться к удаленным механизмам аутентификации. Таким образом стирается граница между локальной и сетевой аутентификацией и допускается использование разных механизмов. Информацию о пользователях предоставляет база данных, называемая доменом, которая может служить источником данных для удаленной аутентификации. Допускается использование нескольких механизмов, что разрешает нескольким серверам реализовать различные пространства имен. Полученная информация будет предоставлена внешним приложениям с помощью стандартных интерфейсов PAM и NSS. SSSD выполняется как комплект служб, независимых от вызывающих их приложений. Поэтому приложениям необязательно создавать собственные подключения к удаленным доменам и даже не требуется знать о том, какая именно служба используется в данный момент. Локальное кэширование данных идентификации и информации о группах позволяет продолжать работу в автономном режиме независимо от источника данных (LDAP, NIS, IPA, DB, Samba и т.п.) и в целом повышает производительность. SSSD допускает использование нескольких поставщиков одного типа (например, LDAP). За подробной информацией обратитесь к руководству по развертыванию Red Hat Enterprise Linux 6.


sudosh2

spec есть в комплекте, сборка особого труда не представляет.
https://github.com/squash/sudosh2


rpm -ivh sudosh2-1.0.6-1.el5.x86_64.rpm

/etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/usr/bin/sudosh
head -1 /etc/passwd
root:x:0:0:root:/root:/usr/bin/sudosh

ldap auth via pam_sss

yum  install sssd-ldap
yum -y install openldap-clients

/etc/sssd/sssd.conf

[sssd]
config_file_version = 2
services = nss, pam, sudo, ssh
domains = default
reconnection_retries = 100

[nss]
default_shell = /bin/sh

[pam]

[domain/default]
ldap_tls_reqcert = never
id_provider = ldap
auth_provider = ldap
access_provider = ldap

ldap_uri = ldap://ldap/
dns_resolver_timeout = 15

ldap_search_base = dc=mirantis,dc=net
ldap_access_filter =  |(|(&(accessTo=itlab)(trustModel=byhost)(trustModel=fullaccess))(&(objectClass=posixAccount)(uid=mmaxur)))(memberOf=cn=it-cloud-ops,ou=groups,o=mirantis,dc=mirantis,dc=net)
cache_credentials = False
#enumerate = false
enumerate = True
sudo_provider = ldap
ldap_sudo_search_base = ou=sudoers,dc=mirantis,dc=net
cache_credentials = True
ldap_tls_reqcert = never
min_id = 1000
use_fully_qualified_names = False
override_shell = /usr/bin/sudosh

[autofs]

[sudo]
sudo_provider = ldap
ldap_sudo_search_base = ou=sudoers,dc=mirantis,dc=net


 /etc/init.d/sssd start

 chkconfig sssd on

/etc/openldap/ldap.conf

URI ldap://ldap/
BASE dc=mirantis,dc=net


cp  -r /etc/pam.d /root
authconfig --enablesssdauth  --enablesssd --update

Проверить: (/root/pam.d - бекап)

[root@ic3-fuel-scc ~]# diff /etc/pam.d/ /root/pam.d/
diff /etc/pam.d/fingerprint-auth /root/pam.d/fingerprint-auth
11d10
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
20d18
< session     optional      pam_sss.so
diff /etc/pam.d/fingerprint-auth-ac /root/pam.d/fingerprint-auth-ac
11d10
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
20d18
< session     optional      pam_sss.so
diff /etc/pam.d/password-auth /root/pam.d/password-auth
7d6
< auth        sufficient    pam_sss.so use_first_pass
13d11
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
18d15
< password    sufficient    pam_sss.so use_authtok
25d21
< session     optional      pam_sss.so
diff /etc/pam.d/password-auth-ac /root/pam.d/password-auth-ac
7d6
< auth        sufficient    pam_sss.so use_first_pass
13d11
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
18d15
< password    sufficient    pam_sss.so use_authtok
25d21
< session     optional      pam_sss.so
diff /etc/pam.d/smartcard-auth /root/pam.d/smartcard-auth
11d10
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
20d18
< session     optional      pam_sss.so
diff /etc/pam.d/smartcard-auth-ac /root/pam.d/smartcard-auth-ac
11d10
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
20d18
< session     optional      pam_sss.so
diff /etc/pam.d/system-auth /root/pam.d/system-auth
7d6
< auth        sufficient    pam_sss.so use_first_pass
13d11
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
18d15
< password    sufficient    pam_sss.so use_authtok
25d21
< session     optional      pam_sss.so
diff /etc/pam.d/system-auth-ac /root/pam.d/system-auth-ac
7d6
< auth        sufficient    pam_sss.so use_first_pass
13d11
< account     [default=bad success=ok user_unknown=ignore] pam_sss.so
18d15
< password    sufficient    pam_sss.so use_authtok
25d21
< session     optional      pam_sss.so

sudo