【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(下)SSL设置及被动模式

2023-05-16

目录

    • 5.5、FTP SSL设置
      • 准备工作
        • (1)创建FTP用户访问组
        • (2)编辑FTP站点【fjnu-ftp】的权限
        • (3)创建SSL证书
        • *配置FTP SSL
      • 验证
        • (1)不加密访问FTP服务
        • (2)TLS/SSL显式加密访问FTP服务
    • 5.6 FTP服务器启用被动模式
  • 参考资料
  • 关联博文

5.5、FTP SSL设置

准备工作

(1)创建FTP用户访问组

① 打开服务器本地【计算机管理】,在【系统工具】——>【本地用户和组】——>【用户】中创建FTP用户账户。在中间列表空白处点击鼠标右键选择【新用户】,分别创建ftp2和ftp3两个新用户。

在这里插入图片描述

② 点击左侧菜单中的【组】,在中间列表空白处点击鼠标右键选择【新建组】,设置组名,将ftp1、ftp2和ftp3添加到成员中,最后点击【创建】。

在这里插入图片描述

(2)编辑FTP站点【fjnu-ftp】的权限

① 打开IIS管理器,在左侧的菜单中右键点击f【fjnu-ftp】,选择【编辑权限】

在这里插入图片描述

② 在弹出的【fjnu-ftp属性】对话框中,选择【安全】选项卡,点击【编辑】,然后在弹出的【安全】对话框中选择添加,输入:FTPGroup,点击【检查名称】,最后点击【确定】。

在这里插入图片描述

③ 添加完成后,为FTPGroup增加权限,在【允许】列中勾选【完全控制】,点击【确定】

在这里插入图片描述

(3)创建SSL证书

由于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的【个人】和【中间证书颁发机构】中。

在这里插入图片描述

*配置FTP SSL

① 返回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隐式加密和显式加密》一文

(1)不加密访问FTP服务

因为FTP以明文的方式传输数据,因此使用不加密的方式访问FTP服务时,用户名和密码以及访问的文件内容可能会被不法分子监听截获。

在这里插入图片描述

(2)TLS/SSL显式加密访问FTP服务

在这里插入图片描述

####(3)TLS/SSL隐式加密访问FTP服务

使用TLS/SSL隐式加密访问FTP服务时,FTP服务器端的绑定端口必须和客户端的端口一直。FTP客户端的TLS/SSL隐式加密访问端口默认为990,因此,如果想使用该方式访问FTP服务,服务器中的绑定设置必须开放990端口。

在这里插入图片描述

FTP客户端和FTP服务器端口一致时,才能正常通过TLS/SSL隐式加密访问FTP服务

在这里插入图片描述

5.6 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)。

在这里插入图片描述

参考资料

  • FTP协议的主动模式和被动模式的区别
  • FTPサーバー : SSL/TLS の設定
  • Microsoft Docs:New-SelfSignedCertificate
  • Microsoft Docs:Installing and Configuring FTP 7 on IIS 7

关联博文

