Назад | Перейти на главную страницу

Linux + Аутентификация Active Directory + разрешение входа только определенных групп

У меня есть несколько 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

Visudo

  • %group1-admins@xxx.xxx.com ALL=(ALL) ALL

перезапустите службу sssd.

Мне удалось разрешить только одному AD_USER или AD_GROUP для ssh войти в систему Linux через аутентификацию AD.

Подробности перечислены здесь: (обратите внимание на шаги 7 и 8)

https://gist.githubusercontent.com/xianlin/8c09d916994dac7630b9/raw/ee07817a03bc5904a5404a7e7c94e08ea0c7560a/CentOS_AD_Integration