Сетевая аутентификация + домашний каталог в роуминге - какую технологию мне использовать?

9

Я ищу программное обеспечение, которое предоставляет пользователю единую идентификацию на нескольких компьютерах. То есть пользователь должен иметь одинаковые разрешения на каждом компьютере, а пользователь должен иметь доступ ко всем своим файлам (перемещаемому домашнему каталогу) на каждом компьютере. Кажется, есть много решений для этой общей идеи, но я пытаюсь определить лучшее для меня. Вот некоторые детали вместе с требованиями:

  1. Сеть компьютеров - это экземпляры Amazon EC2, работающие под управлением Ubuntu.
    • Мы получаем доступ к машинам по SSH.
    • Некоторые машины в этой локальной сети могут использоваться по-разному, но я обсуждаю только машины для определенного использования (работающие на многопользовательской платформе).
  2. Система не обязательно будет иметь постоянное количество машин.
    • Возможно, нам придется постоянно или временно изменить количество работающих машин. Это причина, почему я смотрю на централизованную аутентификацию / хранение.
  3. Реализация этого эффекта должна быть безопасной.
    • Мы не уверены, что у пользователей будет прямой доступ к оболочке, но их программное обеспечение потенциально будет работать (под ограниченным именем пользователя Linux) в наших системах, что так же хорошо, как прямой доступ к оболочке.
    • Давайте предположим, что их программное обеспечение потенциально может быть вредоносным для безопасности.

Я слышал о нескольких технологиях / комбинациях для достижения моей цели, но я не уверен в последствиях каждой из них.

  • В более старой публикации ServerFault рекомендовано NFS & NIS, хотя в этой старой статье Symantec есть проблемы с безопасностью . В статье предлагается перейти на NIS +, но, поскольку она устарела, в этой статье в Википедии цитируются заявления, указывающие на отклонение от NIS + со стороны Sun. Рекомендованная замена - это еще одна вещь, о которой я слышал ...
  • LDAP. Похоже, LDAP можно использовать для сохранения информации о пользователях в централизованном месте в сети. NFS по-прежнему нужно будет использовать для удовлетворения требования «перемещаемой домашней папки», но я вижу ссылки на их совместное использование. Поскольку в статье Symantec отмечены проблемы безопасности как в NIS, так и в NFS, существует ли программное обеспечение для замены NFS, или мне следует прислушаться к предложениям этой статьи о его блокировке? Я склоняюсь к LDAP, потому что другой фундаментальный элемент нашей архитектуры, RabbitMQ, имеет плагин аутентификации / авторизации для LDAP. RabbitMQ будет доступен для пользователей в системе ограниченным образом, поэтому я хотел бы связать системы безопасности, если это возможно.
  • Kerberos - это еще один безопасный протокол аутентификации, о котором я слышал. Я немного узнал об этом несколько лет назад на уроке криптографии, но мало что помню об этом. Я видел предложения онлайн, что это может быть объединено с LDAP несколькими способами. Это необходимо? Каковы риски безопасности LDAP без Kerberos? Я также помню, как Kerberos использовался в другом программном обеспечении, разработанном Университетом Карнеги-Меллона ...
  • Эндрю Файловая Система, или AFS. OpenAFS доступна для использования, хотя ее настройка кажется немного сложной. В моем университете AFS обеспечивает оба требования ... Я могу войти на любой компьютер, и моя «папка AFS» всегда доступна (по крайней мере, когда я получаю токен AFS).

Наряду с предложениями о том, по какому пути я должен идти, есть ли у кого-нибудь какие-нибудь руководства, которые были бы особенно полезны? Как указано жирным шрифтом, LDAP выглядит лучшим выбором, но меня особенно интересуют детали реализации (Keberos? NFS?) В отношении безопасности.

Брайан
источник

Ответы:

7

Аутентификация, авторизация и информация каталога

Это не полный ответ на ваш вопрос, но я подумал, что это может помочь ответить на ваши вопросы о NIS против LDAP против Kerberos.

Начните с этого , который дает хороший обзор различий между аутентификацией и авторизацией , что важно понять для такого рода обсуждения.

Kerberos, как вы говорите, просто протокол аутентификации. Учитывая набор учетных данных - например, имя пользователя и пароль - он скажет вам, действительны они или нет. Это все, что он делает.

Напротив, и NIS, и LDAP являются службами каталогов. Они позволяют клиенту запрашивать информацию о пользователях (каков ваш домашний каталог? Каков ваш идентификатор пользователя?). Оба могут быть использованы в качестве источников аутентификации с различной степенью проблем.

NIS на самом деле не выполняет для вас никакой аутентификации. Скорее, он предоставляет хэш пароля для клиентских компьютеров, и ваша локальная система выполняет фактический шаг аутентификации так же, как и для локальных учетных записей. Проблема в том, что любой, у кого есть учетная запись на одном из ваших клиентов NIS, может захватить все ваши хэши паролей, а затем провести атаку методом "грубой силы" на досуге.

