vsftpd 配置(中)

article/2025/6/24 20:39:51
原贴:http://www.ititgo.cn/news_view.asp?newsid=575

vsftpd 配置(中)


录入员:admin 来源: 加入时间:2007-6-4 11:30:32 点击:274

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
4. IP监听与连接控制
     vsftpd工作在独立模式(standalone)下的启动参数有两项:
     listen=yes/no
     listen_ipv6=yes/no
     其中第一条已经前面已经提过了,第二条应用在ipv6网络环境中,这两相参数只能有一条值为yes
     在实际的网络环境中,服务器通常都有多个IP地址,而每个IP地址连接不同的网段,我们可能并不希望在所有网段的上的计算机都能访问服务器。而默认情况下,vsftpd将在所有的IP地址上监听,因此,我们需要下面两行:
     listen_address=监听 ip
     listen_address6=监听 ip
     这两行分别是针对IPv4IPv6环境的。

     下面的两项是vsftpd并发连接控制:
     max_clients=数字
     max_per_ip=数字
     参数max_clients设置了服务器可以接受的最大并发连接数量,max_per_ip设置了每个客户端IP可以发起的最大连接数。针对服务器性能适当设置这两个参数,可以在服务器可接受的连接数量和连接速度之间找到平衡点。这两项默认值均为0,表示无限制。

     accept_timeout=数字
     connect_timeout=数字
     data_connection_timeout=数字
     idle_session_timeout=数字
     上面的数字都是以秒为单位的。其中 access_timeout 代表以 pasv数据连接模式的时候,数据连接的超时;connect_timeout 表示以 port模式连接数据连接时的超时时间;关于ftp服务连接模式下面会有详细介绍。data_connection_timeout 表示数据连接后数据连接等待的空闲时间超时,超过时间后,数据连接将断开连接;idle_session_timeout 设置发呆时间,也就是客户端隔多长时间不与服务器有交互 ftp 命令,将自动断开 ftp 服务连接。

