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 #修改为CN和CA的自签证书对应
:88,90s/match/optional 将88到90行的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版本1、2、3
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实验结束。