教学内容:
n FTP的基本概念
n FTP服务器的配置
n FTP客户端的操作
n 配置案例
教学目标:
n 了解FTP服务器作用和传输模式
n 熟悉FTP的工作体系
n 掌握FTP服务器的配置和客户端的操作
教学重点:
n FTP服务器的配置
n FTP客户端的操作和配置案例
教学难点:
n FTP的工作体系和传输模式
一、FTP的基本概念
1. FTP作用
FTP (文件传输协议)是TCP/IP协议栈所提供的一种子协议,该子协议具体可以实现在以下功能:
n 从客户向服务器发送一个文件
n 从服务器向客户发送一个文件
n 从服务器向客户发送文件或目录列表
2. FTP的工作体系
FTP工作在TCP/ip模型的第四层上,服务器与客户机之间利用TCP的21号端口传送信号指令;利用20号端口用于传送数据;具体工作过程如下:
(1) 客户机启动客户端程序,通过TCP的“三次握手”建立服务器的连接
(2) 服务器对客户机进行身份验证
(3) 进行相应目录操作和数据传输
(4) 断开连接
3. FTP的数据传输模式
主动传输模式:
在这种模式下,服务器向客户端发起一个用于数据传输的连接,客户端的连接端口是由服务器和客户端通过协商通过的
被动传输模式:
在这种模式下,客户端向服务器发起一个用于数据传输的连接,客户端的连接端口是发起这个数据连接请求时使用的端口号
4. Linux下常见的FTP软件
(1)wu-ftp
wu-ftp是历史最久的非商业FTP服务器软件之一,主要有以下特点:
n 可以限制最高访问人数,以维持系统的最佳运行效率
n 可以记录文件上传和下载的全过程
n 可以支持匿名FTP服务
n 可以支持虚拟FTP主机
n 可以控制不同网段及其对FTP服务器的存取权限和访问时段
(2)proftp
proftpd是在意图修改wu-ftp一些不足情况下产生的,具体有如下特点:
n 单配置文件,配置简单
n 基于单个目录的.ftpaccess设置文件,类似apache的.htaccess文件
n 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式
n 强大的log功能
n 支持以非root身份运行,从而减少了安全隐患
n 支持匿名FTP功能
(3)vsftpd
n 是一个安全、高速、稳定的FTP服务器
n 可设定多个基于IP的虚拟FTP服务器
n 匿名FTP服务器更是十分容易
n 不执行任何外部程序,从而减少了安全隐患
n 支持虚拟用户,且支持每个虚拟用户具有独立的配置
n 可以设置为从xinetd启动,或者是独立FTP服务器两种运行方式
n 支持PAM或xinetd/tcp_wrappers的认证方式
n 支持带宽限制
二.FTP服务器配置
1.安装FTP服务的相关软件
装载第三张安装盘,且执行以下命令:
#rpm -ivh vsftpd-1.1.3-8.i386.rpm
相关文件:
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd.ftpusers 指定哪些用户不能访问FTP服务器
/etc/vsftpd.user_list 可以根据vsftpd.conf文件中的设置来决定该文件中指定的用户是否可以访问ftp服务器
/etc/rc.d/init.d/vsftpd vsftpd的启动脚本文件
2.修改/etc/vsftpd/vsftpd.conf文件
#vi /etc/vsftpd/vsftpd.conf
功能:设置FTP服务器相关选项
文件格式:#说明语句
...........
...........
配置选项
...........
...........
说明:在vsftpd. Conf文件中主要由各种配置选项组成,具体以分为以下三类:
(1) 布尔型选项
anonymous_enable=yes/no (yes)
是否允许匿名用户登录
local_enable=yes/no (yes)
是否允许本地用户登录
guest_enable=yes/no (no)
是否允许虚拟用户登录
write_enable=yes/no (yes)
是否允许用户有写的权限
xferlog_enable=yes/no(yes)
是否激活上传和下载日志
connect_from_port_20=yes/no(yes)
是否启用FTP数据端口连接
anon_mkdir_write_enable=yes/no(no)
是否允许匿名用户创建目录(首先设置write_enable=yes)
anon_other_write_enable=yes/no(no)
是否允许用户删除文件和重命名文件
anon_upload_enalbe=yes/no(no)
是否允匿名用户上传数据
anon_world_readable_Only=yes/no(yes)
设置匿名用户登录后是否可以浏览目录,等于no时表示允许用户浏览目录,等于yes时表示禁止用户浏览目录
ascii_download_enable=yes/no(no)
是否使用ascii下载方式
ascii_upload_enable=yes/no(no)
是否使用ascii上传方式
listen=yes/no(yes)
是否使用独占启动方式
check_shell=yes/no(yes)
是否检查用户登录的SHELL(查看/etc/shells文件)
deny_email_enable=yes/no(no)
是否拒绝匿名用户的口令为mail地址
hide_ids=yes/no(no)
隐藏用户和组信息
chroot_local_user=yes/no(no)
是否锁定所有本地用户主目录
chroot_list_enable=yes/no(no)
设置指定文件中的用户执行chroot,当要设置chroot_list_enable时,应将choot_local_user设为no
userlist_enable=yes/no (no)
是否装载userlist_file选项指定的文件,userlist_file文件中保存有若干个用户名
userlist_deny=yes/no (no)
是否拒绝userlist_file选项指定的文件中的用户访问FTP服务器
tcp_wrappers=yes/no (yes)
使用tcp_wrappers作为主机访问控制方式
(2) 数据字型选项
local_umask=022
设置本地用户的文件生成掩码为022,默认值为077
ftp_data_port=20
设置FTP数据连接端口为20号端口
idle_session_timeout=600
设置空闲的用户会话的中断时间为600秒
data_connection_timeout=120
设置数据连接的中断时间
accept_timeout=60
设置客户端空闲时间长度,当超过这个时间就会自动中断连接
connect_timeout=60
设置激活连接的时间
max_clients=200(独占方式)
设置服务器最大并发连接的客户数为200
max_per_ip=(独占方式)
设置客户机的最大连接数为3
local_max_rate=50000
设置本地用户的最大传输速率为50kb/s
anon_max_rate=30000
匿名用户的最大传输速率为30kb/s
pasv_min_port=5000
pasv_max_port=6000(应用在被动模式中)
设置客户端连接时的端口范围为5000-6000
listen_port=21 (独占模式)
设置服务器的侦听的端口为21
anon_umask=022
设置匿名用户的文件生成掩码为022
listen_address=192.168.9.1(独占模式)
设置服务器监听的地址
(3) 字符串选项
pam_services_name=vsftpd
设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d目录下
chroot_list_file=/etc/vsftpd.chroot_list
当设置chroot_list_enable=yes,只有chroot_list_file指定文件中的用户可以执行chroot
ftpd_banner=xhnet’s ftp server
设置ftp服务器在客户机连接时所显示的欢迎信息
userlist_file=/etc/vsftpd.user_list
当指定userlist_enable=yes时,就会装载userlist_file指定文件中的内容
文件实例:
根据以下要求配置ftp服务器,具体要求如下:
n 允许匿名用户登录和本地用户登录
n 禁止匿名用户上传
n 允许本地用户上传和下载
n 本地文件生成掩码为022
n 空闲的会话时间为600秒,数据连接时间为60秒,空闲中断时间为30秒,自动激活时间为10秒
n 本地用户的最大传输速率为50000b/s,匿名用户的最大传输速率为30000b/s
n 客户端的连接端口为5000-6000
n 使用独占启动方式,侦听192.168.5.1接口的21号端口
n 并发连接的客户数为300,每台客户机的最大连接为5
#vi /etc/vsftpd/vsftpd.conf
根据以上的要求作以下更改:
anonymous_enable=yes
local_enable=yes
anon_upload_enable=no
write_enable=yes
local_umask=022
idle_session_timeout=600
data_connection_timeout=60
accept_timeout=30
connect_timeout=10
local_max_rate=50000
anon_max_rate=30000
pasv_min_port=5000
pasv_max_port=6000
listen=yes
listen_address=192.168.5.1
listen_port=21
max_clients=300
max_per_ip=5
3. 启动服务
如果采用独占方式的话,方法如下:
#service vsftpd start
如果采用超级服务方式的话,方法如下:
#ntsysv (选中vsftpd服务)
#service xinetd restart
4. 建立用户
vsftpd服务器允许三种用户登录,分别为:
n 本地用户
如果用户在远程FTP服务器上拥有账号,则该用户称为本地用户;建立方法如下:
#useradd 用户名
#passwd 用户名
n 虚拟用户
如果用户在远程拥用账号,且此账号只能用于文件传输服务,则称此用户为虚拟用户或guest用户,虚拟用户信息可以存放在数据库或者文本文件中
n 匿名用户
如果用户在远程FTP服务器上没有账号,则称此用户称为匿名用户,若FTP服务器提供匿名访问功能,则匿名用户可以通过账号anonymous或ftp和口令进行登录(/var/ftp)
三. 客户端的操作
1. linux客户端
(1) ftp
#ftp 服务器地址
ftp>ftp子命令
说明:常用的ftp子命令有以下几种
n ?|help
作用:显示ftp内部命令的帮助信息
实例:
ftp>?
ftp>help lcd
n ![命令[参数]]
作用:在本机中执行shell命令后回ftp环境中
实例:
ftp>! cd /etc/sysconfig
n lcd [dir]
作用:将本地工作目录切到dir
实例:
ftp>lcd /sbin
n open 服务器地址[端口]
作用:建立指定FTP服务器连接,可指定连接端口
实例:
ftp>open 192.168.4.1
n close
作用:中断与远程服务器的FTP会话
实例:
ftp>close
n asc
作用:使用ascii类型传输方式
实例:
ftp>asc
n bin
作用:使用二进制文件传输方式
实例:
ftp>bin
cd 目录名
作用:进入远程主机目录
实例:
ftp>cd pub
n pwd
作用:显示远程主机的当前工作目录
ftp>pwd
n mkdir
作用:在远程主机中建立目录
实例:
ftp>mkdir abc
n ls
作用:显示远程目录中的内容
实例:
ftp>ls
n get 远程文件名 [本地文件名]
作用:下载远程主机的文件
实例:
ftp>get abc.txt
n mget 文件名 文件名 ………….
作用:下载远程主机上的多个文件
实例:
ftp>mget vs.txt ab.conf
n reget 文件名
作用:与get功能类似,但reget支持断点续传
实例:
ftp>reget abc
n put 本地文件
作用:将本地文件传送到远程FTP服务器
实例:
ftp>put a1.txt
n mput 本地文件 本地文件………….
作用:将多个本地文件传送到远程FTP服务器
实例:
ftp>mput a1.txt a2.txt
n rename 旧文件名 新文件名
作用:进行文件重命名操作
实例:
ftp>rename time times
n delete 文件名
作用:删除远程FTP服务器中的指定文件
实例:
ftp>delete time
n mdelete 文件名
作用:删除远程FTP服务器中的多个文件
实例:
ftp>mdelete time vsftpd
n rmdir 目录名
作用:删除远程FTP服务器中的指定目录
实例:
ftp>rmdir abc
n quit/bye
作用:退出FTP会话
实例:
ftp>quit
(2) lftp
#lftp 服务器地址
操作方法以上的ftp方法一致
2. windows客户端
(1) cuteftp
(2) ftp
(3) ie
四. 配置案例
案例一:
要求:
利用vsftpd配置一台支持匿名用户和本地用户登录,具体要求如下:
n 允许匿名用户登录和本地用户登录
n 禁止匿名用户上传
n 允许本地用户上传和下载,且锁定本地用户主目录,允许用户删除用户主目录的文件
n 建立用户组ftpusers,同时建立用户ftp1,ftp2属于ftpusers组,并设置用户的主目录为/soft
n 设置/soft目录允许ftpusers组中的用户可以写入,但不能删除目录中的非自己拥有的文件
n 本地用户的文件生成掩码为022
n 空闲的会话时间为600秒,空闲数据连接时间为60秒,自动中断时间为30秒,自动激活时间为10秒
n 本地用户的最大传输速率为50000b/s,匿名用户的最大传输速率为30000b/s
n 客户端的连接端口为5000-6000(被动模式中使用)
n 使用独占启动方式,侦听192.168.5.1接口的21号端口
n 禁止192.168.5.128主机访问FTP服务器
n 并发连接的客户数为300,每台客户机的最大连接为5
1. 安装相关软件包
#rpm -ivh vsftpd-1.1.3-8.i386.rpm
2.修改/etc/vsftpd/vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
修改如下:
anonymous_enable=yes
local_enable=yes
anon_upload_enable=no
write_enable=yes
local_mask=022
idle_session_timeout=600
data_connection_timeout=60
accept_timeout=30
connect_timeout=10
local_max_rate=50000
anon_max_rate=30000
pasv_min_port=5000
pasv_max_port=6000
chroot_local_user=yes
listen=yes
listen_address=192.168.5.1
listen_port=21
max_clients=300
max_per_ip=5
3.创建相关用户组和用户
#mkdir /soft
#chmod 1777 /soft
#groupadd ftpusers
#useradd -d /soft -g ftpusers ftp1
#passwd ftp1
#useradd -d /soft -g ftpusers ftp2
#passwd ftp2
4. 设置hosts.allow文件
#vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY
说明:
vsftpd在独占启动方式下支持tcp_wrappers主机访问控制方式,tcp_wrappers的主要配置文件是/etc/hosts.allow和/etc/hosts.deny,它们的格式都是:
守护进程名:主机表:ALLOW/DENY
5. 启动服务
#service vsftpd start
案例二:
要求:
利用VSFTPD配置一台高安全级别的匿名FTP服务器,具体如下:
n 只允许匿名用户登录,不允许本地用户登录
n 不允许匿名用户上传,不允许匿名用户有任何的写权限
n 设置客户端连接时的端口为5000-6000
n 设置匿名用户的最大传输速率为1MB/s
n 设置空闲数据连接的中断时间为200秒
n 设置客户端空闲时的自动中断时间为100秒和激活连接的时间为30秒
n 设置FTP服务器采用xinetd启动方式
n 设置FTP服务器的并发连接数为200
n 设置每个主机的最大连接数5
n 禁止192.168.5.2主机访问FTP服务器
n 配置安全日志
配置过程:
1. 安装VSFTPD相关软件
#rpm -ivh vsftpd-1.1.3-8.i386.rpm
2. 修改/etc/vsftpd/vsftpd.conf
#vi /etc/vsftpd/vsftpd.conf
修改内容如下:
anonymous_enable=yes
local_enable=no
anon_upload_enable=no
idle_session_timeout=600
data_connection_timeout=200
accept_timeout=100
connect_timeout=30
anon_max_rate=10000
pasv_min_port=5000
pasv_max_port=6000
listen=no
3. 建立vsftpd服务的xinetd配置文件
#vi /etc/xinetd.d/ftpd
service ftpd {
disable=no
Flags=resue
Socket_type=stream
Wait=no
User=root
Server=/usr/sbin/vsftpd
Instances=200
Per_source=5
No_access=192.168.5.2}
4. 启动服务
#ntsysv (选中ftpd服务)
#service xinetd restart (或重启机器)
案例三:
利用VSFTPD配置一台支持虚拟用户登录的FTP服务器,具体要求如下:
n 支持本地用户和虚拟用户登录,不允许匿名用户登录
n 允许本地用户任意写入
n 锁定本地用户的用户主目录
n 建立虚拟用户vftp1,vftp2都对应本地用户guest,且虚拟用户在用户主目录中可以写入,但不能删除
n 设置客户端连接时的端口为5000-6000
n 最大空闲会话时间长度为600秒
n 设置空闲数据连接的中断时间为200秒
n 设置客户端空闲时的自动中断时间为100秒和激活连接的时间为30秒
n 本地用户的最大传输速率为2MB/s
n 使用独占启动方式,侦听192.168.5.1接口的21号端口
n 设置服务器的并发连接总数为200
n 每个客户机的并发连接总量为5
n 允许192.168.5.0/24网段内的主机访问
配置过程:
1. 安装相关软件
#rpm -ivh vsftpd-1.1.3-8.i386.rpm
2. 修改/etc/vsftpd/vsftpd.conf文件
#vi /etc/vsftpd/vsftpd.conf
修改内容如下:
anonymous_enable=no
local_enable=yes
guest_enable=yes
guest_username=guest
write_enable=yes
chroot_local_user=yes
pam_service_name=ftp
idle_session_timeout=600
data_connection_timeout=200
accept_timeout=100
connect_timeout=30
local_max_rate=20000
pasv_min_port=5000
pasv_max_port=6000
listen=yes
listen_address=192.168.5.1
listen_port=21
3. 建立相关用户
#useradd guest
#passwd guest
#chmod 1777 /home/guest
//建立虚拟用户所对应的本地用户
#vi /etc/vsftpd/vlogin.txt //建立虚拟用户文件
添加如下内容:
vftp1 (用户名)
ftp1passwd (密 码)
vftp2
ftp2passwd
#db_load -T -t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db
//生成口令库文件,运行db_load之前先安装db4-utils的RPM包
#chmod 600 /etc/vsftpd/vlogin.db
//修改口令库文件的权限
4. 设置PAM验证
#cp /etc/pam.d/vsftpd /etc/pam.d/ftp
#vi /etc/pam.d/ftp
添加如下内容:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin
5. 设置主机访问控制
#vi /etc/hosts.allow
添加如下内容:
vsftpd:192.168.5.0/24:ALLOW
6. 启动服务
#service vsftpd start