FTP服务概述

FTP连接及传输模式

  • 控制连接:TCP 21,用于发送FTP命令信息

  • 数据连接:TCP 20,用于上传、下载数据

数据连接的建立类型:

  • 主动模式:服务端从20端口主动向客户端发起连接

  • 被动模式:服务端在指定范围内某个端口被动等待客户端连接

FTP传输模式

  • 文本模式:ASCII模式,以文本序列传输数据

  • 二进制模式:Binary模式,以二进制序列传输数据


FTP用户的类型

  • 匿名用户:anonymous或ftp

  • 本地用户:帐号名称、密码等信息保存在passwd、shadow文件中

  • 虚拟用户:使用独立的帐号/密码数据文件


常见的FTP服务器程序

IIS、Serv-U、wu-ftpd、Proftpd、vsftpd(Very Secure FTP Daemon)

常见的FTP客户端程序

ftp命令、CuteFTP、FlashFXP、LeapFTP、Filezilla、gftp、kuftp


vsftpd服务基础

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件

  • /etc/vsftpd/ftpusers

  • /etc/vsftpd/user_list

主配置文件

  • /etc/vsftpd/vsftpd.conf


常用的全局配置项

  • listen=YES:是否以独立运行的方式监听服务

  • listen_address=192.168.4.1:设置监听的IP地址

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

  • write_enable=YES:是否启用写入权限

  • download_enable=YES:是否允许下载文件

  • userlist_enable=YES:是否启用user_list列表文件

  • userlist_deny=YES:是否禁用user_list中的用户

  • max_clients=0:限制并发客户端连接数

  • max_per_ip=0:限制同一IP地址的并发连接数


常用的匿名FTP配置项

  • anonymous_enable=YES:启用匿名访问

  • anon_umask=022:匿名用户所上传文件的权限掩码

  • anon_root=/var/ftp:匿名用户的FTP根目录

  • anon_upload_enable=YES:允许上传文件

  • anon_mkdir_write_enable=YES:允许创建目录

  • anon_other_write_enable=YES:开放其他写入权

  • anon_max_rate=0:限制最大传输速率(字节/秒)


常用的本地用户FTP配置项

  • local_enable=YES:是否启用本地系统用户

  • local_umask=022:本地用户所上传文件的权限掩码

  • local_root=/var/ftp:设置本地用户的FTP根目录

  • chroot_local_user=YES:是否将用户禁锢在主目录

  • local_max_rate=0:限制最大传输速率(字节/秒)


其他常用配置

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

[root@steven ~]# vim /etc/vsftpd/vsftpd.conf
……
listen=YES
listen_address=192.168.4.11
listen_port=2121


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

[root@steven ~]# vi /etc/vsftpd/vsftpd.conf
……
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600



实验案例

先挂载RHEL系统光盘.安装vsftp软件包和db4-utils软件包.

db4-utils软件包用于建立虚拟账号数据库文件

构建FTP文件传输服务器  --  基于虚拟用户_操作系统


建立虚拟用户的账户名、密码列表

  • 奇数行为帐号名

  • 偶数行为上一行中帐号的密码

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_02

构建FTP文件传输服务器  --  基于虚拟用户_VSFTP_03


转化为Berkeley DB格式的数据文件

  • db_load 转换工具

  • 需安装db4-utils软件包

  • -T选项允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

  • -t hash选项指定读取数据文件的基本方法

  • -f选项用于指定数据源文件

构建FTP文件传输服务器  --  基于虚拟用户_Linux_04


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

构建FTP文件传输服务器  --  基于虚拟用户_VSFTP_05


添加虚拟用户的映射账号

构建FTP文件传输服务器  --  基于虚拟用户_VSFTP_06

构建FTP文件传输服务器  --  基于虚拟用户_FTP_07


创建FTP目录,更改属主和权限

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_08


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

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_09

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_10


修改vsftpd配置文件.添加虚拟用户的支持,修改了匿名用户的根目录,限制了连接数和速率

构建FTP文件传输服务器  --  基于虚拟用户_Linux_11

构建FTP文件传输服务器  --  基于虚拟用户_Linux_12


为每个用户建立独立的配置文件

构建FTP文件传输服务器  --  基于虚拟用户_Linux_13

构建FTP文件传输服务器  --  基于虚拟用户_VSFTP_14

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_15

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_16

构建FTP文件传输服务器  --  基于虚拟用户_FTP_17


为每个用户建立独立配置文件以后.要添加这条

构建FTP文件传输服务器  --  基于虚拟用户_Linux_18


在FTP目录中新建一点文件

构建FTP文件传输服务器  --  基于虚拟用户_FTP_19


下面开始测试

匿名用户可以登录,并可以浏览、下载,但无法上传

构建FTP文件传输服务器  --  基于虚拟用户_Linux_20

构建FTP文件传输服务器  --  基于虚拟用户_VSFTP_21


sales用户可以登录,并可以浏览、下载,但无法上传

构建FTP文件传输服务器  --  基于虚拟用户_Linux_22

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_23

构建FTP文件传输服务器  --  基于虚拟用户_虚拟用户_24


salesadm用户可以登录,并可以浏览、下载,也可以上传

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_25

构建FTP文件传输服务器  --  基于虚拟用户_Linux_26

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_27


devadm用户可以登录,并可以浏览、下载,也可以上传

构建FTP文件传输服务器  --  基于虚拟用户_Linux_28

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_29

构建FTP文件传输服务器  --  基于虚拟用户_操作系统_30


总结

构建基于虚拟用户的FTP服务的步骤

  • 创建账号数据

1.建立虚拟FTP用户的帐号数据库文件

2.创建FTP根目录及虚拟用户映射的系统用户

3.建立支持虚拟用户的PAM认证文件

  • 添加虚拟用户支持

4.在vsftpd.conf文件中添加支持配置

5.为个别虚拟用户建立独立的配置文件

  • 启动服务并测试

6.重新加载vsftpd配置

7.使用虚拟FTP账户访问测试