① 打开服务器本地【计算机管理】,在【系统工具】——>【本地用户和组】——>【用户】中创建FTP用户账户。在中间列表空白处点击鼠标右键选择【新用户】,分别创建ftp2和ftp3两个新用户。
② 点击左侧菜单中的【组】,在中间列表空白处点击鼠标右键选择【新建组】,设置组名,将ftp1、ftp2和ftp3添加到成员中,最后点击【创建】。
① 打开IIS管理器,在左侧的菜单中右键点击f【fjnu-ftp】,选择【编辑权限】
② 在弹出的【fjnu-ftp属性】对话框中,选择【安全】选项卡,点击【编辑】,然后在弹出的【安全】对话框中选择添加,输入:FTPGroup,点击【检查名称】,最后点击【确定】。
③ 添加完成后,为FTPGroup增加权限,在【允许】列中勾选【完全控制】,点击【确定】
由于SSL证书需要购买,本次实验中,使用Windows Powershell的New-SelfSignedCertificate命令,该命令可以让用户在Windows上创建一个新的自签名证书来进行测试。
① 用管理员权限启动Powershell。右键点击【开始】,选择【Windows PowerShell】。
② 确认证书存储路径。使用命令:
Get-PSDrive | Format-Table -AutoSize -Wrap
③ 创建SSL证书。使用命令:
New-SelfSignedCertificate `
-DnsName "fjnu.local" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-CertStoreLocation "Cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears(5)
关键字解释:
# 创建自签名证书
# -DnsName (DNS名,如果未指定主题名称(Subject Name),第一个DNS名默认为颁发者名称。)
# -KeyAlgorithm (指定用于对新证书进行签名的哈希算法名。这里使用RSA)
# -KeyLength (指定新证书关联的密钥长度,以位(bits)为单位,这里密钥长度为2048 bits)
# -CertStoreLocation (指定用于存储新证书的证书存储路径。)
# -NotAfter (证书有效期 : 上面的示例有限期为5年。)
④ 打开Windows证书管理其,使用快捷键win+R,在【运行】中输入:certlm.msc,点击【确定】
⑤ 进入【certlm】后,右键点击【证书-本地计算机】,选择【刷新】,然后再次右键点击【证书-本地计算机】,选择【查找证书】。在弹出的对话框中输入刚才创建的SSL证书名:fjnu.local,进行查找。
⑥ 由Windows PowerShell自签名的证书,在创建完成后,系统会自动导入到certlm的【个人】和【中间证书颁发机构】中。
① 返回IIS管理器中的【fjnu-ftp主页】,右键点击【fjnu-ftp】选择【刷新】,然后点击【FTP SSL设置】。
② 进入【FTP SSL设置】界面,点击【选择】,在弹出的对话框中自动出现刚才创建的SSL证书,点击证书,然后点击【确定】。接下来在SSL策略中,选择【需要SSL连接】,最后在右侧【操作】栏中,点击【应用】。
在PC2上用资源管理器访问FTP服务器,发现无法访问,这是因为FTP服务器设置了需要使用SSL通道才能连接FTP服务器。
在PC2上使用FTP客户端——WinSCP访问FTP服务器。WinSCP访问FTP服务时有三种模式,包括不加密、TLS/SSL显式加密和TLS/SSL隐式加密。其中不加密、TLS/SSL显式加密默认访问FTP服务器21号端口。TLS/SSL隐式加密默认访问FTP服务器990端口。三种方式的具体区别请参考《wireshark抓包分析FTP三种连接方式:不加密、TLS/SSL隐式加密和显式加密》一文
因为FTP以明文的方式传输数据,因此使用不加密的方式访问FTP服务时,用户名和密码以及访问的文件内容可能会被不法分子监听截获。
####(3)TLS/SSL隐式加密访问FTP服务
使用TLS/SSL隐式加密访问FTP服务时,FTP服务器端的绑定端口必须和客户端的端口一直。FTP客户端的TLS/SSL隐式加密访问端口默认为990,因此,如果想使用该方式访问FTP服务,服务器中的绑定设置必须开放990端口。
FTP客户端和FTP服务器端口一致时,才能正常通过TLS/SSL隐式加密访问FTP服务
(1)打开IIS管理器,点击fjnu-ftp主页中的【FTP防火墙支持】
(2)进入【FTP防火墙支持】界面,如果【数据通道端口范围】是灰色,无法添加端口的话,有以下两种可能:
①虚拟机网卡问题。
请把虚拟机中的NAT模式网卡关闭,使用网卡自定义模式。
②防火墙策略问题。
在Windows Defender防火墙的高级设置的入站规则中,将FTP Service这条规则的本地端口改为放行所有端口。
在数据通道端口输入端口范围,然后点击右侧【操作】栏中的【应用】。
(3)打开【控制面板】——>【系统和安全】——>【Windows Defender防火墙】——>【高级设置】——>【入站规则】。找到【FTP Service】这条规则,双击进入【FTP Service属性】界面。
(4)点击【协议和端口】选项卡,在【本地端口】处选择【特定端口】,然后在下方框中输入:21,5000-6000(与FTP防火墙支持的数据通道端口一致),最后点击【确定】。
验证
在PC2中使用WinSCP对FTP服务器进行FTP访问(不加密方式)。上传一个任意文件到FTP服务器中,然后使用命令提示符cmd,输入命令:netstat -n,可以看到PC2使用49674号端口(系统随机选择)向FTP服务器的21号端口发送PASV消息,在控制连接成功建立后,客户端向FTP传送传送数据时,使用49676号端口,而FTP服务器使用5001号端口(P端口)。这和我们在FTP防火墙支持中设置的数据通道端口范围一直(5000-6000)。