RHCE_FTP

FTP:

(File Transfer Protocol)文件传输协议,应用层的文件共享服务,是互联网控制文件实现双向传输,同样ftp也是一个应用程序,不同系统对应的应用程序也不同,但是所遵循的是同一个协议

原理:
假设有在两台主机一台主机远程连接的服务器为文件共享服务器本地主机为客户端在两台主机正常建立连接的情况下可以通过本地主机基于ftp协议访问服务器的文件并将文件下载到本地。如果同样服务器允许客户端写入可以将本地文件上传到服务端。
文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。 Ftp. Nfs. Samba.

应用程序 架构C/S)
客户端
服务端

用户分类
ftpReal帐户(本地用户)
这类用户是指在FTP服务上拥有帐号。当这类用户登录FTP服务器的时候,其默认的主目录就是其帐号命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。
ftpGuest用户(虚拟用户)
在FTP服务器中,我们往往会给不同的部门或者某个特定的用户设置一个帐户。但是,这个账户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类帐户,在Vsftpd软件中就叫做Guest用户。拥有这类用户的帐户,只能够访问其主目录下的目录,而不得访问主目录以外的文件。
ftpAnonymous(匿名)用户
这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定帐户,但是其仍然可以进行匿名访问某些公开的资源。
在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有帐户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。

使用方式
端口
1.TCP21 命令
2.TCP20 数据
传输方式:
FTP的传输有两种方式:ASCII、二进制。
ASCII传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。
但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。
二进制传输模式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。
如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)

使用模式
1.模式
被动模式/passive/pasv方式
主动模式/standard/port方式,服务器使用20端口连接客户端
主动模式FTP:
主动模式下,FTP客户端从任意的非特殊的端口(N > 1023)连入到FTP服务器的命令端口–21
端口。然后客户端在N+1(N+1 >= 1024)端口监听,并且通过N+1(N+1 >= 1024)端口发送命令给FTP服务器。服务器会反过来连接用户本地指定的数据端口,比如20端口。
以服务器端防火墙为立足点,要支持主动模式FTP需要打开如下交互中使用到的端口:
FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)
FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)
FTP服务器数据(20)端口到客户端端口(>1023)(服务器初始化数据连接到客户端数据端口)
FTP服务器数据(20)端口接受客户端端口(>1023)(客户端发送ACK包到服务器的数据端口)

被动模式FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被
动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
FTP服务器命令(21)端口接受客户端任意端口(客户端初始连接)
FTP服务器命令(21)端口到客户端端口(>1023)(服务器响应客户端命令)
FTP服务器数据端口(>1023)接受客户端端口(>1023)(客户端初始化数据连接到服务器指定的任意端口)
FTP服务器数据端口(>1023)到客户端端口(>1023)(服务器发送ACK响应和数据到客户端的数据端口)

优缺点:
主动模式对ftp对服务器管理有利,是由FTP服务器主动与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞。而被动模式对客户端管理有效,它是企图与服务端的随机端口建立连接但是这个端口很可能又会被服务端的防火墙所拒绝。
一般做安全措施我们是在被动模式下做,由于主动模式是打开一个端口给客户端传送数据,我们做安全措施都是基于端口来做所以不太好做,一般也不建议去做。但是被动模式也是在不停地放端口,所以慢慢的ftp慢慢的在淘汰。
防火墙的意义
链接追踪/RELATED------
自动监听该端口,并且设置防火墙允许被人来访问该端口
ftp用户
匿名用户 任何人同一个ID身份登录(不需要用户验证)
虚拟用户 讲一个本地用户身份虚拟为多个身份(通过虚拟用户身份验证登录)
系统用户 本地用户(本地用户身份验证登录)

主配置文件:

vim /etc/vsftpd/vsftpd.conf

从配置文件

vim /var/ftp/pub 

主配置文件详解

anonymous_enable=YES  是否启用匿名用户                            
   宿主目录(用户家目录   /home/redhat)
local_enable=YES                  启用本地用户访问
write_enable=YES 允许写入(本地用户要实现上传就需要快开启它)
local_umask=022  默认本地用户上传普通文件权限 644  755
dirmessage_enable=YES  显示每个目录下的文件信息
xferlog_enable=YES  日志启用
connect_from_port_20=YES   主动请求的数据端口
chown_uploads=YES   所有匿名用户上传的文件所属用户将会被改成chown_username
chown_username=whoever  匿名上传的所属用户名是whoever
xferlog_file=/var/log/xferlog   启用的日志文件
xferlog_std_format=YES        
idle_session_timeout=600 空闲连接超时  
data_connection_timeout=120  数据连接超时
nopriv_user=ftpsecure   当服务器运行于最底层时使用的用户名
chroot_list_enable=YES  
  chroot_local_user=YES  所有文件列出用户, 可以切换到其他目录
chroot_list_file=/etc/vsftpd/chroot_list  
listen=NO   服务将自己监听处理listen_ipv6=YES
pam_service_name=vsftpd 设置PAM认证模块使用名称预设为vsftpd
userlist_enable=YES   
tcp_wrappers=YES   服务端和客户端访问控制策略(服务器级别的一种防火墙)

FTP的优缺点:
FTP实现的目标(优点):

 1. 促进文件的共享(计算机程序或数据) 
2. 向用户屏蔽不同主机中各种文件存储系统(File system)的细节 
3. 可靠和高效的传输数据 
4. 支持任意类型的文件传输
5.实现用户认证

缺点:

1. 密码和文件内容都使用明文传输,可能发生窃听。 
2.  因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题,通过使用被动模式的FTP,得到了很大解决。 
3. 服务器可能会被告知连接一个第三方计算机的保留端口。 
4. 此方式在需要传输文件数量很多的小文件时,性能不好
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章