一、ftp的port和pasv模式的工作方式

FTP使用2个TCP端口,首先是建立一个命令端口(控制端口),然后再产生一个数据端口。国内很多教科书都讲ftp使用21命令端口和20数据端口,这个应该是教书更新太慢的原因吧。实际上FTP分为主动模式和被动模式两种,ftp工作在主动模式使用tcp 21和20两个端口,而工作在被动模式会工作在大于1024随机端口。FTP最权威的参考见RFC 959,有兴趣的朋友可以仔细阅读的文档了解FTP详细工作模式和命令。目前主流的FTP Server服务器模式都是同时支持port和pasv两种方式,但是为了方便管理安全管理防火墙和设置ACL了解FTP Server的port和pasv模式是很有必要的。

1.1 ftp port模式(主动模式)

主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口)。紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。最后服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了。ftp port模式工作流程如下图所示:

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1、客户端口>1024端口到FTP服务器的21端口 (入:客户端初始化的连接 S<-C)

2、FTP服务器的21端口到客户端>1024的端口(出:服务器响应客户端的控制端口 S->C)

3、FTP服务器的20端口到客户端>1024的端口(出:服务器端初始化数据连接到客户端的数据端口 S->C)

4、客户端>1024端口到FTP服务器的20端口(入:客户端发送ACK响应到服务器的数据端口 S<-C)

如果服务器的ip为192.168.10.1在H3C 8500的GigabitEthernet 2/1/10 上创建in acl策略允许ftp 主动模式其他禁止:

rule permit tcp source 192.168.10.1 0 source-port eq 21 destination-port gt 1024

rule permit tcp source 192.168.10.1 0 source-port eq 20 destination-port gt 1024

rele deny ip

1.2 ftp pasv模式(被动模式)

在被动方式FTP中,命令连接和数据连接都由客户端。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。ftp pasv模式工作流程如下图所示:

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1、客户端>1024端口到服务器的21端口 (入:客户端初始化的连接 S<-C)

2、服务器的21端口到客户端>1024的端口 (出:服务器响应到客户端的控制端口的连接 S->C)

3、客户端>1024端口到服务器的大于1024端口 (入:客户端初始化数据连接到服务器指定的任意端口 S<-C)

4、服务器的大于1024端口到远程的大于1024的端口(出:服务器发送ACK响应和数据到客户端的数据端口 S->C)

如果服务器的ip为192.168.10.1在H3C 8500的GigabitEthernet 2/1/10 上创建in acl策略允许ftp 主动模式其他禁止:

rule permit tcp source 192.168.10.1 0 source-port eq 21 destination-port gt 1024

rule permit tcp source 192.168.10.1 0 source-port gt 1024 destination-port gt 1024

rele deny ip

二、ftp的port和pasv模式的工作方式

ftp的port和pasv模式最主要区别就是数据端口连接方式不同,ftp port模式只要开启服务器的21和20端口,而ftp pasv需要开启服务器大于1024所有tcp端口和21端口。重网络安全的角度来看的话似乎ftp port模式更安全,而ftp pasv更不安全,那么为什么RFC要在ftp port基础再制定一个ftp pasv模式呢?其实RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的,因为ftp port使用固定20端口进行传输数据,那么作为***很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式传输数据很容易被***窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。

如果作为一个有经验的网络管理员就会发现使用ftp pasv方式会给网络安全很大隐患,那就是ftp pasv需要开启服务器tcp大于1024所有端口,这样对服务器的安全保护是非常不利的。在此我建议两种方法来完善FTP Pasv模式的端口开放问题,第一种就是使用弱洞扫描工具比如Xscan找出服务器开放的端口然后使用acl把端口deny掉,另外一种方法就是使用具有状态检测防火墙开启ftp pasv的端口。

