我的 vsftpd 实例有多个用户可以连接。
用户 1 主目录:/ftp/user1 - 运行正常
用户 2 主目录:/ftp/user2 - 运行正常
用户 3 主目录:/ftp - 运行正常,此用户负责管理其他用户的文件
用户 4(我)主目录 /var/www/html - 启用 UFW 后出现“无法检索目录列表”。
user4 是 /var/ww/html 及其所有内容的所有者。
Filezilla 日志:
Status: Connecting to [ipaddress]:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Status: Verifying certificate...
Status: TLS connection established.
Status: Server does not support non-ASCII characters.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is the current directory
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (ip,ip,ip,ip,159,151).
Command: LIST
Error: Connection timed out after 20 seconds of inactivity
Error: Failed to retrieve directory listing
禁用 UFW 后,连接可按预期工作。
我有更多的规则,但我破坏了一些东西。我重置了 iptables,然后清除了 ufw 规则,并设置了这个。
这台机器上有 2 个适配器,一个连接到我的私人网络,一个面向公众(如果有必要的话)。
default deny incoming
default allow outgoing
ufw status:
Status: active
To Action From
-- ------ ----
Apache ALLOW Anywhere
21/tcp ALLOW Anywhere
22 ALLOW [lanip]/24
5222 ALLOW [lanip]/24
Samba ALLOW Anywhere
5269 ALLOW [lanip]/24
Apache Full ALLOW Anywhere
Apache Secure ALLOW Anywhere
我是否遗漏了被动端口的规则?
答案1
将 ftp 客户端切换到主动模式有效,因此它一定是被动端口。
看起来我需要编辑 /etc/vsftpd.conf:
pasv_enable=Yes
pasv_min_port=10100
pasv_max_port=10110
然后:
sudo systemctl restart vsftpd
sudo ufw allow from any to any proto tcp port 10100:10110
编辑:解决了,这个方法奏效了。我要离开这个,因为我找不到好的答案,希望我可以帮助下一个人