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

Пользовательское сообщение об ошибке для sshd

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

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

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

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

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

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

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

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

Это не будет работать специально для 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.