В нескольких системах у меня есть sshd_config
Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers john joe
Может ли кто-нибудь объяснить разницу между интерактивной клавиатурой и аутентификацией по паролю? Как я могу проверить на них свой sshd-сервер?
Эти системы доступны через SSH через Интернет (переадресация портов на брандмауэре). Несмотря на отключение аутентификации по паролю, я все еще вижу записи системного журнала для недействительных пользователей и недействительных паролей, которые отклоняются sshd - очевидно, что некоторые бот-сети пытаются угадать пароль методом перебора.
Если я попытаюсь войти по ssh без настройки открытого ключа, мой сеанс будет закрыт с сообщением «Permission denied (publickey)», прежде чем у меня появится возможность ввести имя пользователя. Поэтому я не понимаю, как происходят эти попытки ввода пароля.
Вот пример из системного журнала (все строки с префиксом «12 октября 08:40:49 host sshd [14790]:»)
Could not reverse map address 203.0.113.1.
User root not allowed because not listed in AllowUsers
input_userauth_request: illegal user root
Failed password for illegal user root from 203.0.113.1 port 35902 ssh2
Received disconnect from 203.0.113.1: 11: Bye Bye
Как проходят эти недействительные пароли? Является ли сервер все еще уязвимым для подбора пароля методом перебора?
PasswordAuthentication - это только один из типов KbdInteractiveAuthentication (фактическое ключевое слово, используемое в ssh_config и sshd_config).
KbdInteractiveAuthentication включает в себя множество методов: S / Key - еще один, как и PAM. (Это спецификация RFC, которая задокументирована Вот
Есть список KbdInteractiveDevices, который вы можете указать в ssh_config. (Если не указано иное, используется список серверов. Поскольку в sshd_config для этого нет опции, я предполагаю, что это параметр времени компиляции, но я не проверял это.)
Я не думал, что страницы руководства (ssh_config и sshd_config) были особенно полезны для понимания отношений здесь, но Книга O'Reilly SSH достойная ссылка.
AFAIK, используя PasswordAuthentication, клиент запрашивает ваше имя пользователя и пароль, а затем отправляет их на сервер. В интерактивном режиме с клавиатурой клиент запрашивает ваше имя пользователя, отправляет его на сервер, а затем сервер отвечает запросом пароля, который, в свою очередь, ретранслируется обратно через клиента вам.
Все это было сделано для того, чтобы иметь возможность реализовать дополнительные меры безопасности, чтобы убедиться, что вы (пользователь) действительно интерактивно вводите пароль, и он не сохраняется каким-либо образом, а затем только вводится.