Ubuntu FTP Server端口设置建议
一 端口使用原则
- FTP 协议包含两类连接:控制通道使用 TCP 21;数据通道在主动模式由服务器从 TCP 20 主动连客户端,在被动模式由服务器在预先配置的“被动端口范围”内监听等待客户端连接。现代网络(NAT/防火墙后)更推荐使用被动模式,因此除 21 外,还需固定并放行一段高端口范围用于数据传输。
二 推荐端口配置
- 控制端口:保持默认 21/TCP(客户端登录、发送命令)。
- 被动端口范围:选择一段连续的高端口,便于在防火墙/云安全组统一放行。常见做法与示例如下(三选一或按环境自定):
- 示例A:30000–31000/TCP(约 1000 个端口,适合中小规模并发)
- 示例B:40000–50000/TCP(约 10000 个端口,适合并发较高)
- 示例C:50000–50100/TCP(约 100 个端口,适合并发较低)
- 说明:范围大小应结合并发连接数与系统资源规划,过大增加防火墙维护成本,过小在高并发下可能“无可用数据端口”。以上区间均为业界常见实践,示例配置在 Ubuntu + vsftpd 场景中广泛采用。
三 防火墙与安全组放行示例(UFW)
- 放行控制端口与被动端口范围(以示例A为例):
- sudo ufw allow 21/tcp
- sudo ufw allow 30000:31000/tcp
- 如使用主动模式,通常还需放行服务器的 20/tcp(多数客户端/环境会自动协商,但部分严格防火墙需显式放行)
- 云服务器还需在“安全组”入方向同时放行上述端口范围。
四 vsftpd关键配置示例(仅展示与端口相关项)
- 启用被动模式并设定端口范围(示例A):
- pasv_enable=YES
- pasv_min_port=30000
- pasv_max_port=31000
- 如服务器位于 NAT 之后,建议显式声明公网地址,便于客户端建立数据通道:
- 说明:以上参数写入 /etc/vsftpd.conf,修改后需重启 vsftpd 生效。
五 安全与替代方案建议
- 加密传输:建议启用 SSL/TLS(FTPS),在 vsftpd 中配置证书并强制登录/数据传输加密,避免明文凭据泄露。
- 模式选择:公网/跨 NAT 环境优先使用被动模式;主动模式常因客户端侧防火墙导致数据连接失败。
- 更安全的替代:如非必须 FTP,优先采用 SFTP(基于 SSH),默认使用 22/TCP,无需额外数据端口,运维与穿透更简单。