5. 关于连接端口设置
     我们知道 ftp 服务有一点是不同于其他的服务的是,ftp 服务使用的是 tcp 双连接通道,也就是ftp-server ftp-data 连接。我们可以这么理解:ftp-server 连接接受客户端连接请求、并发控制、身份和权限认证以及传输客户端下达的命令。ftp-data连接负责传输数据,也就是说当有数据传输的时候才会有这条连接。我们先来看一下 ftp-server 的设置:
     listen_port=端口号
     那么这条设置可以设置 ftp-server 端口号,默认为21,如果我们指定了其它端口号,那么客户端连接服务器上时就得使用指定端口号了。我们将这一行加入主配置文件中:
     listen_port=2121
     # ftp 127.0.0.1
     ftp: connect: Connection refused
     ftp> open 127.0.0.1 2121
     Connected to 127.0.0.1.
     220 (vsFTPd 2.0.5)
     530 Please login with USER and PASS.
     ……
     已经看到效果了,接下来我们讨论ftp-data连接的问题。
     FTP数据传输有两种模式:FTP Port模式和FTP Passive模式,两种工作方式截然不同。
     FTP Port模式
     FTP Port模式下,客户端与服务器建立ftp-server连接之后,如果某条指令涉及到数据传送,就需要建立ftp-data连接。其实连接步骤如下:
     (1) 客户端启用另一个高于1024的空闲端口xx做连接准备,并且使用port命令利用ftp-server信道向服务器发送一个数据包,数据包里包含客户端的IP地址和xx端口,告诉服务器客户端xx端口已做好连接准备。Port命令还支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接。
     (2) 服务器以ftp-data端口(默认为20)主动向客户端xx端口进行连接。
     (3) 客户端响应服务器连接,并继续完成三次握手后,ftp-data连接建立,开始传送数据。当数据传输完毕后,服务器ftp-data端口就处于等待关闭状态。
     我们看到,Port模式下ftp-data连接请求是由服务器发起的。现在来看一下vsftpd中关于Port模式的语句设置:
     port_enable=yes/no                               //是否启用 port 模式
     connect_from_port_20=yes/no                    //port 模式下是否默认使用固定的 20 端口
     ftp_data_port=port_number                        //指定 port 模式的端口号
     port_promiscuous=yes/no                 //是否使用安全的 port 模式
     port_enable 设置为 yes,就采用 port 模式。在 port 模式下端口如果采用固定的20 端口,就把connect_from_port_20选项就设为yes,这是很多服务器默认的设置规则。我们也可以指定其他的端口,那么这也就由ftp_data_port 来指定固定端口。port_promiscuous 默认值为no,表示ftp-data连接之前检验一下数据连接的目标ip 的是否是真正客户端的IP,反之则不检查。除非你确保服务器是与真正的客户端进行连接,否则不要将此参数值改为yes
     我们将下面两行加入配置文件中:
     port_enable=yes
     connect_from_port_20=no
     登录服务器运行3ls(显示文件列表)命令,再在服务器端运行netstat命令查看效果:
     # ftp 127.0.0.1
     Connected to 127.0.0.1.
     ……
     230 Login successful.
     Remote system type is UNIX.
     Using binary mode to transfer files.
     ftp> passive
     Passive mode off.
     ftp> ls
     ……
     226 Directory send OK.
     ftp> ls
     ……
     ftp> ls
     ……
     ftp> bye
     # netstat -an|more
     ……
     tcp 0 0 127.0.0.1:1069 127.0.0.1:1068 TIME_WAIT
     tcp 0 0 127.0.0.1:21   127.0.0.1:1065 TIME_WAIT
     tcp 0 0 127.0.0.1:1071 127.0.0.1:1070 TIME_WAIT
     tcp 0 0 127.0.0.1:1067 127.0.0.1:1066 TIME_WAIT
     ……
     我们看到服务器开了3个大于1024的端口去连接客户端,这3个连接就是3ls命令产生的。如果我们把connect_from_port_20参数的值改为yes,再做上述实验,就会发现服务器3次连接都固定打开20端口。如果我们再加上ftp_data_port=2020语句,再做上述实验,服务器就会固定开启2020端口。



    大家来看这张图,局域网客户机使用私有IP地址,并采用出口路由器做的 NAT(网络地址转换)连到 internetftp 服务器采用的是port模式。当客户端使用port命令向服务器发出包含自身IP地址和端口的包,此包通过路由器时路由器必须检查其内容,把包中的IP地址和端口翻译成分配给客户的地址和端口,而这个操作要求路由器必须工作在应用层!我们不可能要求每个客户的路由器都有此功能,但如果路由器没有正常完成这步工作,ftp数据传输就失败了。
     另外,由于第三方third-party模式的支持,黑客还可能在PORT命令中设置IP地址和端口号参数来指定一台其它主机的地址和端口号来发动攻击(称为FTP反弹攻击)。虽然有的防火墙设备已经修正了该问题,但对于大多数防火墙和路由器来说这个问题还是一个非常严重的。

     FTP Passive模式
     下面描述了Passive模式的ftp-data连接建立的步骤:
     (1) 当用户请求数据传输的时候,客户端软件发送PASV命令给服务器端表明客户端希望进入Passive模式;
     (2) 服务器端进行应答,应答数据包内有服务器的IP地址和一个临时端口,这个临时的端口是客户端在打开数据传输连接时应该使用的端口;
     (3) 客户端服务器发出连接请求,源端口为客户端自己选择的一个临时端口,目的端口为服务器在PASV应答命令中指定的临时端口号;
     (4) 服务器响应客户端请求,并继续完成TCP三次握手之后,ftp-data连接建立,开始传送数据。
     接下来我们来看看vsftpd中关于Passive模式中设置语句:
     pasv_enable=yes/no
     pasv_min_port=yes/no
     pasv_max_port=yes/no
     pasv_promiscuous=yes/no
     pasv_address=ip_address
     第一行设置是否启用 pasv 模式。pasv_min_port pasv_max_port 是设置在 pasv 模式下开启的端口范围。一般情况下,如果设置成 pasv 模式,我们最好指定端口范围,便于防火墙设置开启这个范围的端口以接受客户端的连接请求。pasv_promiscuousport_promiscuous参数一样是设置在pasv下是否设置安全的传输,我们也要将其值设为no(默认值即为no)。pasv_address 后接一个有效的ip地址,来指定pasv打开端口的ip地址。但是默认情况下这行是取消的,因为服务会在 tcp 连接的套接字中知道连接的ip地址。我们把主配置文件改成这样然后看一下设置效果:
     listen=yes
     anonymous_enable=yes
     pasv_enable=yes
     pasv_min_port=3000
     pasv_max_port=3003

     登录服务器运行3ls命令,再在服务器端运行netstat命令查看效果:
     # netstat -an
     ……
     
