FTP文件共传输服务

一,vsftpd服务基础

1),FTP服务概述

        FTPFile Transfer  Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件共同实现文件传达输功能。

1,FTP连接及传输模式

#FTP服务器默认使用TCP协议的“2021端口”与客户端进行通信

#20端口用于建立数据连接,并传输文件数据

#21端口用于建立控制连接,并传输FTP控制命令

【模式】

#主动模式:服务器主动发起数据连接,首先由客户端向服务端的21端口建立FTP

控制连接,当需要传输数据时,客户端以ROPT命令告知服务器“我打开了某

个端口,你过来连接我“,于是,服务器从20端口向客户端发送请求并建立

数据连接。

#被动模式:服务器被动等待数据连接,如果客户机所在网络的防火墙禁止主动模

式连接,通常会使用被动模式,客户端向服务器的该端口(非20)发送请求

并建立数据连接。

【端口】

随机端口 > 1024              周知端口 <= 1024

2,FTP用户类型

#匿名用户:ftpanonymous,空密码,一般用于提供公共文件的下载。

#本地用户:本机的系统用户。

#虚拟用户:不是直接使用系统用户,而是位于独立数据文件中的FTP用户账号,通

过使用虚拟用户,将FTP账户与Linux系统账户的关联性降至最低,可以为系

统提供更好的安全。

3,FTP服务器软件的分类

#windowsiis                  serv-u

#Linuxproftpd pureftpd  vsftpd

〖vsftpd〗

a)spacer.gif该软件针对安全特性方面做了大量的设计

b)Vsftpd在速度和稳定性方面的表现也相当突出

c)Vsftpd可以支持15000个用户并发连接

d)Vsftpd:“very secure  FTP  daemon

4,FTP客户端工具的种类

#windowscuteFTP FlashFxp  LeapFTP  Filezilla

#Linuxgftp kuftp

2),vsftpd的配置

        #主程序:/usr/sbin/vsftpd

        #配置文件:/etc/vsftpd

        #脚本文件:/etc/init.d/vsftpd

1,用户列表文件“ftpusersuser_list

#ftpusers:黑名单文件,此文件中列出的用户将禁止登录到vsftpd服务

#user_list:黑白名单文件,一般用作白名单。此文件中包含的用户可能被禁止登录,

也可能被允许登录,具体取决于主配置文件vsftpd.conf中的设置

spacer.gif           userlist_enable=yesuser_list列表文件才生效

          userlist_deny=yes,为黑白名单,禁止此列表中的用户登录

          userlist_deny=no,为白名单,允许此列表中的用户登录

2,主配置文件“vsftpd.conf

格式:配置项=参数


【vsftpd.conf常见配置项及含义说明】

【匿名用户/适用于虚拟用户】

anonymous_enable=yes /是否允许匿名访问

anon_umask=022 /设置匿名用户所上传文件的默认权限掩码值,采用反码方式表示

anon_root=/var/ftp    /设置匿名用户的FTP根目录(缺省为/var/ftp)

anon_upload_enable=yes   /是否允许匿名用户上传文件

anon_mkdir_write_enable=yes    /是否允许匿名用户有创建目录的写入权限

anon_other_write_enable=yes  /是否允许匿名用户有其他写入权限“改名,删除”

anon_max_rate=0  /限制匿名用户的最大传输速率(0为无限制),单位为字节/秒

【本地用户】

   local_enable=yes  /是否允许本地系统用户访问

   local_umask=022  /设置本地用户所上传文件的默认权限

   local_root=/var/ftp    /设置本地用户的FTP根目录,适用于虚拟用户

   local_local_user=yes  /是否将FTP本地用记禁锢在宿主目录中

   local_max_rate=0  /限制本地用户的最大传输率(0为无限制)

【全局配置】

   userlist_enable=yes  /是否启用user_list用户列表文件,启用黑白名单

   userlist_deny=yes  /是否禁用user_list列表文件中的用户账号,yes为黑

   max_clients=0  /是否允许多个客户端同时连接(0为无限制)

max_per_ip=0  /对来自同一个IP地址的客户端,最多允许多少个并发连接(0为元限制),控制多进程下载,如“迅雷”

connect_from_port_20=yes /允许服务器主动模式(从20端口建立数据连接)

pasv_enable=yes  /允许被动模式连接

pasv_max_port=24600  /设置用于被动模式的服务器最大端口号

pasv_min_port=24500  /设置用于被动模式的服务器最小端口号

pam_service_name=vsftpd  /设置用于用户认证的PAM文件位置(/dev/pam.d/目录中对应的文件名)

listen=yes  /是否以独立运行的方式监听服务

