Назад | Перейти на главную страницу

NIS: какой механизм скрывает shadow.byname для непривилегированных пользователей?

На некотором Linux-компьютере (SLES 11.1), который является клиентом NIS, я могу делать это как root:

ypcat shadow.byname

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

На том же компьютере с Linux, если я запускаю ту же команду, что и непривилегированный пользователь, я получаю

No such map shadow.byname. Reason: No such map in server's domain

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

Очевидно, здесь картина иная. К сожалению, у меня нет доступа к серверу NIS, чтобы выяснить, что происходит. Мое единственное предположение состоит в том, что мастер NIS предоставляет карту только для подключения клиентов через привилегированный порт (> 1024), но это только необразованное предположение.

Какие механизмы существуют в текущих реализациях NIS, чтобы привести к подобному поведению? Насколько они «безопасны»? Можно ли легко обойти? Или теневые пароли в NIS так же безопасны, как старые добрые теневые файлы?

Доступ к картам, недоступным для чтения во всем мире /var/yp/{domainname}/ на главном сервере NIS только клиенты, делающие запросы с привилегированного порта (<1024). Это не так безопасно, как местное /etc/shadow но все же немного лучше, чем ничего.

Для большей безопасности Sun разработала NIS +, но она так и не получила широкого распространения.

Намного лучше LDAP, где хэш пароля не нужно получать с сервера клиенту, а вместо этого клиент отправляет предложенный пароль на сервер для проверки (LDAP auth-bind).