Linux + Аутентификация в Active Directory + только авторизация определенных групп
У меня есть некоторые Linux-боксы, которые используют проверку подлинности Windows Active Directory, которая прекрасно работает (Samba + Winbind).
Теперь я хотел бы разрешить вход только определенным людям или определенным группам с использованием учетных данных Active Directory. В настоящее время любой пользователь с действующей учетной записью AD может войти Я хочу ограничить это только несколькими группами. Это выполнимо?
6 ответов
Предполагая, что группы доступны для системы Linux, я рекомендую редактировать /etc/security/access.conf
для Ubuntu, дистрибутивов RedHat (и их форков) и, возможно, для множества других. Это не требует редактирования файлов PAM, и это довольно стандартное место для этого. Обычно в файле есть примеры, закомментированные.
(Я говорю о самбе 3 здесь, сейчас нет опыта по самбе 4).
Нет необходимости редактировать эти файлы /etc/pam.d/xxx. pam_winbind.conf - это файл, который вы хотите, обычно он находится в /etc/security/pam_winbind.conf.
Это файл конфигурации модуля pam_winbind, который работает как для CentOS/Redhat, так и для Debian/Ubuntu. Вы можете прочитать справочную страницу pam_winbind.conf для справки.
Вот пример файла.
#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#
[global]
# turn on debugging
;debug = no
# turn on extended PAM state debugging
;debug_state = no
# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes
# authenticate using kerberos
;krb5_auth = no
# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =
# make successful authentication dependend on membership of one SID
# (can also take a name)
# require_membership_of = SID,SID,SID
require_membership_of = S-1-5-21-4255311587-2195296704-2687208041-1794
# password expiry warning period in days
;warn_pwd_expire = 14
# omit pam conversations
;silent = no
# create homedirectory on the fly
mkhomedir = yes
В настоящее время я использую AllowGroups
директива в /etc/ssh/sshd_config
ограничить, кто может войти в систему. Укажите одну или несколько групп AD в этой строке, и эти люди будут единственными, кто сможет войти в систему.
Имейте в виду, что это работает, только если ваши пользователи получают доступ к серверу только через ssh. Если они поют локально, вам нужно найти другое решение.
Да, есть несколько способов сделать это в зависимости от того, что именно вы пытаетесь достичь.
Первый способ можно сделать через конфиг samba. Это позволит только этим пользователям подключаться к Samba, другие пользователи могут по-прежнему входить через другие службы (ssh, локальный термин и т. Д.). С этим вы захотите добавить строку в ваш [global] раздел в smb.conf:
valid users = @groupA @groupB
Другой метод заключается в изменении правил PAM. В разных дистрибутивах есть небольшие различия, но, вообще говоря, есть правила PAM для каждой службы, а также общие правила, вы можете решить, что лучше. Вы захотите добавить ограничение учетной записи, используя модуль pam_require. Например, на моем ноутбуке (Fedora 13) можно изменить раздел учетной записи в /etc/pam.d/system-auth, чтобы:
account required pam_unix.so
account required pam_require.so @groupA @groupB
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
Чтобы упростить администрирование, вы можете создать новую группу в AD с целью отслеживания пользователей, которые могут войти на этот сервер.
Я изо всех сил пытался заставить все вышеперечисленное работать на меня в RHEL 7. Ниже приведено то, что я смог получить на работе.
/etc/sssd/sssd.conf
+ Изменитьaccess_provider = ad
в access_provider = simple
+ simple_allow_groups = @group1-admins@xxx.xxx.com, @group2@xxx.xxx.com
visudo
%group1-admins@xxx.xxx.com ALL=(ALL) ALL
перезапустите службу sssd.
Я добился, чтобы только один AD_USER или AD_GROUP для входа в систему SSH через Linux аутентификации AD.
Детали перечислены здесь: (обратите внимание на шаги 7 и 8)