天天看點

Linux下FTP伺服器應用之FTPS(FTP+SSL)

 <b>FTPS</b><b>(</b><b>FTP+SSL</b><b>)</b>

   ftps是一種多傳輸協定,相當于加密版的FTP。當你在FTP伺服器上收發檔案的時候,你面臨兩個風險。第一個風險是在上載檔案的時候為檔案加密。第二個風險是,這些檔案在你等待接收方下載下傳的時候将停留在FTP伺服器上,這時你如何保證這些檔案的安全。你的第二個選擇(建立一個支援SSL的FTP伺服器)能夠讓你的主機使用一個FTPS連接配接上載這些檔案。這包括使用一個在FTP協定下面的SSL層加密控制和資料通道。一種替代FTPS的協定是安全檔案傳輸協定(SFTP)。這個協定使用SSH檔案傳輸協定加密從客戶機到伺服器的FTP連接配接。

FTPS是在安全套接層使用标準的FTP協定和指令的一種增強型TFP協定,為FTP協定和資料通道增加了SSL安全功能。FTPS也稱作“FTP-SSL”和“FTP-over-SSL”。SSL是一個在客戶機和具有SSL功能的伺服器之間的安全連接配接中對資料進行加密和解密的協定。

和sftp連接配接方法類似,在windows中可以使用FileZilla等傳輸軟體來連接配接FTPS進行上傳,下載下傳檔案,建立,删除目錄等操作,在FileZilla連接配接時,有顯式和隐式TLS/SSL連接配接之分,連接配接時也有指紋提示。

安全:ftps ftp+ssl

<b>準備工作:</b>

<b>準備一:關閉防火牆;</b>

<b>準備二:挂載CD光牒;</b>

<b>準備三:建構本地yum伺服器。</b>

<b>FTP+SSL</b><b>配置詳細過程:</b>

<b>①.安裝配置FTP伺服器和抓包工具:</b><b>(ftp:192.168.101.210)</b>

[root@ftp ~]# yum list all |grep vsftpd

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

[root@ftp ~]# yum list all |grep wireshark

[root@ftp ~]# yum install -y wireshark

[root@ftp ~]# useradd user1

[root@ftp ~]# echo "123" |passwd --stdin user1

[root@ftp ~]# service vsftpd start

Starting vsftpd for vsftpd:                                [ OK ]

<a target="_blank" href="http://blog.51cto.com/attachment/201203/180810930.png"></a>

<b>[root@ftp ~]# tshark -ni eth0 -R "tcp.dstport eq 21"</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/180823432.png"></a>

<b>②.配置本地CA憑證伺服器:</b>

[root@ftp ~]# cd /etc/pki/

[root@ftp pki]# ll

[root@ftp pki]# vim tls/openssl.cnf

<b>45 dir             = /etc/pki/CA</b>

<b>88 countryName             = optional</b>

<b>89 stateOrProvinceName     = optional</b>

<b>90 organizationName        = optional</b>

[root@ftp pki]# cd CA/

[root@ftp CA]# mkdir certs newcerts crl

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

[root@ftp CA]# echo "01" &gt;serial

[root@ftp CA]# ll

[root@ftp CA]# openssl genrsa 1024 &gt; private/cakey.pem

<b>Generating RSA private key, 1024 bit long modulus</b>

<b>...........++++++</b>

<b>....++++++</b>

<b>e is 65537 (0x10001)</b>

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

[root@ftp CA]# ll private/cakey.pem

<b>-rw------- 1 root root 887 Feb 10 23:22 private/cakey.pem</b>

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

<b>You are about to be asked to enter information that will be incorporated</b>

<b>into your certificate request.</b>

<b>What you are about to enter is what is called a Distinguished Name or a DN.</b>

<b>There are quite a few fields but you can leave some blank</b>

<b>For some fields there will be a default value,</b>

<b>If you enter '.', the field will be left blank.</b>

<b>-----</b>

<b>Country Name (2 letter code) [GB]:cn</b>

<b>State or Province Name (full name) [Berkshire]:henan</b>

<b>Locality Name (eg, city) [Newbury]:zhengzhou</b>

<b>Organization Name (eg, company) [My Company Ltd]:junjie</b>

