FTP 服务凭借协议简单、客户端丰富的优势,至今仍是企业内部文件交换的常用方案。Windows Server 自带的 IIS 角色里包含 FTP 服务,安装方便、管理直观,很多运维人员的第一反应就是用它。但默认配置的 FTP 站点安全强度很低:数据以明文传输、匿名访问可能被开启、目录权限随意,任何一项疏忽都可能造成数据泄露。这篇文章从实际部署出发,逐项梳理 IIS 中 FTP 站点的安全配置要点,帮你把风险压到最低。

一、先做好基础隔离:目录隔离与授权规则
FTP 站点最容易出问题的环节不是协议本身,而是用户能访问到什么。默认情况下,用户登录后会落在 FTP 根目录,如果根目录权限设置过大,一个账号失窃就等于整个服务器失守。IIS 提供了「FTP 用户隔离」功能,建议在创建站点时就规划好。打开 IIS 管理器,选中 FTP 站点,双击「FTP 用户隔离」图标,可以看到多种隔离模式:
五种隔离模式: 1. 不隔离用户(默认,不推荐) 2. 隔离用户,要求用户主目录位于 FTP 根目录下 3. 隔离用户,要求用户主目录位于 Active Directory 中配置的路径 4. 用户名物理目录隔离(推荐中小环境使用) 5. 自定义全局虚拟目录
对大多数中小环境来说,第四种「用户名物理目录」最实用。假设 FTP 根目录是 C:\inetpub\ftproot,用户 zhangsan 登录后会直接进入 C:\inetpub\ftproot\LocalUser\zhangsan 目录,天然看不到其他用户的文件。需要注意的是,LocalUser 这个目录名是固定的,不能随意改名,否则隔离会失效。
目录规划好之后,紧接着要配置授权规则。双击站点的「FTP 授权规则」,删除默认的「所有用户读取」规则,改为按用户或按组精确授权。比如只允许 ftpusers 组拥有读写权限,其他用户一律拒绝。同时,请养成一个习惯:为 FTP 单独创建本地用户或专用域账号,并把这个账号从远程桌面用户组、本地登录权限中剔除,只保留「作为服务登录」和 FTP 访问能力,把账号权限缩到最小。NTFS 权限也要同步收紧,在 C:\inetpub\ftproot 上移除 Everyone 和 Users 组的写入权限,只给具体账号赋权,做到 IIS 授权规则与磁盘 NTFS 权限双保险。
二、禁用匿名、启用 SSL,堵住明文传输的口子
FTP 协议天生是明文传输的,账号密码、文件内容在网络上一路裸奔,抓包工具几秒钟就能看到登录口令。IIS 中的应对方案有两步:先关掉匿名访问,再强制启用 FTP over SSL(FTPS)。
第一步,双击站点下的「FTP 身份验证」图标,把「匿名身份验证」设为禁用,将「基本身份验证」设为启用。基本身份验证虽然本身也是明文,但在 SSL 的保护下,整个会话都会被加密,安全性完全够用。千万不要因为图省事而保留匿名访问,哪怕只是临时开放,也可能被扫描器利用来上传恶意文件。
第二步,配置 SSL。如果你有从 CA 申请的正式证书最好,没有的话可以自签名证书应急。SSL 配置的核心界面上有三个级别:「允许 SSL 连接」只加密密码、「要求 SSL 连接」强制加密所有控制通道和数据通道、「自定义」可以精确到只对凭据加密。生产环境建议直接选「要求 SSL 连接」。如果习惯用命令行,也可以通过 appcmd 完成:
cd C:\Windows\System32\inetsrv appcmd set config "Default Web Site" /section:system.ftpServer/security/ssl /controlChannelChannel:Ssl /sslPolicy:CsvcRequireSSL /commit:apphost
执行成功后,客户端必须使用显式 FTPS(端口 21 协商后升级 TLS)或隐式 FTPS(端口 990)才能连接。主流工具如 FileZilla、WinSCP、FlashFXP 都支持,连接时选择「要求显式 FTP over TLS」即可。启用 SSL 后务必回归测试,确认被动模式数据端口也走加密通道,否则会出现登录成功但列目录卡死的典型问题。
三、防火墙端口与 IP 限制:控制攻击面
FTP 的被动模式有一个经典坑:数据连接使用随机高位端口,如果端口范围不固定,防火墙上就没法精准放行,很多管理员索性放行一大段端口,等于给攻击者开了后门。正确做法是先在 IIS 中把被动端口范围锁死。编辑 C:\Windows\System32\inetsrv\config\applicationHost.config,找到 system.ftpServer 节点下的 firewallSupport 节点,设置 dataChannelPortRange:
<site name="MyFTP" id="2">
<ftpServer>
<firewallSupport externalIp4Address="203.0.113.10" />
<security>
<ssl controlChannelPolicy="Ssl" dataChannelPolicy="Ssl" />
</security>
</ftpServer>
</site>
<system.ftpServer>
<firewallSupport dataChannelPortRange="5000-5100" />
</system.ftpServer>同时在防火墙(包括 Windows 防火墙和上层硬件防火墙)上只放行 21 端口和 5000-5100 这段数据端口。如果站点部署在 NAT 网络之后,别忘了通过 firewallSupport 的 externalIp4Address 指明公网出口 IP,否则被动模式下客户端拿到的内网地址会导致连接失败。
IP 限制是另一道有效的防线。双击站点的「FTP IP 地址和域限制」,可以把访问范围收紧到指定的网段。比如 FTP 只服务于办公室和分支机构,就添加允许条目 192.168.1.0/24 和分支出口 IP,然后在「编辑功能设置」里把默认访问行为改为「拒绝」,未在白名单内的 IP 一律拒之门外。对于暴露在公网的 FTP,建议直接默认全部拒绝、只放白名单,配合 SSL 和强密码,安全性会有质的提升。
四、日志审计与账号策略:出事之后能查、平时能防
安全配置不是一锤子买卖,持续的日志审计才是发现异常的关键。在站点「FTP 日志记录」中,建议选择 W3C 格式,字段至少勾选:日期、时间、客户端 IP、用户名、方法、URI 资源、协议状态、发送字节数、接收字节数。日志默认落在 C:\inetpub\logs\LogFiles 下,按站点分目录存放。定期关注两类信号:短时间内同一 IP 的大量 530 状态码(认证失败)意味着正在被暴力破解,可以结合 IP 限制立即封禁;异常时段的大量上传流量则要排查是否有账号被盗用。
账号策略方面,给所有 FTP 账号设置强密码自不必说,还可以通过组策略加码:在本地安全策略中把「账户锁定阈值」设为 5 次、锁定时间 30 分钟,配合上面的日志监控,暴力破解基本没有生存空间。另外,建议在计划任务里加一个定期检查,扫描 C:\inetpub\ftproot 下的大文件和可执行文件(如 .exe、.bat、.aspx),FTP 目录里本不该出现这类文件,一旦发现往往是入侵的信号。
最后提一句版本与更新:老版本 Windows Server 上的 FTP 服务曾曝出过漏洞,务必通过 Windows Update 保持系统补丁最新。把用户隔离、强制 SSL、端口与 IP 收紧、日志审计这四层防线依次落实下来,你的 IIS FTP 服务器就能在好用和安全之间取得一个可靠的平衡点。
IIS FTP服务器FTP安全配置Windows Server修改时间:2026-09-03 23:21:21