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

14

У меня есть некоторые Linux-боксы, которые используют проверку подлинности Windows Active Directory, которая прекрасно работает (Samba + Winbind).

Теперь я хотел бы разрешить вход только определенным людям или определенным группам с использованием учетных данных Active Directory. В настоящее время любой пользователь с действующей учетной записью AD может войти в систему. Я хочу ограничить это только несколькими группами. Это выполнимо?

Luma
источник

Ответы:

6

Предполагая, что группы доступны для системы Linux, я рекомендую редактировать /etc/security/access.confдистрибутивы Ubuntu, RedHat (и их форки) и, возможно, кучу других. Это не требует редактирования файлов PAM, и это достаточно стандартное место для этого. Обычно в файле есть примеры, закомментированные.

Слартибартфаст
источник
Спасибо, это то, что я в конечном итоге использовал, чтобы сделать то, что я хотел сделать, все ответы выше, где здорово, но это тот, который работал лучше всего для меня. Я использую файл Samba для блокировки Samba, и теперь я использую этот файл access.conf для блокировки входов SSH.
Люма
4

(Я говорю о самбе 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
yanqian
источник
3

В настоящее время я использую AllowGroupsдирективу /etc/ssh/sshd_configдля ограничения того, кто может войти в систему. Укажите одну или несколько групп AD в этой строке, и эти люди будут единственными, кто сможет войти в систему.

Имейте в виду , что это работает только если пользователи только доступ к серверу удаленно через SSH. Если они поют локально, вам нужно найти другое решение.

EEAA
источник
3

Да, есть несколько способов сделать это в зависимости от того, что именно вы пытаетесь достичь.

Первый способ можно сделать через конфиг 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 для отслеживания пользователей, которые могут войти на этот сервер.

Райан Бэйр
источник
1

Я изо всех сил пытался заставить все вышеперечисленное работать на меня в 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.

Адам С
источник
-3

Я добился, чтобы только один AD_USER или AD_GROUP для входа в систему SSH через Linux аутентификации AD.

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

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

Xianlin
источник
Информация отсутствует
Джеффри
Ссылка мертвая, бесполезный пост.
FreeSoftwareServers
Я вижу только шаг 404. № 7 и 8.
Тодд Уолтон