<b>Organizational Unit Name (eg, section) []:soft</b>

<b>Common Name (eg, your name or your server's hostname) []:ca.junjie.com</b>

<b>Email Address []:[email protected]</b>

[root@ftp CA]#ll

<b>③.為ftp伺服器建立證書:</b>

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

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

[root@ftp certs]# <b>openssl genrsa 1024 &gt;vsftpd.key</b>

<b>...++++++</b>

[root@ftp certs]# <b>openssl req -new -key vsftpd.key -out vsftpd.csr</b>

<b>Organizational Unit Name (eg, section) []:ftp</b>

<b>Common Name (eg, your name or your server's hostname) []:ftp.junjie.com</b>

<b>Email Address []:[email protected]</b>

<b> </b>

<b>Please enter the following 'extra' attributes</b>

<b>to be sent with your certificate request</b>

<b>A challenge password []:</b>

<b>An optional company name []:</b>

[root@ftp certs]# <b>openssl ca -in vsftpd.csr -out vsftpd.crt</b>

<b>Using configuration from /etc/pki/tls/openssl.cnf</b>

<b>Check that the request matches the signature</b>

<b>Signature ok</b>

<b>Certificate Details:</b>

<b>        Serial Number: 1 (0x1)</b>

<b>        Validity</b>

<b>            Not Before: Feb 10 15:48:55 2012 GMT</b>

<b>            Not After : Feb 9 15:48:55 2013 GMT</b>

<b>        Subject:</b>

<b>            countryName               = cn</b>

<b>            stateOrProvinceName       = henan</b>

<b>            organizationName          = junjie</b>

<b>            organizationalUnitName    = ftp</b>

<b>            commonName                = ftp.junjie.com</b>

<b>            emailAddress              = [email protected]</b>

<b>        X509v3 extensions:</b>

<b>            X509v3 Basic Constraints:</b>

<b>                CA:FALSE</b>

<b>            Netscape Comment:</b>

<b>                OpenSSL Generated Certificate</b>

<b>            X509v3 Subject Key Identifier:</b>

<b>                33:C5:01:33:A5:CF:42:9F:24:A9:0D:E9:41:8E:26:C3:1B:7B:18:11</b>

<b>            X509v3 Authority Key Identifier:</b>

<b>                keyid:50:D1:A8:0A:1F:B7:CD:49:94:69:E3:70:E9:AE:93:73:2C:94:66:AC</b>

<b>Certificate is to be certified until Feb 9 15:48:55 2013 GMT (365 days)</b>

<b>Sign the certificate? [y/n]:y</b>

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

<b>Write out database with 1 new entries</b>

<b>Data Base Updated</b>

[root@ftp certs]# ll

[root@ftp certs]# chmod 600 *

<b>④.使ftp服務應用證書:</b>

[root@ftp certs]# cd /etc/vsftpd/            

[root@ftp vsftpd]# vim vsftpd.conf         #增加以下内容

<b>118 rsa_cert_file=/etc/vsftpd/certs/vsftpd.crt</b>

<b>119 rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key</b>

<b>120 force_local_data_ssl=YES</b>

<b>121 force_local_logins_ssl=YES</b>

<b>122 ssl_enable=YES</b>

<b>123 ssl_sslv2=YES</b>

<b>124 ssl_sslv3=YES</b>

<b>125 ssl_tlsv1=YES</b>

[root@ftp vsftpd]# service vsftpd restart

Shutting down vsftpd:                                      [ OK ]

<b>⑤用戶端測試(已加密傳輸):</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/180902785.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/180916113.png"></a>

從上面看出證書名稱出現問題,但可是可以使用!選擇接收一次!

<a target="_blank" href="http://blog.51cto.com/attachment/201203/180929183.png"></a>

<b>該次登入抓包内容如下所示:傳輸已經經過加密!</b>

<a target="_blank" href="http://blog.51cto.com/attachment/201203/181005903.png"></a>

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

Running as user "root" and group "root". This could be dangerous.

Capturing on eth0

 9.742109 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=2

 9.742144 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=1 Ack=1 Win=65700 Len=0

 9.747458 192.168.101.113 -&gt; 192.168.101.210 FTP Request: <b>AUTH SSL</b>

 9.755605 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \200\310\001\003\001\000\237\000\000\000 \000\300\024\000\300

 9.758795 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \026\003\001\000\206\020\000\000\202\000\200n\257\315\204\324o

 9.778662 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\215\325t\357\277\001\376FZ\243D\373\003\367\231\207Q\324\003Q}/\335\025\027\003\001\000 \f\355b\270\355\325\020[\372\302s{^\375\307\364C\307\243\251v9\370\364\260\277\253\317\321gB]

 9.779885 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\324\000\267\312\0320\213\266y\311\025[\371\275?\254Y\257\024[\245vjM\027\003\001\000(\236\321\221Z\321Z(\316'\343.\235?\321=8\264b\270(j\336\231\\210\265\207K\223A\037"\277\251\252t\252a`\374

 9.782153 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\257d\313mXZT\356\2366\334q\223\017gt\371\232\207\226\325

 9.793165 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\0301\020S\237\372\210\004N4\370\366\377\2213m\356\233w:\275)&gt;@%\027\003\001\000 Y\032\275BM=3J\313\240\241\372Z\371@\335\262\252\240\235\021\345\271\305\223\211\020\340\332\323Q\251

 9.795630 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\302\016=LR\272\030{\034\277V\256]\230\247\363\355M\241\327U\207k\032\027\003\001\000 OYi\216=S\322\212)\271V\016\2519w\332f\213\222S\244\275M\316\025N\302:k\312b\331

 9.796727 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1260 Win=64440 Len=0

 9.797542 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1334 Win=64364 Len=0

 9.798327 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1408 Win=64292 Len=0

 9.798775 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1482 Win=65700 Len=0

 9.799387 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1564 Win=65616 Len=0

 9.799910 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=741 Ack=1638 Win=65544 Len=0

 9.805078 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030G}\305\210\021s\244q\023k=\345R\232A\366B\360\202\320\361(x\344\027\003\001\000 \351W\350\377\362\2756\334\303\035+1l|{\304\277\224\326n\036d\213\217\b\216\023N\225\003a\274

 9.810763 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\203\354F\302\253\205\212\355\334$\321=\303h\276\302\350\320.\346\223\337BG\027\003\001\000 73\027\372#\232

 9.813350 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\203x`k\337RM\341w\022N\255|f\260U ?\354)A\301^\251\027\003\001\000 \031`\366\364He\030\266z)\373\265\237\261\\3430\220\331\340Kv[\033\347\tXj\344\314\236\242

 9.814073 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\307\2126sY\a\237\034\321\277!j\320\213\235\032\277e\345\361E&gt;|)\027\003\001\000 \256\304}:-\365\034\aD~\fk`]\\314\b\207\365-\217\305\244

 9.838659 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\300\272t&amp;\t(\262\243\361\210\263\343\326\261\017$\317V\002\354\325\271\250\366\027\003\001\000 \350F\305\360\363\365\033\274W\207M\006\216\255\016\365\205z\033\002\032B\345,\3712\034\377\327[\272P

 9.851675 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=1071 Ack=2041 Win=65140 Len=0

 9.856073 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030\f\357\000E/\372\333\247\016\344\315\345\346\271L\327\214CE0*i\316\332\027\003\001\000(8\220\341\316.*\234dM\235

 10.061779 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [ACK] Seq=1145 Ack=2094 Win=65088 Len=0

 39.978110 192.168.101.113 -&gt; 192.168.101.210 FTP Request: \027\003\001\000\030=\032\322\022\216B\025O\016\034

 39.980672 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [FIN, ACK] Seq=1211 Ack=2139 Win=65040 Len=0

 39.980725 192.168.101.113 -&gt; 192.168.101.210 TCP 52572 &gt; 21 [RST, ACK] Seq=1212 Ack=2149 Win=0 Len=0

27 packets captured

[root@ftp ~]#

<a href="http://down.51cto.com/data/2360091" target="_blank">附件:http://down.51cto.com/data/2360091</a>

本文轉自xjzhujunjie 51CTO部落格http://blog.51cto.com/xjzhujunjie/811673,原文連結:

繼續閱讀