LDAP несколько более безопасен, поскольку этап аутентификации фактически выполняется на сервере. Вы должны убедиться, что вы шифруете свои сеансы LDAP с помощью SSL или TLS, в противном случае пароль предоставляется открытым текстом на проводе, где он уязвим для перехвата пакетов.

Очень часто используется Kerberos для аутентификации, а затем либо NIS, либо LDAP для авторизации (обычно это означает «членство в группе») и информация каталога. Я бы сказал, что NIS после удаления хэшей паролей (путем переноса вашей аутентификации на Kerberos) на самом деле не менее безопасен, чем LDAP, и имеет преимущество в том, что он доступен «из коробки» в любом современном дистрибутиве Linux.

С другой стороны, LDAP, как правило, гораздо более расширяемый, лучше масштабируется, если у вас большое количество пользователей (или других объектов каталога), обеспечивает расширенные запросы и, как правило, более управляемый. LDAP также изначально поддерживается в различных приложениях, в то время как NIS имеет странные кровосмесительные отношения с основной операционной системой, что может быть нежелательно.

Если вы создаете вещи с нуля, я бы предложил Kerberos для аутентификации и LDAP для вашей службы каталогов.

Файловые

У NFS есть большое преимущество: оно у вас уже есть, оно широко развернуто и в целом стабильно. У NFS есть два основных недостатка:

  • Это не хорошо масштабируется для параллельного ввода-вывода. Если у вас большое количество машин, работающих с одной и той же файловой системой, возможно, вашему одиночному NFS-серверу будет сложно поддерживать работу. Вот почему большие кластеры обычно используют кластерную файловую систему (например, Luster, GlusterFS, GPFS, GFS и т. Д.), Которая была разработана для поддержки параллельного ввода-вывода.

  • У него плохая модель безопасности. Как правило, решения по безопасности NFS полностью основаны на вашем числовом идентификаторе пользователя. Если у вас есть root в системе, которая может монтировать файловую систему NFS, у вас есть доступ ко всем файлам - потому что вы всегда можете создать локального пользователя с соответствующим идентификатором пользователя. Это не совсем верно, потому что и NFSv3, и NFSv4 имеют разные уровни поддержки аутентификации Kerberos, но я еще не встречал никого, кто бы использовал это ... так что ваш пробег может отличаться.

Для небольших развертываний большинство людей просто используют NFS, несмотря на его ограничения.

Существует множество других решений - кластерные файловые системы, о которых я упоминал выше, а также AFS и другие - но большинство из них потребуют некоторой работы с вашей стороны, чтобы запустить их в любом дистрибутиве, который вы выбрали. Недавно я услышал много хорошего о GlusterFS, поэтому, если бы я искал альтернативу NFS, это могло бы быть первым местом, куда я смотрю.

larsks
источник
Спасибо за прояснение этих вещей. У меня действительно есть хорошая основа в авторизации против аутентификации; Я просто не уверен в возможностях каждой части программного обеспечения. Часть хранения важна также; Вы знаете, как модель безопасности Kerberos / LDAP связана с NFS?
Брайан
Я обновил ответ с некоторой информацией о NFS.
Жаворонки
В этом случае я не вижу причин ограничиваться одним NFS-сервером, хотя одного может быть достаточно, и в дальнейшем могут быть добавлены другие. help.ubuntu.com/community/AutofsLDAP
84104
Я попытался пройти это руководство AutofsLDAP, а также другие. Он либо плохо написан, либо устарел, так как мои результаты отличаются, и я не могу выйти за рамки определенного момента. :(
Брайан
Возможно, вы захотите открыть новый вопрос с соответствующими деталями.
Жаворонки
0

Это частичный ответ.

NIS / NIS +
Не используйте NIS. Используйте LDAP с NIS-схемой.

OpenLDAP (он же slapd в Ubuntu).
Убедитесь, что вы правильно настроили ACL и SSF (факторы безопасности).
Очень просто отправлять пароли в открытом виде, если вы не будете осторожны.
http://www.openldap.org/doc/

NFS
NFS не является зашифрованным.
Это может быть обернуто в SSL с некоторой хитростью.
Без Kerberos полагается на ip_addr для аутентификации.
С Kerberos возможно, что SASL используется для шифрования всего.

Kerberos
Требуется, чтобы OpenLDAP имел сквозную аутентификацию SASL для аутентификации LDAP. (Не сложно.)
Следует использовать записи DNS. (Не обязательно, но очень полезно).
GSSAPI можно использовать вместо ssh-ключей. (Может сосуществовать.)
Машины KDC должны быть отделены от ваших клиентских машин.

OpenAFS,
зашифрованный с помощью DES. (Не считается безопасным.)
Требуется либо Kerberos, либо собственный устаревший сервер авторизации.
Имеет собственную ACL файловой системы.

84104
источник