У меня есть облачный сервер только с пользователем root. Я подключаюсь к нему по SSH, используя только ключи RSA. Чтобы сделать его более безопасным, я хотел отключить функцию пароля. Я знаю, что это можно сделать, отредактировав /etc/ssh/sshd_config
файл и изменение PermitRootLogin yes
к PermitRootLogin without-password
. Мне было интересно, если просто удалить пароль root через passwd -d root
будет эквивалентом (при условии, что я не создаю больше пользователей или пароли новых пользователей тоже удаляются). Есть ли проблемы с безопасностью при использовании одного подхода по сравнению с другим?
Использование аутентификации с открытым ключом позволяет обойти другие методы аутентификации, поэтому нет необходимости использовать PermitRootLogin without-password
, это опасно, если кто-то попытается войти в систему как root и не будет вынужден предоставить открытый ключ.
Чтобы выполнить то, что вы хотите, отключив аутентификацию по паролю в sshd, используйте PasswordAuthentication no
в твоем sshd_config
.
Этот параметр будет не повлиять на содержание /etc/shadow
, где хранятся ваши пароли пользователей. Если другое приложение хочет аутентифицироваться с помощью пароля (например, CUPS), это все равно будет работать.
Если вы хотите отключить это, удаление пароля пользователя с помощью указанной выше команды не сработает. Это позволяет без пароля логины для данного пользователя, что определенно не добавляет безопасности.
Выдача passwd -l <user>
выполнит то, что вы задумали. Имейте в виду, что у других приложений, кроме ssh, могут быть проблемы с этим, потому что они ожидают аутентификации по паролю в своих настройках по умолчанию (sudo, su, CUPS и т. Д.)
Цитата из man passwd
:
-l, --lock
Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod
--expiredate 1 (this set the account's expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.
Абсолютно нет, удаление пароля root будет большим риском для безопасности. Если вы хотите изменить пароль root, я бы посоветовал вам установить надежный случайный пароль для пользователя root. Даже то /etc/shadow
Теперь у вас есть root-пользователь, заблокированный для SSH-доступа только к вашему SSH-ключу, следующим шагом будет проверка того, у каких других пользователей есть доступ к оболочке, и удаление его, если он не нужен, и сделать то же самое для любых дополнительных учетных записей пользователей, которые вы можете создать и сохранить. Доступ по SSH только для пользователя root.
Если вы решите удалить пароль для любого пользователя, он также должен иметь доступ к оболочке в /etc/passwd
установив оболочку на /sbin/nologin
.
Другой подход - отключить парольный вход для SSH для всех пользователей и разрешить только аутентификацию с открытым ключом.
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Также убедитесь, что аутентификация с открытым ключом разрешена в /etc/ssh/sshd_config
:
PubkeyAuthentication yes