热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

vsftpd服务器简介与配置

教学内容:nFTP的基本概念nFTP服务器的配置nFTP客户端的操作n配置案例教学目标:n了解FTP服务器作用和传输模式n熟悉FTP的工作体系n掌握FTP服务器的配置和客户端的操作教学重点:nFTP服务器的配置nFTP客户端的操作和配置案例教学难点:

教学内容:

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软件

1wu-ftp

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

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

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

n       可以支持匿名FTP服务

n       可以支持虚拟FTP主机

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

2proftp

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       支持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

 

 


推荐阅读
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文深入探讨了 PHP 实现计划任务的方法,包括其原理、具体实现方式以及在不同操作系统中的应用。通过详细示例和代码片段,帮助开发者理解和掌握如何高效地设置和管理定时任务。 ... [详细]
  • 本文介绍如何配置SecureCRT以正确显示Linux终端的颜色,并解决中文显示问题。通过简单的步骤设置,可以显著提升使用体验。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文详细介绍了 Linux 系统中用户、组和文件权限的设置方法,包括基本权限(读、写、执行)、特殊权限(SUID、SGID、Sticky Bit)以及相关配置文件的使用。 ... [详细]
author-avatar
蔡麟松_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有