Ubuntu FTPServer端口设置指南
小樊
39
2025-12-07 08:28:05
Ubuntu FTP Server 端口设置指南
一 基础概念与端口规划
- FTP存在两种工作模式:主动模式(服务器从20/tcp主动连客户端数据端口)与被动模式(服务器打开高位端口等待客户端连接)。在复杂网络(NAT/防火墙)环境,通常优先使用被动模式并显式开放一段高位端口,便于放行与排障。
- 常见端口分工与控制通道:
- 控制通道:默认21/tcp(可改为自定义端口)。
- 主动模式数据通道:20/tcp(由服务器发起)。
- 被动模式数据通道:自定义端口区间,例如30000–31000/tcp(推荐范围,便于防火墙策略)。
- 若修改了控制端口,客户端和服务端两侧都需要同步为新的端口号;被动端口区间需要在服务器与防火墙/云安全组同时放行。
二 使用 vsftpd 修改控制端口
- 安装与准备(如未安装):
- 安装:
sudo apt update && sudo apt install vsftpd
- 启动与开机自启:
sudo systemctl start vsftpd && sudo systemctl enable vsftpd
- 备份配置:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 修改控制端口(示例改为2121/tcp):
- 编辑配置:
sudo nano /etc/vsftpd.conf
- 设置监听端口(如已有则修改,没有则新增):
listen_port=2121
- 保存并重启:
sudo systemctl restart vsftpd
- 防火墙放行新端口(UFW):
sudo ufw allow 2121/tcp
- 说明:部分教程提到同步修改**/etc/services**中的“21/tcp”映射,但在实际使用中通常只需保证服务端配置与防火墙一致即可;若你的环境或客户端强依赖该映射,可按需调整。
三 被动模式端口范围与防火墙放行
- 在 vsftpd 配置被动端口区间(示例范围30000–31000/tcp):
- 编辑:
sudo nano /etc/vsftpd.conf
- 建议配置:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
- 保存并重启:
sudo systemctl restart vsftpd
- 防火墙放行(UFW):
sudo ufw allow 30000:31000/tcp
- 如使用云服务器,还需在云安全组放行上述端口区间与控制端口。
四 路由器端口转发与 NAT 场景
- 在家庭/办公网络将公网路由器端口映射到内网 Ubuntu 服务器:
- 路由器管理界面 → 端口转发/NAT → 新建规则:
- 外部端口:例如21(或你自定义的控制端口)
- 内部 IP:Ubuntu 服务器内网地址(如192.168.1.100)
- 内部端口:与内部服务端口一致(如21或2121)
- 保存并(如需)重启路由器。
- 客户端连接时使用路由器的公网IP:端口;若修改了控制端口,客户端需显式填写新端口。
五 加密传输与连接测试
- 启用 TLS/SSL(FTPS)提升安全性(示例):
- 生成证书(如尚未准备):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 配置 vsftpd:
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 重启:
sudo systemctl restart vsftpd
- 客户端(如 FileZilla)选择“FTP over TLS”并连接。
- 连接与验证要点:
- 使用新端口连接(如2121),在客户端显式指定端口。
- 验证被动模式是否走指定端口区间(抓包或查看日志)。
- 若使用主动模式,确保服务器侧20/tcp出站未被拦截,且客户端防火墙允许入站数据连接。
- 安全建议:
- 优先使用FTPS或SFTP(基于SSH),避免明文 FTP。
- 限制可登录用户、启用日志、必要时将用户chroot到主目录。