在ftp pasv模式下是使用状态检测防火墙比acl最大的好处就是使用状态检测防火墙只要开启ftp 21端口就可以了,状态检测防火墙会检测客户端口连接ftp server的21命令端口,一但检测客户端使用ftp 21命令端口然后就会允许这个Session使用ftp服务器大于1024端口,而其他方式是无法直接访问ftp服务器大于1024端口。通过状态检测防火墙就可以保证ftp 服务器大于1024端口只对FTP Session开放了。目前像IPTable、ISA Server 2000/2004/2006、以及主流硬件防火墙都可以支持状态检测。

我们经常会在DOS命令模式下使用FTP的一些命令,不过,在进行Upload/Download时,经常会碰到一个命令的反馈:

use PORT or PASV first.

请问如何操作呢?

按常里,我们会根据提示,输入PASV或者PORT指令.其实这样输入是无法进行的.

使用的方法如下:

如果需要切换到PORT模式:quote PORT;

同样,如果需要PASV模式:quote PASV即可.

三、FTP模式与数据端口

  FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过 此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp- data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。 PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数 据传输端口更为方便一些。

  port_enable=YES|NO

  如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。

  connetc_from_port_20=YES|NO

  控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的vsftpd.conf文件中此参数设为YES。

  ftp_data_port=port number

  设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。

  port_promiscuous=YES|NO

  默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。

pasv_enable=YES|NO

  YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。

   pasv_min_port=port number

  pasv_max_port=port number

  设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。

  pasv_promiscuous=YES|NO

  此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。

  pasv_address=

  此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。

所以如果linux打开了防火场,必须开通对应的端口 例如:

-A RH-Firewall-1-INPUT -m state –state NEW -p tcp -m tcp –dport 30000:31000 –syn -j ACCEPT

四、防火墙配置

#!/bin/bash

#ip.sh

echo “1″ >/proc/sys/net/ipv4/ip_forward

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

iptables -F

iptables -X

iptables -Z

iptables -t nat -F

iptables -t nat -X

iptables -t nat -Z

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

iptables -t filter -A FORWARD -p tcp -s 172.16.0.0/16 -d 192.168.0.10 –dport 21 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -s 192.168.0.10 –sport 21 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -s 172.16.0.0/16 -d 192.168.0.10 –dport 30000:310000 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -s 192.168.0.10 –sport 3000:4000 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -m state –state RELATED,ESTABLISHED -j ACCEPT

iptables -t filter -A FORWARD -p icmp –icmp-type 8 -j ACCEPT

iptables -t filter -A FORWARD -p icmp –icmp-type 0 -j ACCEPT

五、验证:

# 在xp下用ftp命令连接,都是采用主动模式连接,可以采用图形界面的软件,默认一般为被动模式。

# netstat -an|grep 172

一,VsFTPd的简述:

VSFTP(Very Secure FTP Daemon,非常安全的FTP服务器)。顾名思义,VSFTPD设计的出发点就是安全性。同时随着版本的不断升级,VSFTPD在性能和稳定性上也取得 了极大的进展。除了安全和性能方面很优秀的外,还有很好的易用性。Red Hat公司在自己的FTP服务器(ftp.redhat.com)上就使用了vsFTPd

二,企业Linux下vsFTPD实战方案

要求:

1.        用户:netseek_com;FTP:ftp.netseek.com(192.168.0.21,我已经配置好了相关的DNS)

2.        禁止匿名登陆,禁止用户离开用户目录

3.        命令通道端口使用5021,数据通道端口使用5020(你可以改成你想设置的端口如1021,1020)

4.        允许使用被动模式使用端口范围为10010~10020.

5.        用户带宽设置为200kps;用户空间大小限制为300M,允许宽限期限内有10MB的缓冲

具体操作步骤如下:

为了更完全的描述安装全过程,我在我的另一台主机(netseek)上进行配置,在台机IP:192.168.0.20上绑定了192.168.0.21,也配置好了相关的DNS解析,在这里我就不多说了请参照”Linux全能web服务器架设”。

1.        配置相关服务

启动服务:

[root@netseek root]# #rpm –qa | grep vsftpd   ;查看是否安装vsftpd服务

#/etc/init.d/vsftpd start             ;启动服务

#chkconfig vsftpd on              ;让系统服务随着系统启动而启动

配置相关文档:

#vi /etc/vsftpd/vsftpd.conf

禁止匿名用户访问:

anonymous_enable=YES,将YES改为NO

在文件末尾加如下的设置:

# new added by netseek

listen_port=5021                         ;命令通道端口,默认为21

listen_data_port=5020                     ;数据通道端口,默认为20

pasv_enable=YES                        ;允许被动模式

pasv_min_port=10000                     ;被动模式使用端口范围

pasv_max_port=10010

local_max_rate=200000                    ;用户宽带限制

chroot_local_user=YES                    ;禁用户离开主目录

listen_address=192.168.0.21                ;让他监听ip:192.168.0.21

注:在添加过程中请不要加上”;”和这些中文注释,在这里我上为了方便大家了解才加上的。

2.        添加虚拟主机用户

添加用户netseek_com,用户目录指定为/var/www/netseek.com,且此用户不能登陆系统.

#mkdir /var/www/netseek.com

#useradd –s /sbin/nologin –d /var/www/netseek.com netseek_com

注-s /sbin/nologin是让其不能登陆系统,-d 是指定用户目录为/var/www/netseek.com

#passwd netseek_com           (Do not Hack me 3ks) DnHm3ks 这是我设置的密码

#chown –R netseek_com:netseek_com /var/www/netseek.com

注:将用户目录及其子目录的所有和所属的组设置为netseek_com

3.        配置磁盘配额

我在安装过程中磁盘了多个区,分别/home,/var,/,/www,tmp,swap,/boot多个分区。建议你将磁盘分多个独单的分区,这样可以降低磁盘分区损坏造成的数据丢失风险.

#[root@netseek root]# rpm -qa | grep quota

quota-3.06-9                ; 我的系统已经安装了磁盘配额工具

#vi /etc/fstab

找到类似

LABEL=/var              /var                    ext3    defaults        1 2

在defaults后加入usrquota,改为如下:

LABEL=/var              /var                    ext3    defaults,usrquota        1 2

重新加载/var这个分区:

#mount –o remount /var

#cd /var  进入这个目录

#touch quota.user

#chmod 600 quota.user

#quotacheck –mf /var     对磁盘分区空间使用情况进行强制检测

[root@localhost var]# quotacheck -mf /var

quotacheck: WARNING – Quotafile /var/quota.user was probably truncated. Can’t save quota  settings…

重新启动系统

第一次运行时都会出现这个警告,再次运行的时候就不会啦

为指定用户定额:

#edquota netseek_com    为用户netseek_com设置磁盘配额。

Disk quotas for user netseek_com (uid 501):

Filesystem                   blocks       soft       hard     inodes     soft     hard

/dev/sda5                      6616     307200         0         15        0        0

注:

ilesystem blocks soft hard inodes soft hard

filesystem-正在设置的文件系统,不要修改或删除

bolock-当前使用的碰盘空间,单位为KB

soft(第一个)-软磁盘空间限制,默认0,表示无限制,我在这里设为300M。

hard(第一个)-硬配额限制,0表示无限制。

inodes-当前文件数量

soft(第二个)-对文件数量的软限制,0表示无限制

hard(第二个)-对文件数量的硬限制,0表示无限制

让系统启动是自动加载:

#vi /etc/rc.d/rc.local ,加入以下:

/etc/init.d/vsftpd start

/sbin/quotacheck

/sbin/quotaon –avu

现在查看netseek_com 用户使用磁盘空间的情况

[root@localhost ~]# quota -u netseek_com