listen_address=0.0.0.0  /设置监听FTP服务的IP地址

listen_port=21  /设置监听FTP服务的端口号

write_enable=yes  /启用任何形式的写入权限(如上传、删除文件等)要开启它

download_enable=yes  /是否允许下载文件(no为仅限于浏览、上传)

dirmessage_enable=yes  /用户切换进入目录时显示.message文件

xferlog_enable=yes  /启用xferlog日志,默认记录到/var/log/xferlog

xferlog_std_format=yes  /启用标准的xferlog日志格式。如禁用,将使用vsftpd自己的日志格式

二,基于系统用户的FTP服务

1),匿名访问的FTP服务

1,准备匿名FTP访问的目录

        #FTP匿名用户对应的系统用户为ftp

        #宿主目录:/var/ftp

2,开放匿名用户配置,并启动vsftpd服务

#设置主配置文件:vim /etc/vsftpd/vsftpd.conf

#开启服务:service vsftpd  restart

3,测试匿名FTP服务器

ftp  192.168.1.1


【登录FTP后,对客户端操作方法】


Linux

Windows

显示当前路径

!pwd

!cd

改变路径

lcd

lcd

查看目录内容

!ls

!dir


2),用户验证的FTP服务

1,基本的本地用户验证

·ftp://用户名@192.168.1.1

·ftp://用户名:密码@192.168.1.1

2,使用user_list用户列表文件

·编辑“vim /etc/vsftpd/user_list”

添加本地用户

·编辑 vim  /etc/vsftpd/vsftpd.conf

          userlist_enable=yes      启用此项

          userlist_deny=no     启用白名单

·重启服务:service vsftpd  restart

3),vsftpd服务的其他常用配置

1,修改vsftpd服务的监听地址、端口

查看vsftpd服务的监听情况:netstat  -anpt |  grep  “vsftpd”

2,允许使用FTP服务器的被动模式

3,限制FTP连接的并发数、传输速度

三,基于虚拟用户的FTP服务

1),建立虚拟用户的账号数据库

准备工作:rpm  -ivh  db4-utils-..rpm                       /安装此软件

1,创建文件格式的用户名、密码列表

vim /etc/vsftpd/vusers.list                   /vusers.list文件名,后缀名自定义

spacer.gifspacer.gif用户名奇数行

密码偶数行

2,创建Berkeley DB格式的数据库文件源文件目标文件

a)spacer.gifspacer.gif先进入/etc/vsftpd/目录:cd  /etc/vsftpd

b)创建转换:db_load  -T -t  hash  -f  vusers.listvusers.db

c)查看转换后的文件类型:flie  vusers.db

d)为提高虚拟用户账号文件的安全性,设置文件权限

chmod  600 /etc/vsftpd/vusers.*

3,添加虚拟用户的映射账号、创建FTP根目录

useradd  -d /var/ftproot  -s  /sbin/nologin virtual  

spacer.gifchmod  755  /var/ftproot                   ftproot这个目录会自动创建)

2),为vsftpd服务添加虚拟用户支持

1,为虚拟用户建立PAM认证文件

位于:/etc/pam.d/vsftpd

spacer.gifvim  /etc/pam.d/vsftpd.vuvsftpd.vu文件名可自定义)

spacer.gif                   auth             required  pam_userdb.so  db=/etc/vsftpd/vusers

                  account  required pam_userdb.so db=/etc/vsftpd/vusers

2,修改vsftpd配置,添加虚拟用户支持

vim /etc/vsftpd/vsftpd.conf

                  ……//省略部分内容

spacer.gif                   local_enable=yes                              /需要映射本地用户、所以启用此项

                  write_enable=yes                            /启用上传写入支持

                  anon_umask=022                             /指定上传权限掩码


spacer.gif                   guest_enable=yes                                     /启用用户映射功能

                  guest_username=virtual               /指定映射的系统用户名称

                  pam_service_name=vsftpd.vu   /指定新的PAM认证文件

3,为不同的虚拟用户建立独立的配置文件

a)vim  /etc/vsftpd/vsftpd.conf

……//省略部分内容

spacer.gifuser_config_dir=/etc/vsftpd/vusers_dir                       (vusers_dir目录名自定义)

b)创建用户配置文件夹

mkdir  /etc/vsftpd/vusers_dir

c)进入此文件夹,为用户建立独立的配置文件

cd  /etc/vsftpd/vusers_dir

vim  用户名

spacer.gif           anon_upload_enable=yes                               /上传权限

          anon_mkdir_write_enable=yes                    /创建、定入权限

          anon_other_write_enable=yes                    /修改权限

d)重新加载配置

service vsftpd  reload