主动方式:

clip_image002

1.客户端从自己的任意一个非特权端口x (x>1024)向ftp服务器的命令端口21 发送syn请求。并发送active 和port x+1指令,向ftp服务器指明使用主动方式,并告诉ftp服务器自己的端口为x+1 .

2.服务器端收到syn请求后,从自己的21端口发送syn+ack 回应。

3.然后ftp服务器主动使用自己的20 端口向客户端的x+1端口发送syn请求。

4.客户端 的x+1端口向ftp服务器的20 端口做出回应

5.ftp客户端的x+1端口和ftp 服务器端的20 端口开始传递数据。

被动方式:

clip_image004

1. .客户端从自己的任意一个非特权端口x (x>1024)向ftp服务器的命令端口21 发送syn请求。并发送pasv指令,告诉ftp服务器采用被动方式。

2.ftp服务器收到syn请求后,用21端口向客户端的x端口做出回应。并发送port y告诉ftp客户端自己的接口y.

3.客户端使用自己的接口x+1来向服务器端的y端口发送连接请求。

4.y端口做出回应。

5.然后两端通过x+ 1接口和 y接口进行数据传输。

FTP服务器的搭建

1.新建挂载点,挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

2.安装vdftpd 软件包

[root@localhost ~]# rpm -ivh /mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm

3.打开vdftpd的配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES 允许匿名用户登录

local_enable=YES 允许本地用户登录

write_enable=YES 站点可以上传文件(还需要修改本地权限)

local_umask=022 本地账户上传文件或目录的权限屏蔽码

anon_upload_enable=YES 匿名用户可以上传文件

anon_mkdir_write_enable=YES 匿名用户可以创建文件夹

anon_other_write_enable =YES 匿名用户别的写权限(重命名、删除配合sticky位)

匿名用户上传的文件所有者为ftp,权限为600,目录权限为700,其他用户无法读取该文件 ,进而将无法下载文件。只需给上传的文件添加read权限即可下载。

或者修改anon_umask=073 即可

dirmessage_enable=YES 切换目录时,信息提示。在目录下创建.message文件

xferlog_enable=YES 开启日志功能

xferlog_file=/var/log/xferlog 日志文件位置

xferlog_std_format=YES 日志格式为标准

idle_session_timeout=600 会话超时

data_connection_timeout=120 连接超时

deny_email_enable=YES 拒绝使用邮箱作为密码登陆

banned_email_file=/etc/vsftpd/banned_emails 该文件中的邮箱将无法作为密码登录

listen=YES 表明vsftpd 为独立守护进程

chroot_list中的账户将被锁定:

chroot_list_enable=YES

#chroot_local_user=YES

chroot_list_file=/etc/vsftpd/chroot_list

chroot_list中的账户不被锁定,文件外的账户被锁定

chroot_list_enable=YES

chroot_local_user=YES

chroot_list_file=/etc/vsftpd/chroot_list

文件内的账户被锁定

chroot_list_enable=YES

chroot_local_user=NO

chroot_list_file=/etc/vsftpd/chroot_list

userlist_enable=YES

userlist_deny=YES (默认)

ftpusers中的用户输入密码后登录失败

user_list中用户在输入密码前禁止登录

userlist_enable=YES

userlist_deny=NO

只有在user_list中用户在输入密码后可以登录

ftpusers 中的和不在ftpsuers中的用户依旧不可以登录

tcp_wrappers=YES

支持简易防火墙 /etc/hosts.allow /etc/hosts.deny

ldd /usr/sbin/vsftpd 查看动态链接库是否支持tcp_wrappers

/etc/hosts.deny /etc/hosts.allow 语法:

服务名:来源:动作

在/etc/hosts.deny中设置拒绝所有

all:all:deny

在/etc/hosts.allow中设置只允许特定的ip访问ftp服务

vsftpd:192.168.101.1:allow

在/etc/hosts.allow中设置只禁止特定的ip访问ftp服务

vsftpd:192.168.101.1:deny

vsftpd:all:allow

windows ftp 命令:

dir 列出远程目录下的文件

!dir 列出本地目录下的文件

cd 远程切换目录

lcd 本地切换目录

get 下载

mget 一次下载多个:mget f1*

put 上传

mput 一次上传多个

bin 设置类型为二进制

ascii 设置类型为ascii

FTPS

ftp 采用明文传输,在网络传输过程中容易被抓包抓到有价值信息

1.安装wireshark 抓包工具

[root@localhost Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm

[root@localhost Server]# rpm -ivh wireshark-1.0.8-1.el5_3.1.i386.rpm

2. user1 登录ftp服务器

[root@localhost ~]# tshark -ni eth0 -R "tcp.dstport eq 21"

clip_image006

3.搭建ca证书服务器

[root@localhost ~]# vim /etc/pki/tls/openssl.cnf

clip_image008

clip_image010

4.创建三个目录,两个文件

[root@localhost ~]# cd /etc/pki/CA/

[root@localhost CA]# mkdir certs newcerts crl

[root@localhost CA]# touch index.txt serial

[root@localhost CA]# echo "01" >serial

5.CA服务器产生自己的证书

[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem

6.CA服务器产生证书

[root@localhost CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem

7.ftp服务器产生自己的私钥

[root@localhost CA]# mkdir /etc/vsftpd/certs

[root@localhost CA]# cd /etc/vsftpd/certs/

[root@localhost certs]# openssl genrsa 1024 >vsftpd.key

8.ftp服务器产生请求

[root@localhost certs]# openssl req -key vsftpd.key -out vsftpd.csr

9.CA 服务器颁发证书

[root@localhost certs]# openssl ca -in vsftpd.csr -out vsftpd.cert

10.修改CA服务器的证书及私钥的权限

[root@localhost certs]# cd /etc/pki/CA/

[root@localhost CA]# chmod 600 private/cakey.pem

[root@localhost CA]# chmod 600 cacert.pem

11.ftp服务器的证书及私钥文件的权限

[root@localhost certs]# chmod 600 *

12.当用户通过ftps方式访问ftp服务器是,要调用ftp服务器的证书。所以要在ftp的配置文件中说明只能是及私钥位置

rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert ftp服务器的证书位置

rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key ftp服务器的私钥位置

ssl_enable=YES 开启ssl加密功能

ssl_tlsv1=YES 可以使用ssl版本1

ssl_sslv2=YES 可以使用ssl版本2

ssl_sslv3=YES 可以使用ssl版本3

force_local_logins_ssl=YES 强制本地用户使用ssl加密登录

13.保存退出,重启ftp服务器。

[root@localhost CA]# service vsftpd restart

关闭 vsftpd: [确定]

为 vsftpd 启动 vsftpd: [确定]

14.使用tshark抓包

[root@localhost ~]# tshark -ni eth0 -R "tcp.dstport eq 21"

15.配置ftp客户端软件

新建ftp站点

clip_image012

选择连接类型为ssl加密

clip_image013

clip_image015

clip_image017