В нашей компании, занимающейся разработкой программного обеспечения, мы используем серверы Windows и Linux. Одна из проблем, связанных с этой установкой, заключается в том, что у нас нет решения для единого входа. Будучи скорее магазином Microsoft, нежели Linux, мы хотим аутентифицироваться в AD.
Я прочитал пару статей в интернете и понял, что это возможно.
В настоящее время мы используем следующие службы на Linux, которые требуют аутентификации:
1. git-сервер (через SSH).
2. Sendmail.
3. Веб-сервер Apache, в настоящее время использующий файлы .htaccess.
4. Файловые ресурсы SAMBA.
Я хочу знать, насколько практична такая установка? Это действительно работает или подвержено ошибкам?
Ответ 1
Это несложно и вполне практично.
У нас есть несколько сотен настольных машин с двойной загрузкой, которые используют AD auth, а также несколько серверов, которые используют AD auth, чтобы позволить клиентам windows использовать их общие ресурсы samba без явной авторизации пользователей.
Главное — вам нужно настроить kerberos, winbind, nss и pam.
Затем вы делаете kinit и net ads join, и все готово.
Вы можете настроить pam на использование нескольких методов для аутентификации, если хотите, так что, если один не работает, он будет переходить к следующему варианту.
Мы обычно используем файлы, winbindd и ldap для серверов, обслуживающих файловые хранилища на серверах windows.
Если возможно, я бы использовал LDAP для информации об учетной записи и winbindd строго для аутентификации, но я полагаю, что вы можете сопоставить атрибуты в /etc/ldap.conf, если вам нужно. Если вы используете winbindd для информации об учетной записи, можно использовать RID (метод хеширования) для генерации uids/gids, но можно использовать и другие методы. Мы использовали RID на одном большом файловом сервере, и это было серьезной проблемой, поэтому я бы попробовал изучить один из других вариантов, если это возможно. В нашем случае все пользователи и группы AD отражаются в LDAP с помощью IDM-системы, поэтому мы используем LDAP для информации об учетной записи на новых серверах и используем winbindd исключительно для аутентификации.
Ответ 2
Вам не нужно использовать Samba, AD поддерживает Kerberos и LDAP напрямую. В большинстве дистрибутивов нет причин использовать какое-либо внешнее программное обеспечение.
Для Debian/Ubuntu вы можете сделать это с помощью libnss-ldap и libpam-krb5. Есть несколько хитростей, чтобы получить 100% результат. Это предполагает, что у вас заполнен «unixHomeDirectory» для пользователей Linux, что ваши Linux-боксы используют NTP, общий с вашими Windows-системами (требуется Kerberos) и что вы согласны с обычным текстовым поиском NSS (не пароль, а информация о членстве в группе и т. д. — вы также можете использовать TLS, но это сложнее в настройке). Вам НЕ следует использовать pam_ldap в качестве источника пароля или аутентификации в PAM, если вы не настроены на использование TLS.
/etc/ldap.conf
# Конфигурация LDAP для libnss-ldap и libpam-ldap.
# Разрешить хосту продолжать процесс загрузки без обращения к серверу LDAP
bind_policy soft
# Определите серверы LDAP, которые будут использоваться для запросов, это должны быть серверы Глобального каталога
uri ldap://ldap.site.company.local
# Определите корневое место поиска для запросов
base dc=company,dc=local
#debug 1
# Версия LDAP, почти всегда будет v3, она достаточно зрелая.
ldap_version 3
# Имя пользователя, используемое для прокси-аутентификации. Вы можете иметь его в отдельном файле, принадлежащем root, для безопасности ИЛИ использовать TLS/SSL (см. man-страницу).
# НЕ используйте LDAP для аутентификации, если вы используете обычные текстовые привязки, вместо этого используйте Kerberos (и LDAP только для авторизации). См. libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Пароль для прокси-сервера
bindpw SooperSekeretPazzwerd
# TCP порт для выполнения запросов, 3268 - порт глобального каталога, который будет отвечать для всех пользователей в *.company.local
port 3268
# Диапазон поиска (sub = all)
scope sub
# Скажите клиенту закрыть TCP соединения через 30 секунд, Windows будет делать это на стороне сервера в любом случае, это предотвратит появление ошибок в журналах.
idle_timelimit 30
# Ожидайте, что запросы на членство в группе будут возвращать DN членов группы вместо имен пользователей (позволяет вам легко использовать членство в группе MSAD).
nss_schema rfc2307bis
# Фильтры - Учетные записи пользователей должны иметь UID >= 2000, чтобы быть распознанными в этой конфигурации, и должны иметь определенный unixHomeDirectory.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Сопоставления классов объектов. Вы можете захотеть сопоставить posixAccount с "mail", чтобы пользователи входили в систему, используя свои адреса электронной почты, т. е. "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Сопоставление атрибутов.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Атрибут в LDAP для запроса на соответствие имени пользователя, используемого PAM для аутентификации
pam_login_attribute sAMAccountName
# Фильтр для объектов, которым разрешено входить в систему через PAM
pam_filter objectclass=User
Вам не нужно редактировать /etc/krb5.conf, если ваши Linux-боксы используют DNS-серверы, которые знают об AD (зоны _msdcs с соответствующими SRV-записями разрешимы).
/etc/nsswitch.conf должен иметь «files ldap» для пользователей и групп.
Ответ 3
Аутентификация абсолютно проста с помощью Likewise Open.
http://www.likewise.com/products/likewise_open/index.php
Почти вся моя инфраструктура Linux имеет централизованную аутентификацию и управление пользователями благодаря Likewise Open. Он потрясающе прост в установке и внедрении. В качестве примечания, UID и GID назначаются в соответствии с хеш-функцией, поэтому они идентичны во всей инфраструктуре, так что монтирование NFS работает идеально.
Linux