FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。
它和sftp连接方法类似,在windows中可以使用FileZilla等传输软件来连接FTPS进行上传,下载文件,建立,删除目录等操作,在FileZilla连接时,有显式和隐式TLS/SSL连接之分,连接时也有指纹提示。
实验设备:Linux 5。4 (内核版本 2.6.18-164.e15)
Wireshark抓包工具(Linux 5.4 光盘中自带)
FTP软件FlashFXP-v4.0.1548
实验环境要求:
1.关闭防火墙(包括SELINUX)
2.挂载光盘
3.创建本地yum仓库
实验步骤:
一、安装有关组件
1.安装ftp服务
[root@server ~]# yum install vsftpd
2.安装抓包工具
[root@server ~]# yum install wireshark
3.启动ftp服务
[root@server vsftpd]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@server vsftpd]#
二、测试
1.创建新用户
[root@server ~]# useradd user1
[root@server ~]# passwd user1
Changing password for user user1.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@server ~]#
2.开启抓包工具
首先查看新安装的抓包工具的指令
[root@server ~]# rpm -ql wireshark |less
3.客户端登录
3.查看捕获的数据包
三、创建CA
1.修改ssl配置文件
[root@server tls]# pwd
/etc/pki/tls
[root@server tls]# vim openssl.cnf
2.创建有关目录和文件
[root@server CA]# pwd
/etc/pki/CA
[root@server CA]# mkdir certs newcerts
[root@server CA]# touch index.txt serial
3.修改文件
[root@server CA]# echo "01">serial
4.产生私钥
[root@server CA]# pwd
/etc/pki/CA
[root@server CA]# openssl genrsa 1024 >private/cakey.pem
Generating RSA private key, 1024 bit long modulus
...........................++++++
.++++++
e is 65537 (0x10001)
[root@server CA]#
5.为了安全,将私钥设置权限
[root@server private]# pwd
/etc/pki/CA/private
[root@server private]# chmod 600 cakey.pem
[root@server private]#
6.将证书颁发给自己
[root@server CA]# pwd
/etc/pki/CA
[root@server CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
四、申领证书
1.产生私钥
[root@server vsftpd]# pwd
/etc/vsftpd
[root@server vsftpd]# mkdir certs (创建目录)
[root@server vsftpd]# cd certs/
[root@server certs]# pwd
/etc/vsftpd/certs
[root@server certs]# openssl genrsa 1024 >vsftpd.key (产生私钥)
Generating RSA private key, 1024 bit long modulus
.......++++++
..................++++++
e is 65537 (0x10001)
2.申请证书
[root@server certs]# openssl req -new -key vsftpd.key -out vsftpd.csr
3.CA签发证书
[root@server certs]# pwd
/etc/vsftpd/certs
[root@server certs]# openssl ca -in vsftpd.csr -out vsftpd.cert
4.为了安全性,修改这些文件的权限
[root@server certs]# pwd
/etc/vsftpd/certs
[root@server certs]# ll
total 12
-rw-r--r-- 1 root root 3101 Mar 20 01:46 vsftpd.cert
-rw-r--r-- 1 root root 655 Mar 20 01:45 vsftpd.csr
-rw-r--r-- 1 root root 887 Mar 20 01:43 vsftpd.key
[root@server certs]# chmod 600 *
五、修改vsftpd的有关配置文件
1.修改vsftpd的配置文件
[root@server vsftpd]# pwd
/etc/vsftpd
[root@server vsftpd]# vim vsftpd.conf
2.重启服务
[root@server ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
六、再次测试
1.开启抓包工具
[root@server ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
2.在客户端上使用客户端工具Flash FXP 登录ftp
3.查看捕获到的信息
七、其它
对比加密之前和加密之后的相关信息。
加密之前
[root@server ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
0.000000 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=0 TSV=0 TSER=0
0.000023 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [ACK] Seq=1 Ack=1 Win=8192 Len=0
0.150846 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [ACK] Seq=1 Ack=21 Win=8172 Len=0
2.753635 192.168.10.238 -> 192.168.10.1 FTP Request: USER user1
2.866664 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [ACK] Seq=13 Ack=55 Win=8138 Len=0
4.624956 192.168.10.238 -> 192.168.10.1 FTP Request: PASS 123
22.077718 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [ACK] Seq=23 Ack=78 Win=8115 Len=0
31.822434 192.168.10.238 -> 192.168.10.1 FTP Request: QUIT
31.824755 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [FIN, ACK] Seq=29 Ack=92 Win=8101 Len=0
31.828464 192.168.10.238 -> 192.168.10.1 TCP 2568 > 21 [ACK] Seq=30 Ack=93 Win=8101 Len=0
加密之后
[root@server ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
35.712386 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
35.715893 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=1 Ack=1 Win=64240 Len=0
35.773589 192.168.10.38 -> 192.168.10.1 FTP Request: AUTH SSL
35.832823 192.168.10.38 -> 192.168.10.1 FTP Request: \200\310\001\003\001\000\237\000\000\000 \000\300\024\000\300
35.841104 192.168.10.38 -> 192.168.10.1 FTP Request: \026\003\001\000\206\020\000\000\202\000\200\210\221Qx\216\307T\366IF\233\346ux\311!\304\327\177\241\335\212-\230\247.\020\274\276\371\037\2636\017\332\bW\263
35.966514 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=403 Ack=906 Win=63335 Len=0
37.673583 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030abr>?\347#D\307S\241\000\253\3710\203\316\304V\017\022F\177\341\027\003\001\000 \373\245\304by\314\277\267z\221\335\314\334\233\314A\243A\240a\332Gv\266\315nO\240\343\230\001\206
37.676359 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\262H\177\233'\262y\347\t\263X\205\253:\360{"k\001\370O\226\326T\027\003\001\000(\364}\037\215\351
37.678806 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030~\262\265\a\f\356\224m-aR\233\203\355\210= \023\344V$I_L\027\003\001\000 \027)\250\374}\367\207T\022\237|%:X\335*l\344\243\376\215\262\346\230\346S{\252\355s\360o
49.414541 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030?1I\020\337\330\332\352\002c\2431\263SR R\345\236\227\f0\356r\027\003\001\000 \237\241:M\277\365\021A\242\201XJjh\227Y\204\035K\3432\325\203\326Z\a\v~)\273\250<
49.417874 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\274$\3373y\356ZA\337\210\262\001\330\027\215X|,;6\361\005\357\305\027\003\001\000 \373\263X\374\255\326\337\a\246\207\237+\200\372\217]\223A\337\246T\230\004\214C\177\364eW\243{\001
49.418902 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1200 Win=63041 Len=0
49.419525 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1274 Win=62967 Len=0
49.420280 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1348 Win=62893 Len=0
49.420784 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1422 Win=62819 Len=0
49.422015 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1504 Win=64240 Len=0
49.422586 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=741 Ack=1578 Win=64166 Len=0
49.446569 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\a`V\371\232\313v2Z\2364a\334\265\314\210\303\2778\271*\225\375\324\027\003\001\000 @\214+\344\302yjNy\232l{/\215\345\f\201\003~\240\206 ,\373f)\376\354%'\313\375
49.457544 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\020\005\005\232\326,}\v\257\303U\254m\224\275\232n\302\312\367\3445i\216\027\003\001\000 \272U\225<\361p\001\267\346\0007\372\005\300\316\260\300\224\273] \260\001\260\307\a\024\f(\001%\306
49.461080 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\313G\230\206\333\246\325\005\267Q\272Q;\376\026\373t\304\a\270\200\274\341\232\027\003\001\000 '\371\233\t\300\252#^\377),)\323\017\264\336\336nI\317\323\301\336\257\340\320\374\221&\351\003\225
49.464790 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\0302\235\307\317R\334\254g2\204P\276\317\356\327\265E\354\037\246X\3353\245\027\003\001\000 \025\3601\210hy\263\335\215\363-P\267$=\353\326\006\272\001\b\005\316\376:\363\375\021\212\204\256V
49.471918 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\251\331~#\021-\346\021\367\322\006\322r\310w\331\3659'\024\260\b5\367\027\003\001\000 Dl\375<\330\300[\356\312\306\2258\22072\177\235m}\364\a\256l\261\343\222[\207\346\221\302\254
49.645797 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=1071 Ack=1920 Win=63824 Len=0
49.677089 192.168.10.38 -> 192.168.10.1 FTP Request: \027\003\001\000\030\372\003%\227a\343x\006\272sP\214F\331K{V\022\331\350d\233\270\376\027\003\001\000(=\377F\fn^n\276\212$\350K;\213\2625M\366\273\017\232`\301\315<\321
49.847800 192.168.10.38 -> 192.168.10.1 TCP 1786 > 21 [ACK] Seq=1145 Ack=2026 Win=63718 Len=0