tcp 0 0 192.168.0.105:3000 192.168.0.122:11066 TIME_WAIT
     tcp 0 0 192.168.0.105:3002 192.168.0.122:11065 TIME_WAIT
     tcp 0 0 192.168.0.105:3001 192.168.0.122:11063 TIME_WAIT

     我们看到,每次ls命令产生了一个连接,服务器开的端口是30003003之间。在 vsftpd2.0.3 以后的版本中, pasv 端口允许我们重复开启,在之前的版本里是不允许的,也就是说同一个端口可以同时与客户端建立多条连接,大家可以自己试验一下。
     大多数人认为在防火墙网络环境中Passive模式比Port模式的问题少,但我们注意到在Passive模式下,客户端向服务器端一个临时的目的端口发起连接,一些防火墙或者设备的访问控制列表(ACL)可能会阻止这种连接;同样服务器的回应也是从一个临时的端口到另一个临时的端口,防火墙或者访问列表也会阻止这种连接。在许多路由器和防火墙上(包括iptables)允许你使用访问列表关键字"established"来避免第二个问题,"established"关键字告诉路由器允许带ACK标志的包通过。而对于第一个问题,我们虽然使用pasv_min_portpasv_max_port语句来限制服务器开设临时端口的范围,从而在防火墙上打开这些端口,但这样做还是存在一定的安全漏洞。好在多数状态检测防火墙例如Linux netfileters支持ftp协议的深层状态检测,进行准确的PASV动态端口过滤。

     五、vsftpd高级操作
     这一节我们介绍一下vsftpd的其它一些知识,其中包括:双模式切换、基于ip的虚拟ftp 站点、基于数据库虚拟用户建立及管理、基于 <, FONT face="Arial, sans-serif">OpenSSL 的加密数据传输。
    1. vsftpd双模式切换
     前面我们提过,vsftpd 服务是支持在linux下的两种服务模式:独立(standalone)模式和守护进程(xinetd)模式。standalone模式下,vsftpd进程启动后会一直占用系统资源,当有连接请求时,它会迅速反应;在xinetd模式下,ftp服务是由守护进程统一管理,当出现ftp连接请求时,守护进程才将ftp服务启动,这种方式最大的优点是没有连接的时候ftp服务不会占用系统资源,处于睡眠状态,但因为要花费时间去唤醒该服务,所以响应时间较长
    之前做的试验一直是把vsftpd 做在独立模式下,下面我们把它移到守护进程下。注意在工作在守护进程下时,有的参数并不起作用,详细请查阅vsftpd帮助信息(man vsftpd.conf)
     我们需要在守护进程配置目录/etc/xinetd.d/里建立vsftpd 的守护进程文件。我们在安装时已经将该文件考到/etc/xinetd.d/目录下了。我们稍稍修改其内容:
     #vi /etc/xinetd.d/vsftpd
     service ftp
     {
         disable             = no
         socket_type                = stream
         wait                        = no
         user                        = root
         server                = /usr/local/sbin/vsftpd
         server_args                = /etc/vsftpd/vsftpd.conf
         nice                        = 10
     }
     接下来把配置文件中的listen=yeslisten_ipv6=yes去掉,停掉vsftpd服务,重启xinetd服务:
     # sesrvice vsftpd stop
     # service xinetd restart
     重新启动守护进程后,vsftpd 服务就会让守护进程来管理了。在守护进程管理过程中,我们再修改主配置文件的话,就不需要重新启动服务了。

