第十七章 FTP服务器

一、FTP的基本概念 

1. FTP作用

FTP (文件传输协议)TCP/IP协议栈所提供的一种子协议,该子协议具体可以实现在以下功能:

n 从客户向服务器发送一个文件

n 从服务器向客户发送一个文件

n 从服务器向客户发送文件或目录列表

2. FTP的工作体系

FTP工作在TCP模型的第四层上,服务器与客户机之间利用TCP21号端口传送信号指令;利用20号端口用于传送数据;具体工作过程如下:

(1) 客户机启动客户端程序,通过TCP的“三次握手”建立服务器的连接

(2) 服务器对客户机进行身份验证

(3) 进行相应目录操作和数据传输

(4) 断开连接

3. FTP的数据传输模式

主动传输模式:

在这种模式下,服务器向客户端发起一个用于数据传输的连接,客户端的连接端口是由服务器和客户端通过协商通过的

被动传输模式:

在这种模式下,客户端向服务器发起一个用于数据传输的连接,客户端的连接端口是发起这个数据连请求时使用的端口号

4. Linux下常见的FTP软件

1wu-ftp

n wu-ftp是历史最久的非商业FTP服务器软件之一,主要有以下特点:

n 可以限制最高访问人数,以维持系统的最佳运行效率

n 可以记录文件上传和下载的全过程

n 可以支持匿名FTP服务

n 可以支持虚拟FTP主机

n 可以控制不同网段及其对FTP服务器的存取权限和访问时段

2proftp

n proftpd是在意图修改wu-ftp一些不足情况下产生的,具体有如下特点:

n 单配置文件,配置简单

n 基于单个目录的.ftpaccess设置文件,类似apache的.htaccess文件

n 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式

n 强大的log功能

n 支持以非root身份运行,从而减少了安全隐患

n 支持匿名FTP功能

3vsftpd

n 是一个安全、高速、稳定的FTP服务器

n 可设定多个基于IP的虚拟FTP服务器

n 匿名FTP服务器更是十分容易

n 不执行任何外部程序,从而减少了安全隐患

n 支持虚拟用户,且支持每个虚拟用户具有独立的配置

n 可以设置为从xinetd启动,或者是独立FTP服务器两种运行方式

n 支持PAMxinetd/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服务器

2.修改/etc/vsftpd.conf文件

#vi  /etc/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_eaable=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

deny_email_enable=yes/no(no)

是否拒绝匿名用户的口令为mail地址

hide_ids=yes/no

隐藏用户和组信息

chroot_local_user=yes/no(yes)

是否允许所有的本地用户执行chroot,chroot命令是用于锁定用户主目录

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_mask=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

设置客户机的最大连接数为3

local_max_rate=50000

设置本地用户的最大传输速率为50kb/s

anon_max_rate=30000

匿名用户的最大传输速率为30kb/s

pasv_min_port=5000

pasv_max_prot=6000

设置客户端连接时的端口范围为5000-6000

listen_prot=21

设置服务器的侦听的端口为21

anon_umask=022

设置匿名用户的文件生成掩码为022

(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_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

listen=yes

listen_address=300

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服务器提供匿名访问功能,则匿名用户可以通过账号anonymousftp和口令进行登录

客户端的操作

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

listen=yes

listen_address=300

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.allows

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

   wait=no

Disable=no

Flags=rescue

Socket_type=stream

Wait=no

User=root

Server=/usr/sbin/vsftpd

Instances=100

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    //建立虚拟用户文件

添加如下内容:

ftp1               (用户名)

ftp1passwd         (密  码)

ftp2

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值