Eu tentei com um cliente unix antigo (no Interactive Unix) o comando "remotestatus" e no meu servidor ftp (vsftpd) mostra a versão!
ftp> remotestatus
ftp> 211-FTP server status:
Connected to ???
Logged in as ftp
TYPE: BINARY
No session bandwidth limit
Session timeout in seconds is 300
Control connection is plain text
Data connections will be plain text
vsFTPd 3.0.3 - secure, fast, stable
É possível esconder a versão? Alterar o banner não funciona.
Do vsftp
postlogin.c
, no tratamento daSTAT
solicitação (que parece ser o que seu cliente faz quando você digitaremotestatus
):Em outras palavras, a string que contém a versão é uma constante de tempo de compilação.
Você precisa aplicar um patch
postlogin.c
para não incluir a versão nessa sequência, reconstruir seu vsftp (provavelmente usando as ferramentas do sistema operacional do seu servidor para não comprometer a segurança) e reimplantá-lo.Ou, e esta é claramente a melhor opção, não faça isso e viva com o fato de que os clientes podem descobrir trivialmente a versão do seu servidor. Sério, o que você acha que pode esconder? Você está usando provavelmente o servidor FTP mais popular do planeta, a coisa não viu um lançamento desde 2021, o anterior (o seu) é de 2015, então realisticamente, se eu precisar descobrir qual é a versão do seu servidor, preciso ler quatro
diff
s depostlogin.c
para descobrir o que preciso pedir para descobrir funcionalmenteEPSV
a versão do seu servidor, sem que ele nunca me diga o número da versão. Ou ainda mais fácil, leia o arquivo Changelog. Se o seu servidor responder sem um ponto final para , é mais novo que 3.0.2, e se ele fechar a conexão após 10 comandos desconhecidos antes do login, é < 3.0.4. Isso foi fácil.Então, basicamente, nem um pouco. É trivial descobrir a versão do vsftpd com base em seu comportamento, você não pode esconder esse comportamento do cliente, porque é o que o vsftpd é .
De onde você tirou sua versão de
vsftpd
? A minha, version3.0.5
reclama sobre esse comando:A mudança do banner faz o que eu esperava...
E então conectando a ele:
PS: Acabei de verificar o código-fonte - a palavra
remotestatus
não aparece nele?