“FTP服务器的工作原理”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
配置FTP服务器
 
(未显示2个用户的18个中间版本)
第1行: 第1行:
 
==FTP服务==
 
==FTP服务==
跨平台传送文件的一种方式,可实现将web站点所需的文件上传到远程得web服务器,或者从服务器下载到本地。
+
文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层
  
支持断点续传功能
 
  
根据服务的对象不同,可分为:匿名服务器与系统FTP服务器
+
根据服务的对象不同,可分为:'''匿名服务器与系统FTP服务器'''
 +
 
 +
 
 +
[[文件:linux8-1.png]]
  
 
两种连接方式:
 
两种连接方式:
  
控制连接
+
'''控制连接'''
  
 
  控制连接主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。
 
  控制连接主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。
  
数据连接
+
'''数据连接'''
  
 
  数据连接是等到传输文件时才临时建立的
 
  数据连接是等到传输文件时才临时建立的
 
  
 
== FTP的工作体系 ==
 
== FTP的工作体系 ==
  
服务器与客户机之间利用TCP的21号端口建立控制连接;利用20号端口建立数据连接;
+
'''服务器与客户机之间利用TCP的21号端口建立控制连接;利用20号端口建立数据连接''';
  
 
具体工作过程如下:
 
具体工作过程如下:
第27行: 第28行:
 
*进行相应目录操作和数据传输
 
*进行相应目录操作和数据传输
 
*断开连接
 
*断开连接
 
== FTP基本原理 ==
 
 
FTP 文件传输协议
 
 
[[文件:linux8-1.png]]
 
 
  
 
== FTP的数据传输模式 ==
 
== FTP的数据传输模式 ==
  
  
主动传输模式 (Active FTP)
+
===主动传输模式 (Active FTP)===
  
 
FTP的数据连接和控制连接的方向是相反的。 也就是说,当客户机发出请求之后,是服务器向客户端发起一个用于数据传输的连接。
 
FTP的数据连接和控制连接的方向是相反的。 也就是说,当客户机发出请求之后,是服务器向客户端发起一个用于数据传输的连接。
  
被动传输模式 (Passive FTP)
+
'''在FTP主动模式中,服务器端从20端口发起数据连接请求'''
 +
 
 +
===被动传输模式 (Passive FTP)===
  
 
FTP的数据连接和控制连接的方向是一致的。 也就是说,当客户机发出请求之后,是客户端向服务器发起一个用于数据传输的连接。
 
FTP的数据连接和控制连接的方向是一致的。 也就是说,当客户机发出请求之后,是客户端向服务器发起一个用于数据传输的连接。
  
 
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。
 
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。
 
 
  
 
== FTP服务的使用者 ==
 
== FTP服务的使用者 ==
第71行: 第65行:
  
 
   
 
   
== Linux下常见的FTP软件 ==
+
== Linux下常见的FTP软件 ==  
 
Vsftpd  (相当于WIN下的IIS)
 
 
 
Proftp    (相当于Serv-U)
 
 
 
Wu-ftp
 
 
 
 
 
 
 
== Red Hat的FTP服务器vsftpd ==
 
 
 
Red Hat 中自带了一个高安全性的FTP服务器vsftpd。
 
 
 
是一个安全、高速、稳定的FTP服务器。
 
 
 
匿名FTP服务更是十分容易。
 
 
 
匿名ftp的根目录不需要任何特殊的目录结构,或系统程序或其他系统文件。
 
 
 
不执行任何外部程序,从而减少了安全隐患
 
 
支持虚拟用户,且支持每个虚拟用户具有独立的配置。
 
 
 
可以设置为从inetd启动,或者是独立ftp服务器两种运行方式。
 
 
 
支持PAM 或 xinetd / tcp_wrappers的认证方式。
 
 
 
支持带宽限制等。
 
 
 
 
 
== vsftpd的安装和启动 ==
 
 
 
vsftpd的安装
 
 
 
检查是否安装:#rpm –qa|grep vsftpd
 
  
若安装了直接配置使用,若无安装需要用rpm包安装
+
=== Vsftpd ===
 +
Red Hat 中自带了一个高安全性的FTP服务器
  
  31  mkdir /mnt/media
+
=== Proftp ===
  32  mount -o loop /dev/cdrom /mnt/media
+
一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件
  33  ls /mnt/media
 
  34  cd /mnt/media
 
  35  ls Packages | grep vsftpd
 
  36  cp Packages/vsftpd-2.2.2-6.el6.x86_64.rpm /home
 
  37  ls /home
 
  38  cd /home
 
  39  rpm -ivh  vsftpd-2.2.2-6.el6.x86_64.rpm
 
  
vsftpd的启动和停止
+
=== Wu-ftp ===
 +
WashingtonUniversity FTP,它是一个著名的FTP服务器软件,它功能强大,能够很好地运行于众多的UNIX操作系统
  
<nowiki># service vsftpd start
+
参考文档: https://www.aliyun.com/zixun/content/2_6_518621.html
# service vsftpd stop
 
# service vsftpd restart</nowiki>
 
  
 
