Linux安装vsftpd及配置详解

 

 

 

1 安装vsftpd组件

安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。
[root@bogon ~]# yum -y install vsftpdhtml

二、FTP主动模式与FTP被动模式的端口说明

FTP是仅基于TCP的服务,不支持UDP。 不同凡响的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫作控制端口)。一般来讲这两个端口是21(命令端口)和20(数据端口)。但FTP工做方式的不一样,数据端口并不老是20。这就是主动与被动FTP的最大不一样之处。linux

FTP协议有两种工做方式:PORT方式和PASV方式,中文意思为主动式和被动式。shell

(一) FTP主动模式数据库

主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)链接到FTP服务器的命令端口,也就是21端口。而后客户端开始 监听端口N+1,
并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它本身的数据端口(20)链接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来讲,必须容许如下通信才能支持主动方式FTP:
1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的链接)
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据链接到客户端的数据端口)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

简明归纳:
PORT(主动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时,
客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来链接我”。因而服务器从20端口向客户端的XXXX端口发送链接请求,
创建一条数据链路来传送数据。

开启主动模式:
pasv_enable=no
若设置为YES,则使用PASV工做模式;若设置为NO,则使用PORT模式。默认值为YES,即便用PASV工做模式。

主动模式下:
SecureFX工具去链接ftp,客户没有容许开放端口,服务器无法与客户端相链接,关闭客户端防火墙

  (二) FTP被动模式vim

为了解决服务器发起到客户的链接的问题,人们开发了一种不一样的FTP链接方式。这就是所谓的被动方式,或者叫作PASV,当客户端通知服务器它处于
被动模式时才启用。
在被动方式FTP中,命令链接和数据链接都由客户端发起,这样就能够解决从服务器到客户端的数据端口的入方向链接被防火墙过滤掉的问题。

当开启一个 FTP链接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口链接服务器的21端口,但与主动方式的FTP不一样,
客户端不会提交PORT命令并容许服务器来回连它的数据端口,而是提交 PASV命令。这样作的结果是服务器会开启一个任意的非特权端口(P > 1024)
,并发送PORT P命令给客户端。而后客户端发起从本地端口N+1到服务器的端口P的链接用来传送数据。

对于服务器端的防火墙来讲,必须容许下面的通信才能支持被动方式的FTP:
1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的链接)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的链接)
3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据链接到服务器指定的任意端口)
4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

简明归纳:
PASV(被动)方式的链接过程是:客户端向服务器的FTP端口(默认是21)发送链接请求,服务器接受链接,创建一条命令链路。当须要传送数据时,
服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来链接我”。因而客户端向服务器的XXXX端口发送链接请求,创建一条数据
链路来传送数据。

开启被动模式
默认是开启的,可是要指定一个端口范围,打开vsftpd.conf文件,在后面加上
pasv_enable=yes
若设置为YES,则使用PASV工做模式;若设置为NO,则使用PORT模式。默认值为YES,即便用PASV工做模式。
pasv_min_port=30000
在PASV工做模式下,数据链接可使用的端口范围的最大端口,0 表示任意端口。默认值为0。
pasv_max_port=30999
在PASV工做模式下,数据链接可使用的端口范围的最小端口,0 表示任意端口。默认值为0。

表示端口范围为30000~30999,这个能够随意改。改完重启一下vsftpd
因为指定这段端口范围,iptables也要相应的开启这个范围,因此像上面那样打开iptables文件。
也是在21上下面另起一行,更那行差很少,只是把21 改成30000:30999,而后:wq保存,重启下iptables。这样就搞定了。

  (三)主动与被动FTP优缺点:windows

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。由于FTP服务器企图与客户端的高位随机端口创建链接,而这个端口颇有可能被客户端的
防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。由于客户端要与服务器端创建两个链接,其中一个连到一个高位随机端
口,而这 个端口颇有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员须要他们的服务器有最多的客户链接,那么必须得支持被动FTP。咱们能够经过为FTP服务器指定
一个有 限的端口范围来减少服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除全部针对服务器的
危险,但它大大减小了危险。

简而言之:
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起链接;被动模式是客户端向服务器端发起链接。二者的共同点是都使
用21端口进行用户验证及管理,差异在于传送数据的方式不一样,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机。

