В этот ответ, было предложено, чтобы UNIX способ добавления !
перед полем пароля будет работать. Я утверждаю, что это не чистое решение. Это не сделает вход в систему невозможным, а просто изменит пароль на буквальное содержание поля пароля (из которого первый символ !
).
Например, предположим, что поле пароля теперь выглядит так:
!{CRYPT}$6$rounds=1000000$xxx$yyy
Вот, xxx
означает соль, а yyy
для хеша. Эта строка теперь будет паролем пользователя. Для многих практических целей это означает, что пользователь больше не может войти в систему, поскольку не знает своей соли. Но, теоретически, угадав соль, логин все же возможен. Хуже того, если злоумышленник получит базу данных LDAP, он теперь может легко войти в эту «заблокированную» учетную запись, поскольку хеширование, по-видимому, больше не используется.
Как это можно сделать вместо этого?
Если вам не нужно сохранять существующий хэш пароля, вы можете просто удалить поле userPassword из записи LDAP. Конечно, если вы повторно активируете учетную запись, пользователю потребуется установить новый пароль.
Измените поле пароля на следующее:
{CRYPT}!$6$rounds=1000000$xxx$yyy
Или следующее:
{CRYPT}$6$rounds=1000000$xxx$!yyy
Согласно моим тестам, это делает невозможным аутентификацию по паролю.
Однако он не охватывает другие способы аутентификации, например, с помощью ключа SSH. Чтобы покрыть их, по крайней мере, оболочка должна быть установлена на /bin/false
. Настоятельно рекомендую совместить это с другой мерой. В комментариях предлагалось отключить ~/.ssh/authorized_keys
. Вероятно, более безопасный способ - изменить основную группу пользователя на группу, которой не разрешено подключаться к машине по SSH ( DenyGroups
или AllowGroups
для этого можно использовать функцию SSHD).