É possível modificar a string exibida pelo servidor OpenSSH quando uma conexão bruta é estabelecida?
Não se trata do banner de texto exibidodepoisa conexão é estabelecida e pode ser configurada pelo Banner
parâmetro em sshd_config
, mas sobre a saída bruta que o servidor SSH envia em uma tentativa de conexão antes do handshake.
Por exemplo, dada uma conexão Telnet bruta
$ telnet localhost 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.2p2
existe uma maneira de reduzir as informações de identificação ao mínimo?
Meu entendimento é que SSH-2.0-
deve estar presente porque é exigido pelo protocolo SSH, mas a string a seguir - OpenSSH_7.2p2
- provavelmente não é exigida pelo protocolo, mas não consigo ver uma maneira de alterá-la ou removê-la sem recompilar.
A intenção é evitar fornecer mais informações do que o estritamente necessário para que o protocolo funcione.
Responder1
Não. A string da versão é definida em version.h doFonte OpenSSHcomo
#define SSH_VERSION "OpenSSH_7.4"
.
Você poderia alterá-lo, mas requer recompilação.
Em seguida, é enviado montado via:
snprintf(buf, sizeof buf, "SSH-2.0-%.100s\r\n", SSH_VERSION)
(ssh_api.c linha 381, em função _ssh_send_banner
)
Veja também:Impedir que o SSH anuncie seu número de versão.
Responder2
Versões recentes do OpenSSH permitem adicionar texto personalizado via VersionAddendum
, mas não permitem remover o nome/versão do produto. Você terá que corrigir o código-fonte para isso.