Я изучаю программное обеспечение, которое предоставляет пользователю единую личность на нескольких компьютерах. То есть у пользователя должны быть одинаковые разрешения на каждом компьютере, и пользователь должен иметь доступ ко всем своим файлам (перемещаемому домашнему каталогу) на каждом компьютере. Кажется, есть много решений для этой общей идеи, но я пытаюсь определить лучшее для себя. Вот некоторые подробности вместе с требованиями:
Я слышал о нескольких технологиях / комбинациях для достижения моей цели, но не уверен в последствиях каждой из них.
Помимо предложений о том, какой путь мне следует искать, есть ли у кого-нибудь особенно полезные руководства? Как указано жирным шрифтом, LDAP выглядит лучшим выбором, но меня особенно интересуют детали реализации (Keberos? NFS?) В отношении безопасности.
Это не полный ответ на ваш вопрос, но я подумал, что он может помочь ответить на ваши вопросы о 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 может быть трудно поддерживать его. Вот почему более крупные кластеры обычно используют кластерную файловую систему (например, Lustre, GlusterFS, GPFS, GFS и т. Д.), Которая была разработана для поддержки параллельного ввода-вывода.
У него плохая модель безопасности. Как правило, решения по безопасности NFS полностью основываются на вашем числовом идентификаторе пользователя. Если у вас есть root в системе, которая может монтировать файловую систему NFS, у вас есть доступ ко всем файлам, потому что вы всегда можете создать локального пользователя с соответствующим идентификатором пользователя. Это не строго правда, потому что и NFSv3, и NFSv4 имеют разные уровни поддержки аутентификации Kerberos, но я еще не встречал никого, кто использовал бы это ... так что ваш пробег может отличаться.
Для небольших развертываний большинство людей просто используют NFS, несмотря на его ограничения.
Существует множество других решений - кластерные файловые системы, о которых я упоминал выше, а также AFS и другие, - но большинство из них потребуют некоторой работы с вашей стороны, чтобы запустить их в любом выбранном вами дистрибутиве. Недавно я слышал хорошие отзывы о GlusterFS, поэтому, если бы я искал альтернативу NFS, я бы обратился к ней в первую очередь.
Это частичный ответ.
NIS / NIS +
Не используйте NIS. Используйте LDAP со схемой nis.
OpenLDAP (a.k.a. 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 файловой системы.