FTP简介
FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。尽管WorldWideWeb(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把文件从客户机复制到服务器上的一种途径。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件多是命令行操作,有了像CUTEFTP这样的图形界面软件,使用FTP传输变得方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器
FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。
FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误
优点:
1.促进文件的共享(计算机程序或数据)
2.鼓励间接或者隐式的使用远程计算机
3.向用户屏蔽不同主机中各种文件存储系统的细节
4.可靠和高效的传输数据
缺点:
1.密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
2.因为必须开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题通过使用被动模式的FTP得到了很大解决。
3.服务器可能会被告知连接一个第三方计算机的保留端口。
FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。
FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。(选择主动或者被动决定权是由客户端决定的)
一个主动模式的FTP连接建立要遵循以下步骤:
1.客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。
2.客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。
3.服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。
4.客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。
被动模式FTP:
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORTP命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1.从任何大于1024的端口到服务器的21端口(客户端的初始化连接)
2.服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3.从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4.服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
安全ftps
抓包工具:rpm-ivhlibsmi-0.4.5-2.el5.i386.rpm库文件
抓包主程序wireshark-1.0.8-1.el5_3.1.i386.rpm
利用抓包工具,很容易会把用户的账号密码给抓出来
CA的产生
1.cd/etc/pki
2.vimtls/openssl.cnf
3.45dir=/etc/pki/CA
4.88,90s/match/optional更改选项,这些地区身份都可以颁发
5.图2
6.cdCA
7.[root@localhostCA]#mkdircrlcertsnewcerts
8.[root@localhostCA]#touchindex.txtserial
9.[root@localhostCA]#echo"01">serial序列号
10.[root@localhostCA]#opensslgenrsa1024>private/cakey.pem
11.[root@localhostCA]#chmod600private/*
12.[root@localhostCA]#opensslreq-new-keyprivate/cakey.pem-x509-outcacert.pem自己给自己颁发证书
13.为服务器颁发证书
14.[root@localhostCA]#mkdir-pv/etc/vsftpd/certs
15.[root@localhostCA]#cd/etc/vsftpd/certs/
16.[root@localhostcerts]#opensslgenrsa1024>vsftpd.key
17.[root@localhostcerts]#opensslreq-new-keyvsftpd.key-outvsftpd.req
18.[root@localhostcerts]#opensslca-invsftpd.req-outvsftpd.cert
19.[root@localhostcerts]#vim/etc/vsftpd/vsftpd.conf证书的捆绑
20.图3
21.serviceftpdrestart
22.利用flashfxp(参考百度搜索)
23.图7
24.图8
25.图9
26.图10
ftp配置文档选项
12.anonymous_enable=YES支持匿名访问
15local_enable=YES本地账号
27#anon_upload_enable=YES匿名账号支持上传
27anon_upload_enable=YES支持上传文件
31#anon_mkdir_write_enable=YES匿名账号实现创建目录
Anon_umask设置UMASK的值
anon_other_write_enable用户支持写权限(命名删除)
36dirmessage_enable=YES说明文件,提示
40xferlog_enable=YES启用日志文件
53#xferlog_file=/var/log/xferlog日志文件存放地址
xferlog_std_format=YES日志的格式
#idle_session_timeout=60010分钟自动断开
data_connection_timeout=120连接超时间
#ascii_upload_enable=YES是否使用ascii来传递
ftpd_banner=WelcometoblahFTPservice连接FTP提示信息
90#deny_email_enable=YES邮箱的地址作为匿名登陆的密码
#banned_email_file=/etc/vsftpd/banned_emails存放邮箱地址的文件
chroot_list_enable=YES对本地账号登陆进行限制,限制于某个文件下,无法去访问其他的目录文件
chroot_list_file=/etc/vsftpd/chroot_list限制某个用户的列表
chroot_local_user=YES如果把文件存放到文件列表里面的用户则可以切换根目录,否则
pam_service_name=vsftpdpam支持验证模块
userlist_enable=YES存放在这个列表里面的账号信息则可以登陆验证账号,是否打开密码不发布网络
userlist_deny=NO放在在这个列表的账号,直接拒绝登陆
tcp_wrappers=YES来源控制
vim/etc/hosts.allow或者/etc/hosts.deny