Disk quotas for user netseek_com (uid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sda5    6616  307200       0              15       0       0

三,        VsFTPd相关的配置详解

1.匿名用户相关设置

anonymous_enable=YES              ,将YES改为NO, 禁止匿名用户登陆

#non_mkdir_write_enable=YES        ,将#注释去掉,允许匿名用户创建目录

#non_upload_enalbe=YES             ,将#去掉,允许匿名用户上传

anon_world_readable_only=YES       ,允许匿名用户下载,默认是禁止的,这个可以自行添加。

Anon_other_write_enable=YES        ,将其设为YES的话,就除了上传和创建目录外,还可以重命名,删除文件,默认是NO

no_anon_password=NO               ,将其设为YES,匿名用户不会查询用户密码直接登陆。

ftp_username=ftp                    ,匿名用户登陆系统的账号默认为ftp,此项最好不要改,否则设置不当会给系统的安全带来威胁。

2.FTP服务端口的指定

listen_port=8021                     ,指定命令通道为8021,默认为21

listen_data_port=8020                ,指定数据通道为8020,默认为20

3.上传模式的设置

pasv_enable=YES                    ,是否允使用被动模式,默认是允许的。

pasv_min_port=10000                 ,指定使用被动模式时打开端口的最小值

pasv_max_port=10004                ,指定使用被动模式时打开端口的最大值。

4.Vsftp服务器指定IP地址

listen_address=192.168.0.21           ,指定FTP,IP地址

注:只有当vsftp运行于独立模式时才允许使用指定IP,如果在/etc/xinetd.d目录下已经建立了vsfpd文件,就要将该文件中的disable设置为yes,方可。

5. 锁定用户,禁止用户离开用户主目录

chroot_local_user=YES               ,将其设为YES,就锁定在用户主目录,设为NO,可以切换

将指定用户设置为锁定用户主目录:

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd.chroot_list

将其改为如下:

chroot_list_enable=NO

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

将上面保存,再做如下操作:

#touch /etc/vsftpd/vsftpd.chroot_list

#vi /etc/vsftpd/vsftpd.chroot_list   ,在该文件中加入用户名单,如:

netseek_com

6.FTP服务器的流量控制

max_clients=100             ;允许的最大连接数,定义为100,默认为0,表没有限制

max_per_ip=5               ;每个IP允许的连接数,0表没有限制,需要运行于独立模式方可

anon_max_rate=50000        ;匿名用户最大带宽,单位为bps

local_max_rate=200000       ;系统用户最大带宽

如何对指定用户进行流量限制呢?

#vi /etc/vsftpd/vsftpd.conf,添加一行:

user_config_dir=/etc/vsftpd/userconf

#touch /etc/vsftpd/userconf/netseek_com  为netseek_com这个用户建立一个netseek_com文件

#vi /etc/vsftpd/userconf/netseek_com  添加以下内容

local_max_rate=100000

保存重启服务即可.

7.定制欢迎信息

目录说明设置

#vi /etc/vsftpd/vsftpd.conf

#dirmessage_enable=YES,前的#去掉。

然后我们定制一个.message,写上你想写的东西,然后把这个文件复制到各个用户的家目录中,就OK。

系统欢迎消息设置

ftpd_banner=Welcome to ftp.netseek.com , Yeah!!!

系统欢迎消息文件设置

banner_file=/etc/vsftpd/welcome   与ftpd_banner相类似,不同之处在于,banner_file指定欢迎文件.

转载于:https://blog.51cto.com/3635076/1544604

Vsftp的PASV模式和Port模式及VsFTP配置方案相关推荐

  1. phpstorm ftp连不上 flashfxp 显示 PORT 模式连接成功

    flashfxp 能连接上ftp服务器,但phpstorm 连接不上,flashfxp 显示PORT 模式连接成功 1.其它的正常配置好,点击Advanced 取消passive mode

  2. passive模式 tcp_FTP Port(Active)模式和Passive模式详解

    ftp 的端口号 20 . 21 有何区别 ? 一个是数据端口,一个是控制端口,控制端口一般为 21 ,而 数据端口不一定是 20 ,这和 FTP 的应用模式有关,如果 是主动模式,应该为 20 ,如 ...

  3. LINUX---FTP两种工作模式:主动模式和被动模式

    一.FTP的PORT(主动模式)和PASV(被动模式) (1)PORT(主动模式) PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要 ...

  4. vsftp 在pasv下的防火墙配置

    什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Po ...

  5. 操作系统引导--从实模式到保护模式

    从开始到保护--系统开机引导 ------没有一个文档能写的通俗易懂,我希望写出来. 开机引导和实模式: 两个星期加上假期吐血整理,所述为计算机的开机引导,其中包括一系列计算机内存设置等等,由于没有老 ...

  6. 【网摘】Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明

    一.  官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...

  7. [ESP8266]--开启服务器模式和客户端模式

    [ESP8266]--开启服务器模式和客户端模式 版权声明:本文为博主原创文章,欢迎转载,转载请注明出处. https://blog.csdn.net/wangyijieonline/article/ ...

  8. redis服务之主从复制、哨兵模式、群集模式

    目录 1 Redis主从复制 1.1 Redis主从复制的概念 1.2 Redis主从复制的作用 1.3 Redis主从复制的流程 1.4 Redis主从复制的搭建 安装Redis(所有主机) 修改M ...

  9. OpenWrt的两种模式:桥接模式与路由模式

    OpenWrt的两种模式:桥接模式与路由模式 1.桥接模式(Bridged AP Mode ): 通过OpenWrt 设备做桥,连接到OpenWrt的无线设备是由此网段192.168.1.0网段中的路 ...

  10. java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part7(Redis常见使用(部署)方式:单机模式、主从模式、哨兵模式、集群模式)~整起

    Redis持久化:RDB.AOF是针对存储在一台服务器上的数据由于存储过程被打断而发生丢失的情况的.此时,咱们肯定要考虑到,所有鸡蛋都放在一个篮子里是会出问题的. 如果服务器发生了宕机,由于数据恢复是 ...

最新文章

  1. STM32F103--(二) GPIO实践
  2. Learning to rank在淘宝的应用
  3. 解决北京户口,中科院计算所校招,CV/图像处理工程师,博士优先
  4. Robust line matching through line–point invariants
  5. 【专题】CSDN下载频道4月热门资源top100汇总
  6. 12306网上买火车票选择上中下铺的方法
  7. android:viewpager+photoview实现图片查看器
  8. Linux:Ubuntu系统解决不能上网问题
  9. Samba安装,你可能没有权限使用网络资源。请与这台服务器的管理员联系。。。。。。
  10. 洛谷 P2119 魔法阵
  11. 2021年起重机械指挥考试报名及起重机械指挥考试技巧
  12. mysql 改成 localhos_MySQL添加用户、删除用户与授权
  13. 亚马逊热销爆款产品货源有哪些?亚马逊无货源怎么做?
  14. Ebean报错java.lang.ClassCastException: com.project.model.xxx cannot be cast to com.project.model.xxx
  15. ubuntu中显示实时网速的方法
  16. ICNS格式文件用途及分析
  17. GitHub 狂飙 30K+star 面试现场, 专为程序员面试打造, 现已开源可下载
  18. 能自由转换格式的PDF软件
  19. C++续行符(反斜杠符号)
  20. php编写一个简单计算器程序,PHP做一个简单的计算器

热门文章

  1. 在windows下把txt文件改为utf8格式
  2. 推荐一款Silverlight数据列表控件----AgDataGrid
  3. Python学习教程:爬虫分析了京东内衣销售记录,哪个size最多?
  4. 23andme、gsa、wegene各染色体位点统计
  5. mysql常用sql命令
  6. nginx服务器设置url的优雅链接
  7. [导入]如何在标题栏上增加按钮
  8. JMJS系统总结系列----XSLT的语句规则(一)
  9. Kebernetes 学习总结(8) statefulset
  10. 1个开发如何撑起一个过亿用户的小程序