一、创作背景
之前有用linux系统搭建过ftp服务器,最近想着用windows系统也顺便搭建一个,看网上有第三方服务软件一键部署,记得windows可以不借助第三方软件就可以搭建,就想顺便操作试试,结果老是连接不上,费了点时间,在这里总结下操作的步骤,并记录下搭建过程遇到的一些问题。
二、环境准备
虚拟机软件:VMware® Workstation 16 Pro
操作系统:windows 7 企业版
三、操作步骤
(一)启用IIS及FTP服务
1、开启windows功能
打开控制面板->程序->启用或关闭windows功能->勾选:
1) Internet信息服务->展开后勾选FTP服务器、FTP扩展性
2) Web管理工具->IIS管理控制台
点击确定等待安装完成。
2、验证IIS安装
安装完成后,在【开始】菜单->搜索"IIS"->打开Internet信息服务(IIS)管理器
(二)配置用户账户与权限
1、创建专用FTP用户
右键“计算机” ->管理 ->本地用户和组 ->用户 ->右键新建用户 -> 设置用户名及密码(建议勾选“密码永不过期”)
2、设置文件夹权限
右键共享文件夹 ->属性 ->安全 ->添加新建的用户 ->勾选“读取”和“写入”权限。
(三)创建FTP站点
1、新建站点
在IIS管理器中->右键“网站”->选择“添加FTP站点”->输入站点名称(如MyFTP)->设置站点目录的物理路径。
2、配置绑定与SSL
1)IP地址:选择本机IP或“全部未分配”(若需局域网访问建议绑定具体IP)
2)端口:默认21(若端口冲突可改为2121等)
3)SSL:选择“无SSL”或根据需求启用加密
3、设置身份验证与权限
1)身份验证:勾选“基本身份验证”
2)授权:选择“指定用户”或“所有用户” -> 设置读取/写入权限。
(四)防火墙与网络配置
1、开放防火墙端口
手工配置防火墙入站规则:
1)控制面板 -> 系统和安全 -> Windows防火墙 -> 高级设置 -> 右键入站规则 -> 新建规则 -> 允许TCP端口21(或自定义端口);
规则类型:端口
协议和端口:TCP、特定本地端口21
操作:允许连接
配置文件:专用、公用
名称:允许TCP端口21
新添加的入站规则默认启用
2)若使用被动模式,需额外开放TCP端口范围1024-65535。
使用FTP服务器自带防火墙配置:
控制面板 -> 系统和安全 -> Windows防火墙 -> 允许程序或功能通过Windows防火墙 -> 更改设置 -> 勾选FTP服务器(家庭、公用)-> 确定
2、局域网/外网访问测试
在宿主机上,打开CMD窗口,执行ftp IP地址 -> 输入账号密码验证连接
四、问题思考
1、当用宿主机文件资源管理器,目录框内输入ftp://IP地址,并且输入账号密码连接,提示FTP文件夹错误,但是使用CMD窗口键入命令正常连接。
通过查看日志文件发现,这两种连接方式有区别
通过CMD窗口输入命令连接ftp服务器采用主动模式,而window资源管理器连接ftp服务器默认采用被动模式,而防火墙没有配置或启用被动模式的高位端口的入站规则,所以导致数据传输通道建立失败。
扩展
ftp服务器的主动模式与被动模式
主动模式:
客户端通过21端口连接服务器,发送PORT命令将自身ip与特定端口告知服务器,服务器主动通过20端口与客户端特定端口建立数据通道进行数据传输。
被动模式:
客户端向通过21端口连接服务器,发送PASV命令采用被动模式,服务器随机返回高位端口(1024-65535)进行监听,客户端主动与服务器高位端口建立数据通道进行数据传输。
2、手工配置防火墙时只需要添加入站规则,不需要添加出站规则的嘛?
防火墙入站规则严格控制,默认阻止所有入站流量,而出站规则宽松,默认允许所有出站流量,与允许通过入站流量相反,配置出站规则是为了阻止数据传出,例如防止恶意软件外传数据、限制访问某些不信任的危险网站等
3、ftp站点的文件夹目录安全属性不配置 ftp_user用户权限会怎样?配置的权限分别有什么作用?
默认情况下,通过计算机管理界面创建的新用户,隶属用户组为Users,如果配置的ftp根目录的安全属性列表没有配置的新用户访问对象,则按照Users用户组的权限去执行(Users用户组默认没有写入权限),但是如果安全属性列表里访问对象有Authenticated Users经过身份验证的用户组(默认有写入权限),ftp服务器有配置身份验证,经过身份验证的用户可以按照Authenticated Users用户组的访问控制权限去操作ftp根目录文件内容。不同文件路径下新建文件的安全属性-可访问对象用户组可能不同:
配置ftp站点目录可访问对象(用户和用户组)的可操作权限,最常用的就是读取、写入权限,拥有读取权限可查看ftp根目录(站点目录)的文件内容和下载文件,而拥有写入权限则可以上传文件。
五、总结
FTP服务器搭建其实很简单的,通过反复测试,其实是VMware虚拟机网络配置的问题,我虚拟机采用的NAT模式,由于都是宿主机与虚拟机测试不涉及外网设备也不需要开启端口转发功能。之前一直卡在防火墙配置那块,手动配置入站规则能正常连接访问,自动配置的入站规则启用后,老是连接不上,后面把VM虚拟网络编辑器打开重置了下网络配置,重启虚拟机后又能正常访问(⊙﹏⊙) 当所有配置都没有问题的时候,然后一直出现连接ftp服务器超时的时候,大家可以考虑下重置一下虚拟机的网络。还有就是站点权限编辑的问题,如果文件安全属性有Authenticated Users,那新建的用户可以不配读取写入权限,没有这个用户组的话,USERS组默认也有读取权限,就是没有写入权限,上传不了文件,对用户及用户组权限感兴趣的可以去研究一下windows各类用户组具体的作用及应用场景。