2. 基于IP的虚拟ftp站点
     这一小节我们来讨论在同一服务器上建立多个ftp站点,每个站点相互独立,拥有独立的配置文件。当然服务器必须有两个以上的IP地址。在standalone模式下,我们可以考虑启动多个ftp服务进程;在xinetd模式下,可以让守护进程来管理。下面我们分别讨论这两种情况。为简单起见,我们在服务器上建立两个匿名虚拟站点。下面是这两个站点的信息:
                                

               站点1                             站点2               
     ip地址                        192.168.0.105
      192.168.0.106  
    主配置文件                   /etc/vsftpd/vsftpd.conf  
   /etc/vsftpd/vsftpd2.conf  
    匿名用户映射的本地用户名  
         默认为ftp          新建立ftp2
    匿名用户主目录                         /var/ftp/   
          /var/ftp2/               


standalone
模式下虚拟站点的建立
     首先我们修改站点1的配置文件/etc/vsftpd/vsftpd.conf为下面所示:
     listen=yes
     listen_address=192.168.0.105
     anonymous_enable=yes
     local_enable=yes
     pam_service_name=vsftpd
     write_enable=yes
     ftpd_banner=This is ftp1 site
     站点1就这样配置完毕了。接下来为站点2建立ftp2的用户:
     # mkdir /var/ftp2/
     # useradd -d /var/ftp2/ ftp2

     为了让站点2知道匿名用户的主目录为/var/ftp2,我们需要在配置文件中手动指定站点2使用ftp2用户登录,于是我们要用到下面这条语句:
     ftp_username=local_username
     建立站点2的配置文件/etc/vsftpd/vsftpd2.conf,内容如下:
     listen=yes
     listen_address=192.168.0.106
     anonymous_enable=yes
     local_enable=yes
     pam_service_name=vsftpd
     write_enable=yes
     ftp_username=ftp2
     ftpd_banner=This is ftp2 site
     接下来我们启动vsftpd服务,就可以看到效果了。需要注意的是这里就不能用service vsftpd start命令来启动服务了,必须用第三节前面介绍的方式启动。
     # /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
     [1] 2287
     # /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
     [1] 2288

     # ftp 192.168.0.105
     Connected to 192.168.0.105.
     220 This is ftp1 site
     530 Please login with USER and PASS.
     ……
     # ftp 192.168.0.106
     Connected to 192.168.0.106.
     220 This is ftp2 site
     ……
     我们在各自的配置文件设置了不同的banner,上面已经看到效果了。

     守护进程模式下虚拟站点的建立
     standalone模式下,IP的绑定在配置文件里配置了,配置文件名及其位置在启动服务的命令参数里指定;在xinetd模式下,这两步需要在守护进程配置文件里配置。这样在守护进程里面我们就得用到这两个设置:
     bind=绑定的ip
     server_args=每个站点的配置文件
     那么我们来做守护进程文件,首先来写站点1的守护进程文件:
     # vi /etc/xinetd.d/vsftpd
     service ftp
     {
         disable             = no
         socket_type       = stream
         wait              = no
         user              = root
         server            = /usr/local/sbin/vsftpd
         server_args       = /etc/vsftpd/vsftpd.conf
         nice              = 10
         bind              = 192.168.0.105
     }

     再建立站点2的守护进程文件,并输入下面的内容
     # vi /etc/xinetd.d/vsftpd2
     service ftp
     {
         disable             = no
         socket_type            = stream
         wait                   = no
         user                   = root
         server                 = /usr/local/sbin/vsftpd
         server_args           = /etc/vsftpd/vsftpd2.conf
         nice                   = 10
         bind                   = 192.168.0.106
     }
     这样两个守护进程文件就写完了,用户也在上个试验已经建立完了。接下来继续修改两个站点的配置文件,均是把listenlisten_address两行删去即可。现在我们可以重新启动xinetd服务,测试结果就不贴出来了。

    未完持续『文章来源:www.ititgo.cn 所属栏目:Linux技术文章』
 
