Не-ASCII печатные символы в sshd-баннере

Можно настроить баннер для sshd который должен отображаться при открытии соединения , через Banner /etc/motd.ssh в sshd_config . Обратите внимание, что это отображается до начала аутентификации и даже когда интерактивная оболочка не запускается (например, через scp ).

Если этот баннер содержит символы за пределами диапазона ASCII для печати, они, похоже, сбежаны. Есть ли способ отключить это экранирование или альтернативный способ отправки текстового вывода обратно клиенту при подключении, который поддерживает такие символы вне диапазона printable-ASCII?

Это было бы полезно как для последовательностей выделения цвета, так и для символов Unicode.

  • Связано: Цветной баннер ssh (не дубликат, однако, поскольку этот вопрос касается другого вида баннера, а не цвета)

Упоминание №1 – проект LinuxFromScratch

Одно место, о котором говорится в проекте Linux From Scratch. Я нашел эту страницу под названием: / etc / issue (настройка вашего входа в систему) .

выдержка

Файл / etc / issue – это простой текстовый файл, который также будет принимать определенные последовательности Escape (см. Ниже), чтобы вставлять информацию о системе. Существует также файл issue.net, который можно использовать при удаленном входе в систему. ssh, однако, будет использовать его, только если вы установите параметр в файле конфигурации, а также не будете интерпретировать escape-последовательности, показанные ниже.

Упоминание №2 – Сообщение форума SecurityFocus

В качестве дополнительного доказательства того, что это невозможно, есть эта выдержка из сообщения на форуме под названием: Re: ssh и баннеры 18.08.2009 13:20 , в котором обсуждается функция, которая реализует печать баннера в OpenSSH.

выдержка

После некоторого дополнительного копания я обнаружил, что есть функция в источнике ssh (в частности sshconnect2.c), называемая «input_userauth_banner», которая отображает баннер с сервера. Текст баннера теперь фильтруется через другую функцию, называемую «strnvis», которая кодирует непечатаемые символы ascii как печатный текст, то есть: восьмеричные коды. Вот почему escape-последовательность ansi отображается как «\ 033 [». В документации для strnvis не упоминаются проблемы безопасности, а только «непредвиденное поведение», которое может быть связано с непечатаемыми символами.

Упоминание № 3 – Примечания к выпуску OpenSSH + RFC

Наконец, я рекомендую вам ознакомиться с примечаниями к выпуску для OpenSSH. Они здесь, а также RFC, которые управляют спецификациями SSH v1 и v2.

Этот RFC охватывает некоторые функции Banner . В этом разделе «5.4. Баннерное сообщение» описывается, почему это недопустимо. В этом абзаце говорится, что это явно запрещено.

выдержка

Если отображается строка «message», для предотвращения атак, отправляя управляющие символы терминала, следует использовать контрольную фильтрацию символов, обсуждаемую в [SSH-ARCH].

Дополнительные ссылки (за @hildred)

У клиента openssh есть ошибка в своем небезопасном символьном фильтре, который вместо фильтрации управляющих символов отфильтровывает все, кроме печатного ascii (спецификация вызывает для печати utf8), исправление для клиента исправляет это.