You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

启用Ubuntu防火墙后FTPS(vsftpd+SSL)偶尔超时,请求排查端口问题

这个问题我太熟悉了!之前帮好几个朋友排查过,核心原因几乎都是FTPS被动模式的动态端口没在UFW里放行——毕竟开了防火墙后,被动模式随机生成的高位端口大概率被拦截,偶尔碰巧没被拦就连接成功,所以才会时好时坏。下面一步步帮你解决:

一、先搞定FTPS偶尔超时的问题

VSFTPD默认用被动模式时,会随机选择高位端口传输数据,UFW默认不会放行这些随机端口,所以才会出现不稳定的情况。我们可以固定被动模式的端口范围,然后在UFW里放行:

  1. 修改VSFTPD配置文件
    打开配置文件编辑:

    sudo nano /etc/vsftpd.conf
    

    添加或修改以下两行,固定被动模式的端口范围(端口可以自定义,只要是未被占用的高位端口即可):

    pasv_min_port=40000
    pasv_max_port=50000
    

    顺便确认下你的SSL配置是否正确(你应该已经配置过,但可以再核对):

    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    require_ssl_reuse=NO
    ssl_ciphers=HIGH
    
  2. 重启VSFTPD服务让配置生效

    sudo systemctl restart vsftpd
    
  3. 在UFW里放行必要的端口

    • 首先放行FTPS的控制端口21(带SSL的显式FTPS端口):
      sudo ufw allow 21/tcp
      
    • 然后放行我们刚才固定的被动模式端口范围:
      sudo ufw allow 40000:50000/tcp
      
    • 最后重载UFW使规则生效:
      sudo ufw reload
      

做完这些后,再用FileZilla测试连接,应该就不会出现超时的情况了。

二、如何查询特定应用所需的端口

分享几个我常用的方法,准确率从高到低排序:

  • 直接看应用的配置文件或官方文档:这是最准确的方式,比如VSFTPD的配置文件里就有关于被动端口的注释,官方文档也会明确说明需要的端口范围。
  • ss命令查看应用正在监听的端口
    比如查看VSFTPD当前监听的端口:
    sudo ss -tulpn | grep vsftpd
    
    这个命令会列出应用绑定的所有TCP/UDP端口,能快速找到当前正在使用的端口。
  • 查看系统默认端口映射文件
    系统的/etc/services文件记录了大部分常用服务的默认端口,比如查询FTP相关端口:
    cat /etc/services | grep ftp
    
    你会看到FTP默认21,FTPS隐式模式默认990等信息,但注意如果是自定义配置的端口,这里不会显示。
  • 查看UFW自带的应用规则
    有些常用应用UFW已经预设了规则,你可以先列出所有预设应用:
    sudo ufw app list
    
    如果能看到FTPFTPS选项,直接用sudo ufw allow FTPS就能放行对应端口,但要注意预设规则可能不包含被动模式的端口范围,所以还是手动固定端口更稳妥。

最后提个小建议:用root账号远程FTP其实存在安全风险,建议创建专门的FTP用户,并限制其只能访问指定目录,这样更安全。

内容的提问来源于stack exchange,提问作者Tailer

火山引擎 最新活动