Linux

Насколько практично аутентифицировать сервер Linux с помощью AD?

В нашей компании, занимающейся разработкой программного обеспечения, мы используем серверы 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

Как написать обработчик сигнала для перехвата SIGSEGV

Linux

Как сделать переадресацию портов с одного IP на другой в одной и той же сети?

Linux

Правильная настройка отправки почты через Cron

Linux

Как принудительно закрыть сокет в TIME_WAIT