У меня есть несколько Linux-компьютеров, которые используют аутентификацию Windows Active Directory, которая отлично работает (Samba + Winbind).
Но сейчас я бы хотел разрешить только определенным людям или определенным группам входить в систему с учетными данными Active Directory. В настоящее время любой пользователь с действующей учетной записью AD может войти в систему. Я хочу ограничить это только несколькими группами. Это выполнимо?
Предполагая, что группы доступны для системы 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
Да, есть несколько способов сделать это в зависимости от того, что именно вы пытаетесь выполнить.
Первый способ можно сделать через конфиг 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 с целью отслеживания пользователей, которые могут входить на этот сервер.
В настоящее время я использую AllowGroups
директива в /etc/ssh/sshd_config
чтобы ограничить круг лиц, которые могут войти в систему. Укажите одну или несколько групп AD в этой строке, и только эти люди смогут войти в систему.
Имейте в виду, что это работает, только если ваши пользователи только доступ к серверу удаленно через ssh. Если они поют на местном уровне, вам нужно найти другое решение.
Мне было сложно заставить что-либо из вышеперечисленного работать для меня в RHEL 7. Ниже я описал то, что я смог заставить работать.
/etc/sssd/sssd.conf
+ Изменить access_provider = ad
к access_provider = simple
+ simple_allow_groups = @group1-admins@xxx.xxx.com, @group2@xxx.xxx.com
%group1-admins@xxx.xxx.com ALL=(ALL) ALL
перезапустите службу sssd.
Мне удалось разрешить только одному AD_USER или AD_GROUP для ssh войти в систему Linux через аутентификацию AD.
Подробности перечислены здесь: (обратите внимание на шаги 7 и 8)