FTP 502 故障解决一例

ftp服务器设置强制tls连接以后,ftp客户端报告502错误并连接失败。本文给出解决这个故障的一个例子。

1 故障现象

我平时通过 VPN 使用 FTP ,以为从端到端足够安全,因此用明文(Plain FTP(insecure)此处有警告标志),未用加密连接。同事尾巴巴G老师告诉我,口令被侦听到了,我在心里发了个惊叹号。想了一下,被侦听的路段应该是从 VPN 服务器到 FTP 服务器之间。所以,最要防范的恰恰是内部人。或者换个角度,如果黑客攻破到 VPN服务器以内,我的口令就暴露在扫描范围之中了。

希望能更加安全,因此我设置 FTP 服务器只接受加密 TLS 连接。这样,从我的 FTP 客户端到 FTP 服务器 会有基于 TLS 的端到端加密,因此口令不会被侦听到。

在 FileZilla FTP Sever的管理器中,我这样设置,强制用户登录使用TLS。

图1 服务端:强制TLS

从 FTP 客户端发起连接失败,现象如下,错误号502。

图2 故障现象 502

2 不好的解决方案

502的含义是什么?

根据RFC,https://www.rfc-editor.org/rfc/rfc959 ,"502 Command not implemented",即命令没有被实现。没实现的是什么命令?就是上一条我的 FTP 客户端发出的 "AUTH TLS",要求用TLS鉴权。更具体的信息在上面这个截图里有,在当前情况,是"Explicit TLS authentication not allowed",不允许TLS。

我不是刚刚配置了要求必须用TLS吗?

在网上搜索了一下,最前面几条给出的解决方案居然是 取消强制 TLS ,或者在 FTP 客户端上强制用非 TLS 即明文 plain FTP 连接。这相当于,为了安全,我在门上加把锁,用钥匙拧一下没打开。咋解决?方案是把锁头卸了。

所以,不靠谱的不仅AI而已,搜索引擎、博客,是否能作为依据,是否能提供帮助,还得自行判断。

3 解决方案

猜测在 FTP Server 里有什么配置没有做,还是理论不够通晓。同时,感慨,图形用户界面的配置真是麻烦啊,配置一共10个大类,小类还没算,大类小类里每面又很多条目。在 Unix/Linux 习俗中,还有 windows的ini中,是个文本文件,虽然对入门用户不太友好,但是搜索起来真是方便啊。

我遍历了所有配置,找到了。在这里。

图3 服务端:允许TLS + 禁止不加密连接 + 私钥

启用了 FTP over TLS,顺便禁止了不加密的 plain FTP。为了 TLS 能够工作,需要私钥,生成一个。这样,当 FTP 客户端第一次连接的时候,会问你要不要接受公钥是什么什么的服务器,需要同意。

我在 FTP客户端设置加密的选项为 (如果可用)使用TLS。

图4 客户端:支持TLS

现象表明,502故障解决,连接建立成功。

图5 故障解决

总结,FTP 强制 TLS,需要设置的地方有
图1 服务端强制TLS;
图3 服务端:允许TLS + 禁止不加密连接 + 私钥;
图4 客户端:支持TLS。

博客地址

https://younggift.net

https://www.zhihu.com/column/younggift

微信公众号 杨贵福

Leave a Reply

Your email address will not be published. Required fields are marked *