Я хочу иметь возможность аутентифицировать пользователей (через ssh) для определенных групп хостов на основе членства пользователей в сетевой группе LDAP. Сервер LDAP - dsee7. Дистрибутив - OEL 6.5 с openldap в качестве клиента.
Единственная учетная запись, которую мы не хотим аутентифицировать с помощью LDAP, - это root.
sssd.conf выглядит так:
[sssd]
config_file_version = 2
services = nss,pam,autofs
domains = default
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
[pam]
[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
cache_credentials = True
ldap_search_base = dc=e-durp,dc=com
id_provider = ldap
ldap_uri = ldaps://lvl1.lvs01.edurp.com/ ldaps://lvl1.lvs01.edurp.com/
ldap_tls_cacertdir = /etc/openldap/cacerts
Файл /etc/openldap/ldap.conf выглядит так:
URI ldaps://ldap.edurp.com/ ldaps://ldap1.edurp.com ldaps://ldap2.edurp.com
BASE dc=edurp,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/openldap/cacerts/ldap_ca.cert
TLS_REQCERT never
nsswitch.conf выглядит так:
passwd: files compat
shadow: files compat
passwd_compat: sss
shadow_compat: sss
group: files sss
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: sss files
publickey: nisplus
automount: files ldap
aliases: files nisplus
И /etc/pam.d/system-auth читает:
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
Итак, я попытался добавить сетевую группу в /etc/security/access.conf следующим образом:
#- : ALL : ALL
-:@eeederp: ALL
и перезапустил sssd на всякий случай. . .
Мой пользователь принадлежит к сетевой группе eeederp и все еще может войти, используя свой пароль LDAP.
Любые подсказки будут оценены.
Не эксперт по pam, но если вы используете access.conf, вам нужна ссылка на pam_access.so. возможно: требуется учетная запись pam_access.so
Просто держите корневую оболочку открытой во время тестирования. Мне удалось заблокировать пользователя root с помощью плохого редактирования pam.
У меня Red Hat 6 успешно аутентифицируется в AD с использованием сетевых групп. Я пытаюсь выполнить аутентификацию на старом сервере Sun LDAP, и мне не повезло. Я могу видеть сетевые группы, я могу видеть пользователя с "getent netgroup {name of netgroup}", и я могу отправить пользователю su. Однако, когда я пытаюсь войти в систему, это не работает.
Что я могу сказать вам из моей аутентификации AD, так это то, что ваш оператор netgroup противоположен тому, что вы хотите. Когда вы начинаете с - это означает НЕ позволять им входить в систему. Попробуйте переключить это значение на +, означающее, что разрешить пользователям в этой сетевой группе входить в систему.
Также используйте команду getent, чтобы проверить, правильно ли вы видите своих пользователей и сетевую группу. getent passwd {имя пользователя} getent netgroup {имя сетевой группы}
Помните, что getent также просматривает ваши локальные файлы (как определено в nsswitch.conf) для получения этой информации, поэтому убедитесь, что информация доступна только через LDAP.
Надеюсь это поможет,
Дэн
если вы используете SSSD, как заявлено выше, тогда записи nsswitch.conf должны быть такими, чтобы netrgoups "compat glibc mode" работал
/etc/nsswitch.conf
passwd: compat
passwd_compat: sss
и ваш / etc / password должен иметь следующее
-@eeederp
не
-@eeederp:x:::::
чтобы запретить любому пользователю в этой сетевой группе @eeederp доступ к серверу. не уверен, почему не работает access.conf. однако это будет работать.