Toq*_*eer 57 centos ftp vsftpd
每当我安装vsftpd时centos,我只为用户设置监狱环境,其余是vsftpd. 我创建了用户并尝试与filezilaftp 客户端连接,但无法使用被动模式连接。我总是transfer settings将活动模式更改为成功连接到ftp server否则我得到
Error: Failed to retrieve directory listing
Run Code Online (Sandbox Code Playgroud)
那么有没有办法改变vsftp.conf文件中的任何指令,我们可以用被动模式连接到服务器?
use*_*517 97
要为 vsftpd 配置被动模式,您需要在 vsftpd.conf 中设置一些参数。
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
Run Code Online (Sandbox Code Playgroud)
这将启用被动模式并将其限制为使用 11 个端口进行数据连接。这很有用,因为您需要在防火墙上打开这些端口。
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
如果在测试后一切正常,则使用以下命令保存防火墙的状态
service iptables save
Run Code Online (Sandbox Code Playgroud)
这将更新/etc/sysconfig/iptables文件。
要做到这一点,CentOS 7 你必须使用新的 firewalld,而不是 iptables:
找到您的区域:
# firewall-cmd --get-active-zones
public
interfaces: eth0
Run Code Online (Sandbox Code Playgroud)
我的区域是“公共”,所以我将我的区域设置为公共,添加端口范围,然后我们重新加载:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)
建立连接时会发生什么
您的客户端在端口 21 上连接到 vsftpd 服务器。
服务器响应客户端,告诉它从上面指定的范围连接到哪个端口。
客户端在指定端口建立数据连接,会话继续。
这里对不同的 ftp模式有很好的解释。
bra*_*n99 27
要启用被动模式,请在 vsftp.conf 中设置以下配置选项:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)
您当然可以更改开始和结束端口,并将xxx替换为您服务器的公共IP。
此外,您应该在防火墙中打开被动模式端口范围。在 centos 上,您可以加载ip_conntrack_ftp模块来处理防火墙中的 ftp 连接。编辑/etc/sysconfig/iptables-configip_conntrack_ftp 并将其添加到 IPTABLES_MODULES 选项。然后重启iptables:
/sbin/service iptables restart
Run Code Online (Sandbox Code Playgroud)
在 旁边pasv_enable=YES,指定 VSFTP 将运行 PASV 模式的端口范围:
pasv_min_port=50000
pasv_max_port=50999
port_enable=YES
Run Code Online (Sandbox Code Playgroud)
不要忘记配置 iptables 允许在这些端口上传输数据包:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
小智 6
我必须执行以下步骤才能使 vsftp 被动模式在 CentOS 8 上工作:
在 vsftpd 配置中启用被动模式/etc/vsftpd/vsftpd.config:
pasv_enable=Yes
pasv_min_port=50000
pasv_max_port=50999
Run Code Online (Sandbox Code Playgroud)
在firewalld中启用ftp服务:
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)
正如另一篇文章中提到的,您必须加载内核模块“nf_conntrack_ftp”(CentOS 8 中已经存在这种情况)并在内核设置中启用“nf_conntrack_helper”:
echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
Run Code Online (Sandbox Code Playgroud)
添加此行/etc/sysctl.conf(或存在/etc/sysctl.d/10-nf_conntrack_helper.conf时/etc/sysctl.d/)以进行重新启动持久设置:
net.netfilter.nf_conntrack_helper=1
Run Code Online (Sandbox Code Playgroud)
启用连接跟踪后,无需在本地防火墙中额外配置被动端口。