Можно ли изменить строку, которую отображает сервер OpenSSH при установке необработанного соединения?
Речь идет не о текстовом баннере, отображаемомпослесоединение установлено и может быть настроено параметром Banner
в sshd_config
, но о необработанных выходных данных, которые сервер SSH отправляет при попытке подключения перед рукопожатием.
Например, если задано необработанное telnet-соединение
$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2
есть ли способ свести идентифицирующую информацию к минимуму?
Насколько я понимаю, он SSH-2.0-
должен присутствовать, поскольку он требуется протоколом SSH, но следующая за ним строка - OpenSSH_7.2p2
- вероятно, не требуется протоколом, но я не вижу способа изменить или удалить ее без перекомпиляции.
Цель состоит в том, чтобы избежать предоставления большего объема информации, чем необходимо для работы протокола.
решение1
Нет. Строка версии определена в файле version.h.Источник OpenSSHкак
#define SSH_VERSION "OpenSSH_7.4"
.
Вы можете изменить его, но это потребует перекомпиляции.
Затем он отправляется в собранном виде через:
snprintf(buf, sizeof buf, "SSH-2.0-%.100s\r\n", SSH_VERSION)
(ssh_api.c строка 381, в функции _ssh_send_banner
)
Смотрите также:Запретить SSH публиковать номер версии.
решение2
Последние версии OpenSSH позволяют добавлять пользовательский текст через VersionAddendum
, но не позволяют удалять имя/версию продукта. Для этого вам придется пропатчить исходный код.