我已尝试使用旧的 unix 客户端(在交互式 Unix 上)命令“remotestatus”,并在我的 ftp 服务器(vsftpd)上显示版本!
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
可以隐藏版本吗?更改横幅不起作用。
从 vsftp 的
postlogin.c
,在处理请求时STAT
(这似乎是您输入时客户端所做的事情remotestatus
):换句话说,包含版本的字符串是一个编译时常量。
您需要修补
postlogin.c
以不包含该字符串中的版本,重建您的 vsftp(可能使用您的服务器的操作系统工具以免破坏安全性),然后重新部署它。或者,这显然是更好的选择,不这样做,并接受客户端可以轻松找出服务器版本的事实。说真的,你认为你可以隐藏什么?您使用的可能是地球上最流行的 FTP 服务器,该服务器自 2021 年以来就没有发布过,之前的版本(您的)是 2015 年的,所以实际上,如果我需要弄清楚你的服务器是什么版本,我需要阅读大约四个
diff
秒postlogin.c
才能弄清楚我需要请求什么才能从功能上找出你服务器的版本,而它从来不会告诉我版本号。或者更简单,阅读 Changelog 文件。如果您的服务器响应时没有尾随句点EPSV
,则它比 3.0.2 更新,如果它在登录前 10 个未知命令后关闭连接,则它<3.0.4。那很容易。所以,基本上,完全不是。根据 vsftpd 的行为来判断它的版本很简单,你无法向客户端隐藏该行为,因为这就是 vsftpd 的本质。
你从哪里得到这个版本
vsftpd
?我的版本3.0.5
抱怨这个命令:横幅的改变正如我所料......
然后连接到它:
附言:我刚刚检查了源代码
remotestatus
-其中没有这个词?