上一条:VSFTP配置实例
下一条:怎么使用户能访问ftp,但不能远程登录
 

http://chatgpt.dhexx.cn/article/XIYFHuKk.shtml

相关文章

linux vsftpd 模式,Linux下的Vsftpd配置篇

1.主动与被动模式 1)主动模式(PORT方式) 连接过程为:客户端向服务器FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:我打开了XX端口,你过来连接我,于是服务器从20号端口向客户端的XX端口发送…

ftp服务器vsftpd配置文件,最全面的vsftpd配置文件详解

最详细的vsftpd配置文件&#xff0c;分享给大家。 注意&#xff1a; 使用匿名登入时&#xff0c;所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性&#xff0c;即匿名用户的家目录不能有777的权限。 对于用户的访问控制可以通过/etc/vsftpd目录下的vsftpd.user…

ftp服务器vsftpd配置文件,vsftpd配置文件详解及ftp服务器搭建

本文介绍如何在linux上搭建ftp服务器&#xff0c;并且给出了vsftpd 的配置的中文详解&#xff0c;要搭建ftp的同学可以认真看看&#xff0c;其中的配置文件必备全部记忆&#xff0c;在以后配置时可以查看这篇文章。 一、vsftps服务器的配置文件中文详解 vsftps服务器的配置文件…

大数据所具备的四个特点,清楚知道大数据原理原则

说起大数据&#xff0c;估计大家都觉得只听过概念&#xff0c;但是具体是什么东西&#xff0c;怎么定义&#xff0c;没有一个标准的东西&#xff0c;因为在我们的印象中好像很多公司都叫大数据公司&#xff0c;业务形态则有几百种&#xff0c;感觉不是很好理解&#xff0c;所以…

计算机存储容量的基本单位pb,pb存储单位是什么

pb存储单位是一种计算机存储单位&#xff0c;pb的英文全称是Petabytes&#xff0c;其中文名叫拍字节&#xff1b;计算机存储单位一般用字节Byte、千字节KB、兆字节MB、吉字节GB、太字节TB、拍字节PB、艾字节EB等表示。 本文操作环境&#xff1a;Windows7系统&#xff0c;Dell G…

zb计算机术语,容量1zb等于多少kb

满意答案 nnn08nnn08 2017.05.28 采纳率&#xff1a;57% 等级&#xff1a;9 已帮助&#xff1a;115人 1KB1024B&#xff1b;1MB1024KB10241024B。其中1024210。  1B(byte&#xff0c;字节)8bit(见下文)&#xff1b;  1KB(Kibibyte&#xff0c;千字节)1024B2^10B&#xf…

计算机存储1pb等于多少kb,存储容量:1TB等于多少GB?1PB等于多少TB?1EB等于多少PB?

满意答案 youki203. 2013.09.11 采纳率&#xff1a;45% 等级&#xff1a;11 已帮助&#xff1a;12389人 存储容量:是该存储设备上可以存储数据的最大数量&#xff0c;通常使用千字节(kb kilobyte)、兆字节(MB megabyte)、吉字节(GB, gigabyte)、太字节(TB &#xff0c;terab…

word中如何快速引用参考文献

最近一直忙于论文的修改&#xff0c;在修改过程中发现参考文献引用是一个问题&#xff0c;下面结合网上的资源给出了如何快速引用参考文献。 主要分为两大步骤&#xff0c;生成编号项、插入超级链接 1、自动生成编号项 1.1、选种参考文献区域&#xff0c;如下图&#xff1a;…

Word 2016 撰写论文(2): 交叉引用

在利用Word编辑论文时&#xff0c;谁也不可能保证自己撰写的文档会一次性成功&#xff0c;不做任何修改&#xff0c;这就避免的会碰到增加或删减某些图片或表格的情况&#xff0c;以及对插入图片的顺序进行变更&#xff0c;这就产生一个问题&#xff0c;为了是文档产生图文并茂…

Word引用文献设置双向链接

