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软件包用于建立虚拟账号数据库文件

173910325.png


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

  • 奇数行为帐号名

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

173910275.png

173910572.png


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

  • db_load 转换工具

  • 需安装db4-utils软件包

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

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

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

173911876.png


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

173911150.png


添加虚拟用户的映射账号

173911659.png

173911970.png


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

173911475.png


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

173911242.png

173912487.png


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

173912905.png

174006905.png


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

173922476.png

173922567.png

173922869.png

173922596.png

173922813.png


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

173922943.png


在FTP目录中新建一点文件

173922811.png


下面开始测试

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

173923142.png

173923958.png


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

173923733.png

173923420.png

173924389.png


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

173924697.png

173924490.png

173925114.png


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

173925802.png

173925352.png

173926454.png


总结

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

  • 创建账号数据

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

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

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

  • 添加虚拟用户支持

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

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

  • 启动服务并测试

6.重新加载vsftpd配置

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