关于 FTP 服务的配置与管理 请查阅接下来的博文:

  • 【Windows Server 2019】FTP服务的配置与管理——理论(FTP工作原理及简单介绍)

  • 【Windows Server 2019】FTP服务的配置与管理——新建及测试FTP站点

  • 【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(上)IP地址限制、身份验证、授权规则和请求筛选

  • 【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(下)SSL设置及被动模式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(下)SSL设置及被动模式 的相关文章

  • 如何驯服 Windows 标头(有用的定义)?

    在其中一个答案中this https stackoverflow com questions 1394132 macro and member function conflict问题jalf https stackoverflow com
  • 避免回绕的 timeGetTime 的最佳替代品是什么?

    time获取时间 http msdn microsoft com en us library dd757629 VS 85 aspx查询系统时间似乎相当不错 然而 它的返回值仅为 32 位 因此大约每 49 天环绕一次 在调用代码中检测翻转
  • Android 中的 SSL 会话重用问题(J2SE 工作正常)

    我一直在 iOS Java 桌面和 Android 上尝试 SSL 会话重用 iOS 似乎尝试重用 SSL 会话 但并非总是如此 只要您在创建 SSLEngine 时传递主机名 端口 Java 似乎总是会重用会话 当我使用 Android
  • Rails 的 Puma Systemd 配置不起作用

    我已经完成了一个使用 Ruby on Rails 构建的应用程序 现在我想将其托管在 AWS 上的 EC2 实例上 我已经为其配置了服务器 并且正在使用pumaHTTP服务器作为应用服务器 在生产中启动应用程序总是需要我运行RAILS EN
  • 如何使用c++获取system32目录的完整路径?

    虽然大多数时候都是C WINDOWS system32 但有时它可以在D分区或类似的 如何以编程方式获取它 可以调用Windows API函数SHGetFolderPath http msdn microsoft com en us lib
  • 设置表单的父级

    我有一个 Windows 表单 我想从中打开一个状态表单 上面写着 正在保存 然后保存完成后消失 我想将这个小状态表单放在调用表单的中间 我尝试将 StartPosition 属性设置为 CenterParent 但它不起作用 我从其他表单
  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • 如何列出静态链接的 python 版本中可用的所有 openssl 密码?

    在python 2 7 8到2 7 9升级中 ssl模块从使用更改为 DEFAULT CIPHERS DEFAULT aNULL eNULL LOW EXPORT SSLv2 to DEFAULT CIPHERS ECDH AESGCM D
  • 如何在docker的keycloak中添加SSL

    我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题 我通过负载均衡器从 AWS EC2 获得了 SSL 证书 但不知道如何将其添加到 docker 上的 Keycloak 中 我正在通过谷歌搜索 但尚未找到任
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • 如何用if条件编写ini文件

    我想编写一个带有 if else 条件的 ini 文件 我用 python 中的 ConfigParser 解析它 如何在ini文件中使用if和else语句 如果我明白你在问什么 您可能想要做的是这样的 在 INI 文件中设置条件值 sec
  • Android SSL 无对等证书

    我有一个例外 没有同行证书 当我询问谷歌时 我得到了解决方案 我信任所有证书 但这个问题的答案是 它是不安全的 所以我给班级打电话 HostnameVerifier hostnameVerifier org apache http conn
  • 正确配置JDK环境变量后仍然找不到java命令

    我在 Windows 虚拟机启动时安装 JDK 使用 cloudinit 用户数据将 PowerShell 脚本传输到 Windows 计算机 然后运行该脚本来安装 JDK softwares Get ItemProperty HKLM S
  • 我试图理解为什么在使用 paramiko 1.7.6 时出现“权限被拒绝”错误

    谁能告诉我为什么我会收到以下错误 Traceback most recent call last File C Python27 connect py line 22 in
  • 尝试读取转储时“无法加载符号”

    我的一个应用程序有时会在 Win XP 计算机上导致 BSOD 为了了解更多信息 我加载了生成的 dmp 文件 来自 C Windows Minidump 但在执行此操作时在大部分读数中收到此消息 Symbols can not be lo
  • 无法从 Windows 7 上的 Windows 服务启动桌面应用程序

    HI 我在 Windows 7 上有 C WCF Windows 服务 以具有管理员权限的用户身份登录 我正在尝试在服务启动后启动桌面应用程序 我发现的所有讨论都是关于 Windows 工作站和桌面 我创建了一个单独的线程 设置线程工作站和
  • 如何通过批处理文件检查服务是否正在运行并启动它,如果它没有运行?

    我想编写一个执行以下操作的批处理文件 Check if a service is running 如果正在运行 请退出批处理 如果没有运行 启动该服务 到目前为止 我在谷歌上搜索的代码示例被证明不起作用 所以我决定不发布它们 启动服务是通过
  • 用于在 Windows 中自动执行桌面活动的 Python 代码

    我想使用 Python 在 Windows 环境中自动化桌面活动 怎样才能做到呢 一些例子也会有帮助 我所说的桌面活动是指控制鼠标和键盘 访问活动窗口属性 双击桌面上的图标 最小化和最大化窗口 通过键盘向输入弹出窗口输入数据等操作 看一下S
  • 已安装全局 NPM 包但未找到命令

    我已经全局安装了两个 npm 包 下载 https www npmjs com package download and 谜虚拟盒 https www npmjs com package enigmavirtualbox通过命令行 npm
  • Windows“findstr”命令:排除包含特定字符串的结果

    到命令findstr str1 我想添加一些内容来排除包含该字符串的结果str2 在Linux中 这样做的方法是添加 grep v str2 to grep str1 当然 是否有一个等效的标志 v在 Windows 中 是否有一个等效的标

随机推荐