常见的FTP客户端软件的PASV方式的关闭方法
大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,
极少见到“PORT”或“主动模式”等字眼。由于FTP的登陆方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
(1)IE:工具 -> Internet选项 -> 高级 -> “使用被动FTP”(须要IE6.0以上才支持)。
(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左边选中站
点 -> Edit -> “Use PASV mode” 。
(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接链接 -> 编辑 -> “PASV模式”。
(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式” 或 站点管理 -> 对应站点 -> 选项 -> 
“使用被动模式”或快速链接 -> 切换 -> “使用被动模式”。

  

三、 登陆方式(三种登陆方式)

3.1 防火墙开启21端口

由于ftp默认的端口为21,而centos默认是没有开启的,因此要修改iptables文件centos

[root@bogon ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

在行上面有22 -j ACCEPT 下面另起一行输入跟那行差很少的,只是把22换成21,而后:wq保存。

还要运行下,重启iptables
[root@bogon ~]# service iptables restart

  

3.2 FTP匿名登陆

FTP的匿名登陆通常有三种:浏览器

一、 用户名:anonymous 密码:Email或者为空缓存

二、 用户名:FTP 密码:FTP或者为空安全

三、 用户名:USER 密码:pass

3.2.1 在IE浏览器或文件管理器中匿名访问

ftp默认开启的匿名用户登陆和主动模式,用IE访问须要把“使用被动FTP”选项去掉前面的勾,这样ftp都链接上去

Linux安装vsftpd及配置详解

在文件管理器输入框中输入ftp://域名或者ip,若是端口不是21的后面加端口。

3.3 匿名用户权限

3.3.1 vsftpd配置文件

默认配置

anonymous_enable=YES
#容许匿名用户和本地用户登录。

local_enable=YES
#匿名用户使用的登录名为ftp或anonymous,口令为空;匿名用户不能离开匿名用户家目录/var/ftp,且只能下载不能上传。

write_enable=YES
#本地用户的登陆名为本地用户名,口令为此本地用户的口令;本地用户能够在本身家目录中进行读写操做;本地用户能够离开自家目录切换至有权限
访问的其余目录,并在权限容许的状况下进行上传/下载。

#写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。

  

3.3.2 匿名用户(anonymous)设置

anonymous_enable=YES/NO(YES)
#控制是否容许匿名用户登入,YES 为容许匿名登入,NO 为不容许。默认值为YES。

write_enable=YES/NO(YES)
#是否容许登录用户有写权限。属于全局设置,默认值为YES。

no_anon_password=YES/NO(NO)
#如果启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。

ftp_username=ftp
#定义匿名登入的使用者名称。默认值为ftp。

anon_root=/var/ftp
#使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。

anon_upload_enable=YES/NO(NO)
#若是设为YES,则容许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。固然,匿名用户必需要有对上层目录的写入权。默认值为NO。

anon_world_readable_only=YES/NO(YES)
#若是设为YES,则容许匿名登入者下载可阅读的档案(能够下载到本机阅读,不能直接在FTP服务器中打开阅读)。默认值为YES。

anon_mkdir_write_enable=YES/NO(NO)
#若是设为YES,则容许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效。固然,匿名用户必需要有对上层目录的写入权。
默认值为NO。

anon_other_write_enable=YES/NO(NO)
#若是设为YES,则容许匿名登入者更多于上传或者创建目录以外的权限,譬如删除或者重命名。(若是anon_upload_enable=NO,则匿名用户不能
上传文件,但能够删除或者重命名已经存在的文件;若是anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但能够删除或者重
命名已经存在的文件夹。)默认值为NO。

chown_uploads=YES/NO(NO)
#设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO。

chown_username=username
#设置匿名用户上传文件(非目录)的属主名。建议不要设置为root。

anon_umask=077
#设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。

deny_email_enable=YES/NO(NO)
#如果启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。如果使用匿名登入,则会要求输入email address,
若输入的email address 在此档案内,则不容许进入。默认值为NO。

banned_email_file=/etc/vsftpd/banner_emails
#此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。如果使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不容许进入。

  

 

 

local_umask目录:
777-022=755
local_umask文件:
666-022=644

事例:
Linux下容许vsftp匿名用户上传和下载的配置

配置要注意三部分,请一一仔细对照
一、vsftpd.conf配置文件

# vi /etc/vsftpd/vsftpd.conf(vsftpd.conf文件的配置)
anonymous_enable=YES
#容许匿名用户登陆FTP

anon_root=/var/ftp/pub
#设置匿名用户的登陆目录(如须要,需本身添加并修改)

anon_upload_enable=YES
#打开匿名用户的上传权限

anon_mkdir_write_enable=YES
#打开匿名用户建立目录的权限

anon_other_write_enable=YES
#打开匿名用户删除和重命名的权限(如须要,需本身添加)

anon_umask=022
#匿名用户的掩码(如须要,需本身添加,含义:如umask是022,这时建立一个权限为666的文件,文件的实际权限为666-022=644)

  

二、ftp目录的权限设置(匿名用户)
默认状况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不容许设置为777权限,不然ftp将没法访问。可是咱们要匿名上传文件,须要“other”用户的写权限,正确的作法:
chmod o+w /var/ftp/pub/
Linux安装vsftpd及配置详解
上传的文件权限是600,属主和属组默认都是ftp

三、为了安全修改属主权限为匿名的ftp权限,不用默认的root权限

chown ftp /var/ftp/pub/ -R
Linux安装vsftpd及配置详解

*net use /d 清除ftp链接缓存**

 

3.4 本地用户登陆

anonymous_enable=no
#不容许匿名用户登入

local_enable=YES/NO(YES)
#控制是否容许本地用户登入,YES 为容许本地用户登入,NO为不容许。默认值为YES。

local_root=/home/username
#当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。

write_enable=YES/NO(YES)
#是否容许登录用户有写权限。属于全局设置,默认值为YES。

local_umask=022
#本地用户新增档案时的umask 值。默认值为077。

file_open_mode=0755
#本地用户上传档案后的档案权限,与chmod所使用的数值相同。默认值为0666。

chroot_local_user=YES
#用于指定用户列表文件中的用户不容许切换到上级目录。默认值为NO。

  

3.4.1 添加一个ftp用户

此用户就是用来登陆ftp服务器用的。
[root@bogon ~]# useradd ftpuser -s /sbin/nologin
这样一个用户建完,不能够用这个登陆,记得用普通登陆不要用匿名了。登陆后默认的路径为 /home/ftpuser.

3.4.2 给ftp用户添加密码

[root@bogon ~]# passwd ftpuser
输入两次密码后修改密码。

3.4.3 关闭匿名访问,设置相应权限

修改/etc/vsftpd/vsftpd.conf文件:

anonymous_enable=no local_enable=YES local_root=/home/ftpuser write_enable=YES local_umask=022 file_open_mode=0755 chroot_local_user=YES

3.4.4 重启ftp服务:

[root@bogon ~]# service vsftpd restart

3.4.5 访问

在windows资源管理器中链接ftp://ip
本地用户登陆(家目录/home/ftpuser),能够建立或删除目录、文件,目录权限是755,文件权限是644
Linux安装vsftpd及配置详解

修改路径为/opt/test下(local_root=/opt/test),为了安全,在/opt/test目录下建tt目录,并给tt目录属主和属组修改成ftpuser,这样才能够建立或删除目录,上传、删除文件
Linux安装vsftpd及配置详解

 

3.5虚拟用户登陆

pam_service_name=vsftpd
#虚拟用户使用PAM认证方式。 guest_enable= YES/NO(NO) #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。 guest_username=ftp #启用虚拟用户。默认值为NO。 virtual_use_local_privs=YES/NO(NO) #这里用来映射虚拟用户。默认值为ftp。 #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认状况下此参数 是关闭的(NO)。

3.5.1 建立文本格式的用户名、密码列表

首先须要创建一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。

例如:添加两个用户jene、john,密码分别为abc12三、abc456执行如下的操做:

[root@ling ~]# vi /etc/vsftpd/juser.txt jene abc123 john abc456

3.5.2 生成数据库:

db_load:安装 db4,db4-devel,db4-utils

# cd //etc/vsftpd #切换到/etc/vsftpd的目录下 # yum -y install db4* # db_load -T -t hash -f juser.txt juser.db #将刚建立的juser.list列表转换为juser.list.db file juser.db #查看转换后的文件类型

3.5.3 修改数据文件访问权限:

chmod 600 /etc/vsftpd/juser.db

3.5.4修改pam配置:

# vi /etc/pam.d/juser.pam //为虚拟用户建立PAM认证文件,文件名为juser.pam(见名之义) auth required pam_userdb.so db=/etc/vsftpd/juser account required pam_userdb.so db=/etc/vsftpd/juser 注意:db=/etc/vsftpd/vsftpd_login 后面的.db必须去掉 或  # vi /etc/pam.d/vsftpd 将里面其余的都注释掉,添加下面这两行: auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser

3.5.5 建立虚拟帐号对应的系统用户:

# useradd -d /var/ftptom -s /sbin/nologin tom #添加用户tom,指定到新建的家目录,将虚拟用户对应到这个系统帐号上,这个 帐号无需设置密码及登陆Shell  # chmod 755 /var/ftptom/ #调整权限以容许浏览目录

3.5.6 修改主配置文件

# vi /etc/vsftpd/vsftpd.conf anonymous_enable=no //禁用匿名用户登陆 (anon_upload_enable=YES anon_mkdir_write_enable=YES anon_umask=022 //指定上传权限掩码) local_enable=YES //需映射本地用户,因此启用些项 write_enable=YES //启用上传写入支持 chroot_local_user=YES //(自建配置)将全部本地用户限制在家目录中 guest_enable=YES //启用映射功能 guest_username=tom //指定映射的系统用户名称 pam_service_name=juser.pam //指定新的PAM认证文件 user_config_dir=/opt/vsftpd/juser_dir //(自建配置)设置虚拟账号的主目录为/juser_dir max_clients=300 //(自建配置)设置FTP服务器最大接入客户端数为300个 max_per_ip=10 //(自建配置)设置每一个IP地址最大链接数为10个 listen=YES port_enable=NO //(自建配置)取消PORT模式进行数据传输 connect_from_port_20=NO //(修改配置)PORT模式进行数据传输部使用20端口 ftp_data_port=20 pasv_enable=YES //(自建配置)容许PASV模式进行数据传输 pasv_min_port=65341 //(自建配置)PASV模式下数据传输所使用port范围下界 pasv_max_port=65351 //(自建配置)PASV模式下数据传输所使用port范围上界

3.5.7 创建虚拟帐户的配置文件:

如上面的在没有给予虚拟用户上传、建目录等权限的设置,能够用下面的方法给虚拟用户创建独立的配置文件。

在user_config_dir指定路径下,创建与虚拟账号同名的配置文件并添加相应的配置字段

# mkdir /opt/vsftpd/juser_dir cd /opt/vsftpd/juser_dir //切换到这个新建的配置文件夹下 touch jene 建立jene配置文件 touch john 建立john配置文件 #vi jene //为用户jene创建独立的配置文件,容许他能够上传和建立目录 anon_upload_enable=YES anon_mkdir_write_enable=YES #touch john //为其它用户(john)建立空的配置文件,也就是他们没有上传和建立目录的权限 [root@ling juser_dir]# service vsftpd reload //重载vsftpd服务器

登陆ftp服务器
Linux安装vsftpd及配置详解
已经登陆tom的家目录下了
Linux安装vsftpd及配置详解
以上的虚拟用户jene和john共用映射的tom家目录的

3.5.8 若用本身各自的目录

vi vsftpd.conf

anonymous_enable=NO(修改配置)禁用匿名用户登陆

write_enable=YES (默认开启)容许使用任何能够修改文件系统的FTP的指令

local_enable=YES(默认开启)启用本地用户登陆设置

chroot_local_user=YES (自建配置)将全部本地用户限制在家目录中

pam_service_name=juser.pam(默认开启)配置vsftpd使用的PAM模块为vsftpd

user_config_dir=/opt/vsftpd/juser_dir (自建配置)设置虚拟账号的主目录为/vsftpd_login
# mkdir /opt/vsftpd/juser_dir //建虚拟帐号主目录  # cd /opt/vsftpd/juser_dir //切换到这个新建的配置文件夹下  # touch jene 建立jene配置文件  # touch john 建立john配置文件

为各虚拟用户创建独立的配置文件

# vi jene anon_world_readable_only=YES 只读,不能下载 anon_world_readable_only=no 表示用户能够浏览FTP目录和下载文件 guest_enable=yes 开启虚拟账号登陆 guest_username=ftp_jene 设置虚拟用户jene对应的系统账号为ftp_jene local_root=/opt/jene 用户登入时,所在目录 anon_world_readable_only=no 不容许匿名用户浏览器整个服务器的文件系统 anon_max_rate=50000 限定传输速率为50KB/s
# vi john guest_enable=yes 开启虚拟账号登陆 guest_username=ftp_ john 设置虚拟用户john对应的系统账号为ftp_john local_root=/opt/john 用户登入时,所在目录 anon_other_write_enable=YES 容许匿名帐号具备删除、更名权限 anon_mkdir_write_enable=yes 容许建立文件夹,不能删除目录 anon_upload_enable=yes 开启匿名账号的上传功能 anon_world_readable_only=no 不容许匿名用户浏览整个服务器的文件系统 anon_max_rate=100000 限定传输速度为100KB/s

重启vsftpd服务
#service vsftpd restart

linux文件权限分红“属主”、“属组”和“其余人”这三种,若是“其余人”没有可读权限,那anon_world_readable_only这个参数就起效了,对于目录来讲,若是“其余人”没有可读权限,且anon_world_readable_only=YES,则匿名用户没法浏览该目录下的全部内容(看上去像个空目录),而对于文件来讲,若是“其余人”没有可读权限,且anon_world_readable_only=YES,则匿名用户没法下载该文件。

四、修改selinux

外网是能够访问上去了,但是发现无法返回目录(使用ftp的主动模式,被动模式仍是没法访问),也上传不了,由于selinux做怪了。
修改selinux:
执行如下命令查看状态:

[root@bogon ~]# getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off [root@bogon ~]# 

执行上面命令,再返回的结果看到两行都是off,表明,没有开启外网的访问

[root@bogon ~]# setsebool -P allow_ftpd_full_access on [root@bogon ~]# setsebool -P ftp_home_dir on

这样应该没问题了(若是,仍是不行,看看是否是用了ftp客户端工具用了passive模式访问了,如提示Entering Passive mode,就表明是passive模式,默认是不行的,由于ftp passive模式被iptables挡住了,下面会讲怎么开启,若是懒得开的话,就看看你客户端ftp是否有port模式的选项,或者把passive模式的选项去掉。若是客户端仍是不行,看看客户端上的主机的电脑是否开了防火墙,关吧)

FileZilla的主动、被动模式修改:
菜单:编辑→设置
Linux安装vsftpd及配置详解

五、设置开机启动vsftpd ftp服务

[root@bogon ~]# chkconfig vsftpd on

六、修改FTP默认端口

6.1登陆服务器,打开vsftp.conf文件

# vim /etc/vsftpd/vsftpd.conf 在文件末尾增长listen_port=2121 pasv_enable=yes pasv_min_port=30000 pasv_max_port=30999 listen_port=2121

6.2打开/etc/services文件

[plain] view plain copy
 # vim /etc/services 找到ftp选项并将21修改为你设置的端口,本文为2121 # 21 is registered to ftp, but also used by fsp ftp 2121/tcp ftp 2121/udp fsp fspd 

6.3 重启vsftp服务

# /etc/init.d/vsftpd restart 使用netstat -utlpn | grep vsftp命令查看设置的端口,确认是否成功 # netstat -utlpn | grep vsftp tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN 33004/vsftpd tcp 0 0 192.168.11.6:30954 0.0.0.0:* LISTEN 33006/vsftpd

6.4 防火墙加上容许策略:

# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2121 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2120 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:30999 -j ACCEPT

在主动模式中,FTP的两个端口是相对固定的,若是命令端口是x的话,那数据端口就是x-1,也就是说默认状况下,命令端口是21,数据端口就是20;你把命令端口改为了2121,那么数据端口就是2120。这样使用防火墙就很方便了,只要开通这两个端口就能够了,可是若是客户端是共享上网的话那岂不是不能正常使用FTP了,这样仍是不行,必定须要被动模式。

被动模式中就麻烦了些,命令端口修改成2121,那么数据端口就是2120,可是数据端口是随机的,因此须要在设备里设置一下被动端口范围6000到7000(pasv_min_port=6000 pasv_max_port=7000)

防火墙里容许修改过端口号及随机端口号范围

七、rhel7中修改防火墙:

一、防火墙添加端口
# firewall-cmd --zone=public --permanent --add-port=80/tcp # firewall-cmd --reload  # firewall-cmd --zone=public --permanent --add-port=31000-31999/tcp # firewall-cmd --reload 二、防火墙删除端口 # firewall-cmd --zone=public --permanent --remove-port=80/tcp # firewall-cmd --reload 三、查看防火墙配置 # cat /etc/firewalld/zones/public.xml