Настраиваемое сообщение об ошибке для sshd

8

Можно ли установить пользовательское сообщение об ошибке для пользователей, которым запрещен доступ к серверу? На самом деле, я хотел бы отображать это сообщение, только если пользователь был отклонен из-за установленного IP-фильтра sshd_config. Но одного глобального сообщения об ошибке будет достаточно.

Микулаш Дите
источник

Ответы:

6

Под «сообщением об ошибке» я полагаю, что вы имеете в виду текстовую строку, отображаемую клиентской программой. Слово «сообщение» имеет некоторый контекст в протоколе аутентификации SSH RFC, на который я буду ссылаться позже, но я не думаю, что это тот смысл, в котором вы его используете.

Я полагаю, что вы думаете, что SSH - это что-то вроде TELNET, где клиент отображает произвольные текстовые строки, отправленные демоном сервера. SSH использует протокол аутентификации, который передает токенизированные сообщения в виде двоичных значений между клиентом и сервером. Одно из этих токенизированных сообщений, «SSH_MSG_USERAUTH_BANNER», может использоваться для указания клиенту отображать произвольные текстовые строки (если он выберет), но вам придется изменить демон SSH, чтобы отправлять их в соответствующее время. Я не верю, что OpenSSH имеет какие-либо встроенные функции для отправки сообщений SSH_MSG_USERAUTH_BANNER во время произвольных точек в процессе аутентификации.

Я бы спросил, почему вы хотите предоставить удаленному злоумышленнику дополнительную информацию о том, почему его аутентификация не удалась. Они знают, что это не удалось, потому что их клиент SSH получает и реагирует на токенизированное сообщение от демона SSH, сигнализирующее об ошибке.

Эван Андерсон
источник
1

РЕДАКТИРОВАТЬ: Эван Андерсон печатает быстрее, чем я, и, кажется, подтверждает, что сообщение не настраивается на размер сервера.

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

SSH может передать логин команде unix / bin / login. В зависимости от вашей ОС, у вас может быть возможность настроить подсказки и ошибки?

Все, что я могу придумать, вероятно, будет означать редактирование кода и перекомпиляцию. И возможно, что сообщение об ошибке отправляется не с сервера клиенту в виде строки, а в виде кода, чтобы предотвратить сбор информации злоумышленником. (Если это строка и ее можно настроить, кто-то установит для нее значение «Ошибка входа. OpenSSH_3.7_p2 21032004»)

Билл Гейтс
источник
0

Это не будет работать специально для ip-фильтра sshd_config, но будет работать для любых элементов управления доступом, реализованных с помощью PAM pam_echo.so.

Например:

account [success=2 default=ignore] pam_lastlog.so inactive=30
account optional pam_echo.so file=/path/to/lastlog_error_message.txt
account requisite pam_deny.so
account ...

В этом сценарии, если аутентифицированный пользователь не вошел в систему в течение последних тридцати дней, содержимое /path/to/lastlog_error_message.txtбудет отображаться на стандартном уровне до закрытия соединения SSH. Если они прошли проверку с pam_lastlogтогдашней оценкой будет пропускать pam_echoи pam_denyзаклинания , чтобы продолжить оценку остальных модулей PAM.

jgibson
источник