下列的这些说明我设法在启用 的同时在 Windows Server 2008 (IIS 7) 上为 SSL 配置了我的 FTP 服务器Require SSL connections
。但是,我无法通过 SSL 连接到 FTP 服务器。
故障排除完成
- 禁用服务器上的防火墙
- 对服务器进行 nmap 操作,报告以下端口:
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
443/tcp open https
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
1433/tcp open ms-sql-s
1723/tcp open pptp
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
3389/tcp open ms-term-serv
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown
49157/tcp open unknown
49158/tcp open unknown
49159/tcp open unknown
-基于此 TCP 端口列表我原本以为会看到FTPS (990)
或SFTP (22)
打开。如果我转到 FTPBindings...
设置,则只有一个列表是fto (21)
,并且没有其他可以添加的与 FTP 相关的选项。如果我尝试添加 HTTPS
- 尝试filezilla
作为客户端并通过端口 21 进行以下测试: FTP 模式 -> 使用 SFTP 模式
失败-> 客户端在收到 FTPS 模式后感到满意 -> 客户端发送类似于客户端 hello 的内容,失败Response: 534 Policy requires SSL.
Response: 220 Microsoft FTP service
Response: 451 The parameter is incorrect.
问:我该如何进一步解决这个问题(最终目标是能够强制客户端使用安全 FTP)?
其他故障排除
我现在真的陷入困境。我尝试了协议Filezilla
提供的所有方法(FTPS
、SFTP
、FTPES
):要么Filezilla
开始以明文 FTP 进行通信并IIS
返回Response: 534 Policy requires SSL
,要么尝试启动安全连接并收到诸如Response: 451 The parameter is incorrect
或 之类的响应Response: 431 Failed to setup secure session
。
我正在使用 wireshark 嗅探流量,我可以看到它filezilla
正确地使用了我设置的端口。我已将多个端口添加到 IIS 上的 FTP 绑定(例如,,21
... ,在每种情况下都正确建立了 TCP 握手),无论我尝试什么,我都会得到相同的行为。22
990
我还查看了 FTP 日志,但得到的都是无用的消息,c:\inetpub\logs\LogFiles
例如
ControlChannelOpened
,,,这无助于理解事情实际失败的原因。ControlChannelClosed
AUTH TLS
AUTH SSL
问:我该如何进一步排除故障(ISS FTP 有调试模式吗)?
答案1
您的测试成功了。您设置的实际上是 FTPS 或 FTP-Secure,Filezilla 在您的测试中通过 220 响应成功记录了这一点。尽管名称相似,但 SFTP 完全不同,它通过 SSH(Linux 标准)连接传输文件。
端口是不可知的,也就是说,它们并不特别关心您发送的流量是否加密,它们只要求流量的发送方(服务器)和接收方(客户端)使用相同的端口。因此,如果您知道您只会通过端口 21 发送流量,请记住服务器需要 SSL 连接。
如果您无法控制客户端以及允许它们连接的端口,则应将 IIS FTP 端口从默认的 21 更改为行业标准 990。更改 IIS 中的端口非常简单,在您使用的教程的第 4 步中,只需将默认端口 21(如下图所示)更改为 FTPS 端口 990。IIS 控制面板的屏幕截图http://learn.iis.net/file.axd?i=1612
请记住将防火墙重置为端口 990,并重新启动 IIS 服务器以使更改生效。
更新(现附有 Filezilla 客户端说明)
我认为我们在解决问题时可能有点混乱,因此,为了避免更改更多设置并可能产生更多问题,我在我的 Windows 7 笔记本电脑上使用 localhost 创建了一个测试服务器,并使用 Filezilla 连接到它。由于您向我展示了有关创建 FTP 站点的教程,并且您能够毫无问题地创建非安全连接,因此我将略过这一点,专注于 Filezilla 会话,因为问题更有可能发生在这里。
首先,我设置了我的默认 FTP 站点,名为“测试”。请记住,我运行的是 Windows 7,因此即使步骤相同,它们可能看起来与您的服务器不同。 正如我之前所说,端口并不重要,唯一的要求是服务器和客户端使用相同的端口。但是,为了保持惯例,我将继续使用端口 990。
我告诉 IIS 需要 SSL 连接(默认允许,但是我们想要力量客户端使用 SSL,因此我们明确表示这就是我们想要的)。而且,由于我们正在测试,我们将使用默认的 IIS Express 开发证书,如下面的屏幕截图所示。在现实生活中,您应该从信誉良好的来源获取 SSL 证书,但如果没有,您可能能够连接,但客户端会发出警告。(披露:我不太熟悉使用 SSL 保护网站,因此在向公众发布您的网站之前,我会确认您的设置)
网站启动后,确认您正在使用前缀连接到服务器ftps://。这就是 FTP 客户端知道您需要创建安全连接的方式,也是我不断重复端口号无关紧要的原因。继续使用您设置的用户名和密码(我使用的是匿名且无密码),并在末尾插入您的端口号,但如果您使用的是 FTPS 默认值 990,Filezilla 往往会在您连接时将其删除。我的日志显示在下面的屏幕截图中。
我想到的最后一个问题是:确保服务器和客户端之间的时钟设置正确。可能会有几个小时的偏差,但 SSL 使用时间戳来验证安全性,而且计算机通常设置为默认的加利福尼亚时区,而用户天真地将时间重置为当地时间而不更正时区。这会导致时间的巨大变化,并可能导致奇怪的 SSL 错误。
让我知道您的日志看起来如何,我会看看是否可以为您提供帮助!