== vsftpd的配置文件 ==
 
== vsftpd的配置文件 ==
第148行: 第100行:
  
 
  设置不允许登录的用户名单
 
  设置不允许登录的用户名单
 +
 +
注:'''/etc/hosts.deny文件用于指定不能访问ftp服务器的用户列表'''
  
 
=== 主配置文件 /etc/vsftpd/vsftpd.conf ===
 
=== 主配置文件 /etc/vsftpd/vsftpd.conf ===
第211行: 第165行:
 
6)服务器使用独占方式启动,且无限制连接数
 
6)服务器使用独占方式启动,且无限制连接数
 
</nowiki>
 
</nowiki>
 
==配置FTP服务器==
 
===配置匿名账号===
 
编辑 /etc/vsftpd/vsftpd.conf
 
 
[root@cloud17 ~]# cat /etc/vsftpd/vsftpd.conf | grep -v ^#
 
<nowiki>anonymous_enable=YES
 
local_enable=NO
 
write_enable=YES
 
local_umask=022
 
anon_upload_enable=NO
 
anon_mkdir_write_enable=NO
 
anon_world_readable_only=NO
 
max_clients=100
 
max_per_ip=2
 
anon_max_rate=20000
 
dirmessage_enable=YES
 
xferlog_enable=YES
 
connect_from_port_20=YES
 
xferlog_std_format=YES
 
ftpd_banner=Welcome to blah FTP service.
 
listen=YES
 
 
pam_service_name=vsftpd
 
userlist_enable=YES
 
listen=YES
 
tcp_wrappers=YES</nowiki>
 
 
===配置虚拟账号===
 
配置过程如下。
 
 
创建虚拟用户数据库文件,先创建一个存放虚拟用户及其密码的文本文件/etc/virtuserdb.txt,这个文件的金属行为虚拟用户名,偶数行为相应的密码。
 
<nowiki>stu01
 
stu01
 
stu02
 
stu02
 
stu03
 
stu03</nowiki>
 
 
执行命令:rpm –qa |grep db4-utils 看看所需的软件db4-utils.
 
 
如果没有安装,执行以下命令进行安装:
 
 
  64  mount -o loop /dev/cdrom /mnt/media
 
  65  ls /mnt/media
 
  67  cd /mnt/media
 
  68  ls Packages | grep db4
 
  76  cp Packages/db4-utils-4.7.25-16.el6.x86_64.rpm  /home
 
  77  cd /home
 
  78  rpm -ivh db4-utils-4.7.25-16.el6.x86_64.rpm
 
 
然后执行如下命令,生成虚拟用户数据库文件,并改变虚拟用户数据库文件的权限。
 
 
  81  db_load -T -t  hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
 
  82  chmod 600  /etc/vsftpd/vftpuser.db
 
 
 
==== 编辑vsftpd的PAM认证文件 ====
 
 
 
将里面其他的都注释掉,添加下面这两行:
 
 
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
 
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
 
 
====创建虚拟用户对应的真实账号及其所登录的目录,并设置相应的权限====
 
useradd -d /var/virtuser virtuser
 
chmod 744 /var/virtuser
 
====使stu03用户具有读写权限====
 
87  mkdir /etc/vsftpd/vsftpd_user_conf
 
 
88  cd /etc/vsftpd/vsftpd_user_conf
 
 
89  vi stu03
 
 
<nowiki>write_enable=YES
 
guest_username=virtuser
 
anon_world_readable_only=NO
 
anon_upload_enable=YES
 
anon_mkdir_write_enable=YES
 
anon_other_write_enable=YES</nowiki>
 
 
====编辑/etc/vsftpd/vsftpd.conf,在最后修改配置内容如下:====
 
 
<nowiki>guest_enable=YES
 
guest_username=virtuser
 
anon_world_readable_only=NO
 
user_config_dir=/etc/vsftpd/vsftpd_user_conf</nowiki>
 
 
同时修改anonymous_enable=NO
 
 
====保存后重启vsftpd 服务器====
 
service vsftpd restart
 
====验证====
 
案例:
 
          假设你是一个网络管理员,以往你们公司的服务器是用WINDOWS系统做的,而你对LINUX系统的操作却非常的熟练,你现在打算把服务器的系统改为LINUX,其中服务中有一个服务FTP服务尤其重要,它作为一台文件服务器应用是非常的广范,你重做服务器后第一项工作就是利用vsftpd配置一台支持匿名用户和本地用户登录为公司里的员工所使用,若给你以下方案,你该如何去实现:
 
 
 
支持本地用户和虚拟用户登录,不允许匿名用户登录
 
允许本地用户任意写入
 
锁定本地用户的用户主目录
 
建立虚拟用户vftp1,vftp2都对应本地用户guest,且虚拟用户在用户主目录中可以写入,但不能删除
 
设置客户端连接时的端口为5000-6000
 
最大空闲会话时间长度为600秒
 
 
设置空闲数据连接的中断时间为200秒
 
设置客户端空闲时的自动中断时间为100秒和激活连接的时间为30秒
 