1. 修改参考文献编号格式 2. 选中正文中引用的标号例如&#xff1a; 3. 保持选中的状态下&#xff0c;点击引用&#xff1a; 4. 再点击交叉引用&#xff1a; 5. 引用内容选择“段落编号(完整上下文)”&#xff0c;然后选择具体的引用文献&#xff1a; 6. 如果要在两条文献之中…

如何更新word文档中的文献引用编号?

最近用word写毕业论文&#xff0c;遇到一个小问题&#xff0c;就是使用 “交叉引用” 引用参考文献的时候&#xff0c;文档中插入的编号不能随参考文献的实际编号变化而变化。简单的搜索后&#xff0c;找到了一个方法&#xff0c;在此记录一下&#xff0c;以备后用。怎样在Word…

word参考文献交叉引用的多项引用,改逗号和破折号形式

word参考文献交叉引用的多项引用&#xff0c;如&#xff1a;[1][2][3]-->[1-3]&#xff0c;[1][3][4][5]-->[1,3-5] 1 引用2个参考文献2 引用三个&#xff08;及以上&#xff09;连续序号的参考文献总结 1 引用2个参考文献 1.1 按步骤1&#xff0c;2&#xff0c;3&#…

Word中的参考文献引用

选中参考文献选择【段落】–》【段落编号】 最终效果 引用方法&#xff1a;单击【引用】–》【交叉引用】–》选择【插入】

【Word】如何设置交叉引用标注参考文献与设置上标

【Word】如何设置交叉引用标注参考文献与设置上标 本文目录 前言1、定义参考文献编号的格式2、设置交叉引用&#xff0c;插入正文位置3、连续修改多个参考文献的相关格式4、更新正文标注5、注意事项1&#xff1a;论文参考文献从10开始无法对齐总结 前言 这周在写论文的时候&am…

word如何给论文加引用文献

给论文加引用文献其实差不多就是加了个链接&#xff0c;通过点击链接跳转到文末最后展示引用文献额作者&#xff0c;论文名等等信息&#xff0c;给论文加引用文献只要有一下几步&#xff1a; 一、设置参考文献标号字体格式 对于论文中的文献&#xff0c;首先设置论文前序号的…

Word引用参考文献上标,全标注批量设置为上标

请看范例图片&#xff0c;下图为论文中某一段落&#xff0c;引用了三篇文献&#xff0c;并已经通过【交叉引用】来添加文献编号注释&#xff0c;我们要对这些编号进行上标设置。 一般&#xff0c;我们可以选中标注后&#xff0c;点击上方的上标。 这样的操作&#xff0c;面…

【word】如何设置交叉引用标注参考文献

文章目录 1. 定义参考文献编号格式2. 设置交叉引用&#xff0c;插入正文位置3. 修改连续多个参考文献的格式4. 更新正文标注 1. 定义参考文献编号格式 【开始】->【编号】->【定义新编号格式】 2. 设置交叉引用&#xff0c;插入正文位置 设置好固定的参考文献格式&…

所有word引用列表出现“ADDIN EN.REFLIST”解决办法

文章目录 问题描述解决办法 问题描述 使用论文管理工具插入论文后&#xff0c;有时候可能会在引用列表突然出现“ADDIN EN.REFLIST” 解决办法 在word的操作栏里&#xff0c;依次点击&#xff1a; 文件选项高级取消勾选“显示域代码而非域值”

WORD批量修改文献引用为上标

当论文文献数量较多时&#xff0c;此时需要修改文献引用为上标特别麻烦&#xff0c;尤其稍不留神便出错。本文主要针对两种情况批量修改上标&#xff08;以word2016为例)。 一、批量修改如[12]、[30]格式的上标 1、点击word开始页面的替换选项卡&#xff0c;或CtrlH键&#xff…

Word中给论文添加引用

给论文添加引用 1、首先&#xff0c;写好自己的论文&#xff0c;以及要添加的引用内容。2、在要引用的内容前&#xff0c;添加编号&#xff08;复制过来后的编号[1]不可用&#xff0c;再添加&#xff0c;引用时就会有&#xff09;3、将鼠标放在论文中引用参考文献的段落后&…