ftps简介:

FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”“FTP-over-SSL”SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。

  和sftp连接方法类似,在windows中可以使用FileZilla等传输软件来连接FTPS进行上传,下载文件,建立,删除目录等操作,FileZilla连接时,有显式和隐式TLS/SSL连接之分,连接时也有指纹提示。

 

ftps配置:

安装ftp软件包:

[root@server5 ~]# yum install -y vsftpd  安装ftp

[root@server5 ~]# chkconfig vsftpd on  让其开机启动

[root@server5 ~]# service vsftpd start   启动ftp服务

Starting vsftpd for vsftpd:                                [  OK  ]  代表启动成功

 

CA搭建:

[root@server5 ~]# cd /etc/pki/tls/   切换到tls目录

[root@server5 tls]# vim openssl.cnf  修改该文件,指定你的CA所在目录

45 dir             = /etc/pki/CA            # Where everything is kept

 

certs           = $dir/certs            # Where the issued certs are kept         发给其他的人的证书  ,该目录需要手动创建  

1.      crl_dir         = $dir/crl              # Where the issued crl are kept   ××××××证书吊销列表  不属于必须创建的目录  

2.      database        = $dir/index.txt        # database index file.       *****************存放生成证书文件索引  需要手动创建的文件  

3.      new_certs_dir   = $dir/newcerts         # default place for new certs.   ××××××××××x新生成的证书存放地  需要手动创建                                                                                                      

4.      certificate     = $dir/cacert.pem       # The CA certificate  

5.      serial          = $dir/serial           # The current serial number               ××××××序列号,需要自己建每一个证书都有一个序列号需要自己建,并指定从几开始  

6.      crlnumber       = $dir/crlnumber        # the current crl number  

7.                                              # must be commented out to leave a V1 CRL   

8.      crl             = $dir/crl.pem          # The current CRL  

9.      private_key     = $dir/private/cakey.pem# The private key  

10.  RANDFILE        = $dir/private/.rand    # private random number file  

11.  x509_extensions = usr_cert              # The extentions to add to the cert  

12.  # req_extensions = v3_req # The extensions to add to a certificate request ×××CSR与自己的匹配   

13.  [ req_distinguished_name ]  

14.  countryName                     = Country Name (2 letter code)  

15.  countryName_default             = CN                                                           #修改为CNCA的自签证书对应  

:88,90s/match/optional 8890行的match换成optional

[root@server5 tls]# cd ..

[root@server5 pki]# cd CA/

 

 [root@server5 CA]# mkdir crl certs newcerts   创建三个目录

[root@server5 CA]# touch index.txt serial 创建两个文件

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

 

创建ca私钥

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

 

创建ca证书

[root@server5 CA]# openssl req -new -key private/cakey.pem -out cacert.pem -days 3650

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:bei

Locality Name (eg, city) [Newbury]:henan

Organization Name (eg, company) [My Company Ltd]:lbb

Organizational Unit Name (eg, section) []:abcd

Common Name (eg, your name or your server's hostname) []:rootca.net.net   此处设定主机名

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:  不设

An optional company name []: 不设

[root@server5 CA]# chmod 600 private/cakey.pem  让其他用户没有权限签发证书

 

ftp的钥匙文件创建目录:

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

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

[root@server5 certs]# openssl genrsa 1024  >vsftpd.key  产生vsftpd服务的钥匙

 

产生请求文件:

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

Country Name (2 letter code) [GB]:cn

State or Province Name (full name) [Berkshire]:bei

Locality Name (eg, city) [Newbury]:henan

Organization Name (eg, company) [My Company Ltd]:abc

Organizational Unit Name (eg, section) []:bacd

Common Name (eg, your name or your server's hostname) []:ftp.zzdx.com

 

依据请求文件请求ftp证书:

[root@server5 certs]# openssl ca -in vsftpd.csr -out vsftpd.cert如下内容要回答y

Sign the certificate? [y/n]:y

 

 

1 out of 1 certificate requests certified, commit? [y/n]y

[root@server5 certs]# chmod 600 *  为了不让其他人签发证书

 

编辑vsftpd配置文件

[root@server5 certs]# vim /etc/vsftpd/vsftpd.conf  119行到126行加入下面语句

119 force_local_logins_ssl=YES   登陆使用ftps

120 force_local_data_ssl=YES  数据传输也加密

121 ssl_enable=YES   启用ssl

122 ssl_tlsv1=YES   ssl版本123

123 ssl_sslv2=YES

124 ssl_sslv3=YES

125 rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert

126 rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key

 

安装wireshark包,可以用来抓取ftp软件包:

[root@server5 ~]# yum list all |grep wireshark  查看wireshark

[root@server5 ~]# yum install -y wiershark 

 

抓取ftp数据报,其中tcp是协议,21是端口  -ni指明接口

[root@server5 ~]# tshark -ni eht0 -R "tcp.dstport eq 21 " 抓包查看能否抓到密码

[root@server5 ~]# useradd user5 创建ftp登陆用户user5

[root@server5 ~]# echo "123" |passwd --stdin user5  为其设定密码

 

使用下面的软件登陆ftp服务器

 

在站点选项里选择新建站点:

然后做如下设置:

 

user5用户登陆成功:

 

 

抓包时无法抓到密码:

1.455066 192.168.101.233 -> 192.168.101.251 TCP 3461 > 21 [SYN] Seq=0 Win=65535 Len=0 MSS=1460

  1.459185 192.168.101.233 -> 192.168.101.251 TCP 3461 > 21 [ACK] Seq=1 Ack=1 Win=65535 Len=0

  1.464533 192.168.101.233 -> 192.168.101.251 FTP Request: AUTH SSL

  1.568922 192.168.101.233 -> 192.168.101.251 FTP Request: \200\310\001\003\001\000\237\000\000\000 \000\300\024\000\300

  1.670147 192.168.101.233 -> 192.168.101.251 FTP Request: \026\003\001\000\206\020\000\000\202\000\200\tTl\335\365\261\356\360\214\307h\315\366~\245:\240\304j2{UI\305\304F}\275#\264\261\337\340F;\020u\245\205\211l\300J\037\257"|\321V\3466/\325\033 \030\343\177\371?+\355\324\365O\263$\221FY|\230;\303\377\261Ok\352"B`\370}V\336 `5

  1.857990 192.168.101.233 -> 192.168.101.251 TCP 3461 > 21 [ACK] Seq=403 Ack=906 Win=64630 Len=0

 

到此ftps实验结束。