本地用户的最大传输速率为2MB/s
 
使用独占启动方式,侦听192.168.5.1接口的21号端口
 
设置服务器的并发连接总数为200
 
每个客户机的并发连接总量为5
 
允许192.168.5.0/24网段内的主机访问
 
 
返回 [[Linux基础]]
 

2019年7月1日 (一) 08:57的最新版本

FTP服务

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层


根据服务的对象不同,可分为:匿名服务器与系统FTP服务器


Linux8-1.png

两种连接方式:

控制连接

控制连接主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应。

数据连接

数据连接是等到传输文件时才临时建立的

FTP的工作体系

服务器与客户机之间利用TCP的21号端口建立控制连接;利用20号端口建立数据连接

具体工作过程如下:

  • 客户机启动客户端程序,请求建立服务器的连接
  • 服务器对客户机进行身份验证
  • 进行相应目录操作和数据传输
  • 断开连接

FTP的数据传输模式

主动传输模式 (Active FTP)

FTP的数据连接和控制连接的方向是相反的。 也就是说,当客户机发出请求之后,是服务器向客户端发起一个用于数据传输的连接。

在FTP主动模式中,服务器端从20端口发起数据连接请求

被动传输模式 (Passive FTP)

FTP的数据连接和控制连接的方向是一致的。 也就是说,当客户机发出请求之后,是客户端向服务器发起一个用于数据传输的连接。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况。

FTP服务的使用者

本地用户(real用户)

本地用户既可以登录Shell,又可以FTP登录。
本地用户可以通过输入自己的账号和口令来进行授权登录。
当授权访问的本地用户登录系统后,其登录目录为用户自己的家目录($HOME)。

虚拟用户(guest用户)

如果用户在远程FTP服务器上拥有账号, 且此账号只能用于文件传输服务,则称此用户为虚拟用户或Guest用户。
虚拟用户可以通过输入自己的账号和口令来进行授权登录。
当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录。
eg:adduser  -s /sbin/nologin  -g  ftp  username

匿名用户(anonymous用户)

如果用户在远程FTP服务器上没有账号,则称此用户为匿名用户。
若FTP服务器提供匿名访问功能,则匿名用户可以通过输入账号(anonmous或ftp) 和口令(用户自己的E-Mail地址)来进行登录。
当匿名用户登录系统后,其登录目录为匿名FTP服务器的根目录(/var/ftp)。


Linux下常见的FTP软件

Vsftpd

Red Hat 中自带了一个高安全性的FTP服务器

Proftp

一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件

Wu-ftp

WashingtonUniversity FTP,它是一个著名的FTP服务器软件,它功能强大,能够很好地运行于众多的UNIX操作系统

参考文档: https://www.aliyun.com/zixun/content/2_6_518621.html

vsftpd的配置文件

vsftpd的主配置文件

/etc/vsftpd/vsftpd.conf

vsftpd的PAM配置文件

/etc/pam.d/vsftpd(用户身份验证配置文件)

vsftpd的用户访问控制配置文件

/etc/vsftpd.ftpusers
指定哪些用户不能访问FTP服务器
/etc/vsftpd.user_list
文件中指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。


/etc/vsftpd.ftpusers

设置不允许登录的用户名单

注:/etc/hosts.deny文件用于指定不能访问ftp服务器的用户列表

主配置文件 /etc/vsftpd/vsftpd.conf

#vi  /etc/vsftpd/vsftpd.conf
功能:设置FTP服务器相关选项
文件格式:
		#说明语句
         ……
         配置选项
         ……


默认配置:

anonymous_enable=YES
			//允许匿名用户登录
local_enable= YES
			//允许本地用户登录
write_enable= YES
			//全局写设置
guest_enable=yes/no    
                     //是否允许虚拟用户登录;

   注:虚拟用户只能登录FTP服务器

local_mask=022
			//设置本地用户的文件生成掩码为			  022,默认值为077
dirmessage_enable= YES
		//设置切换到目录时显示.message	  	  隐含文件的内容
xferlog_enable= YES
		//激活上传和下载日志

connect_from_port_20= YES
		//启用FTP数据端口连接
pam_service_name=vsftpd
			//设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下
userlist_enable= YES
			//决定vsftpd.user_list文件是否有效
userlist_deny= YES
			//拒绝vsftpd.user_list文件中的用户

访问服务器
listen= YES
			//是否使用独占启动方式
tcp_wrappers= YES
			//使用tcp_wrappers作为主机访问控制方式
关于被动模式的数据连接
pasv_enable=Yes/NO(默认值为yes,处于被动模式下)

设置用户登陆后所在目录
local_root=/var/ftp(设置本地用户登陆所在目录,默认为该用户的用户主目录)
anon_root=/var/ftp(匿名用户登陆所在目录)

默认配置文件功能说明:

1)允许匿名用户登录/var/ftp,但不能离开主目录
2)允许本地用户登录,且可离开主目录
3)匿名用户只能下载,不能上传
4)本地用户允许上传/下载
5)写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录
6)服务器使用独占方式启动,且无限制连接数