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

Как мне настроить sshd, чтобы требовать и закрытый ключ, и пароль?

Как мне настроить sshd, чтобы требовать и закрытый ключ, и пароль?

В / etc / ssh / sshd_config у меня сейчас есть:

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes

Но, по-видимому, это позволяет пользователю входить в систему с использованием закрытого ключа или пароля.

Последние версии OpenSSH сделали это намного проще!

В /etc/ssh/sshd_config просто добавьте следующее:

AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Если вы хотите разрешить определенному IP-адресу (например, 192.168.10.10) иметь возможность входить в систему с помощью методов OpenSSH по умолчанию, но требовать, чтобы каждый другой IP-адрес использовал как пароль, так и ключ, вы можете добавить следующее Match вместо этого блок:

Match Address "*,!192.168.10.10"
    AuthenticationMethods "publickey,password" "publickey,keyboard-interactive"

Хотя это не очень хорошо документировано, ведущая звездочка требуется в строке соответствия; Match Address "!192.168.10.10" на самом деле никогда не будет совпадать. Это может измениться в будущих версиях OpenSSH..

Вам необходимо настроить SSH-привратник. Это позволяет openssh разрешать многофакторную аутентификацию.

Вот отличная ссылка: https://calomel.org/openssh.html

По сути, вы используете директиву ForceCommand для запуска сценария при входе пользователя в систему. Затем этот сценарий запрашивает у пользователя пароль. В настоящее время я ищу способ проверить заданный пароль по системному паролю, но у меня (по понятным причинам) ничего нет.

Если учетная запись пользователя хранится в каталоге LDAP, вы можете попытаться выполнить привязку к каталогу, используя эти учетные данные, но проблема будет в том, что запущенная программа будет работать от имени пользователя, а не от имени пользователя root. Я не знаю последствий для безопасности написания скомпилированного кода и установки для него SUID.

Надеюсь, кто-нибудь даст вам лучший ответ.

но раз уж я так много набрал, вы находитесь на сверхбезопасном сайте? Потому что это действительно единственная причина для этого. Обычных открытых ключей с паролями должно быть более чем достаточно для 99% случаев.

Двухфакторная аутентификация? Не совсем. Сертификат - более надежный метод аутентификации, чем пароль.

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

И отключите аутентификацию по паролю на вашем ssh-сервере. Это мешает людям использовать атаки по словарю / перебору.