ftp傳輸資料是明文,弄個抓包軟體就可以通過資料包來分析到賬号和密碼,為了搭建一個安全性比較高ftp,可以結合SSL來解決問題
<b>SSL</b>(Secure Socket Layer)工作于傳輸層和應用程式之間.作為一個中間層,應用程式隻要采用SSL提供的一套SSL套接字API來替換标準的Socket套接字,就可以把程式轉換為SSL化的安全網絡程式,在傳輸過程中将由SSL協定實作資料機密性和完整性的保證.SSL取得大規模成功後,IETF将SSL作了标準化,并将其稱為TLS(Transport Layer Security).Ftp結合SSL,将實作傳輸資料的加密,保證資料不被别人竊取.
下面我們使用linux自帶的抓包工具tcpdump抓包分析,來截取ftp登入使用者密碼
[root@red-hat-5 vsftpd]# <b>tcpdump -i eth0 -A |more</b>
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
……………………………….
20:40:26.208724 IP 192.168.184.1.54516 > 192.168.184.129.ftp: S 289306029:28
9306029(0) win 8192 <mss 1460,nop,nop,sackOK>
.............>u.....p. ..V..........
20:40:26.210838 IP 192.168.184.129.ftp > 192.168.184.1.54516: S 1292926425:1
292926425(0) ack 289306030 win 5840 <mss 1460,nop,nop,sackOK>
E..0..@[email protected].}..>u.p...S...........
20:40:26.212600 IP 192.168.184.1.54516 > 192.168.184.129.ftp: . ack 1 win 64
240
E..(m.@..................>u.M.}.P.............
20:40:26.229597 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 42:48(6) ack
1 win 5840
E....2@[email protected].~..>u.P.......220
20:40:26.251901 IP 192.168.184.1.54516 > 192.168.184.129.ftp: P 1:16(15) ack
48 win 64193
E..7m.@..................>u.M.~ P...#...<b>USER</b> <b>viong</b>
20:40:26.251989 IP 192.168.184.129.ftp > 192.168.184.1.54516: . ack 16 win 5
840
E..(.3@[email protected].~ .>u.P.......
20:40:26.252116 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 48:82(34) ac
k 16 win 5840
E..J.4@[email protected].~ .>u.P...8...331 Please specify the password.
20:40:26.255680 IP 192.168.184.1.54516 > 192.168.184.129.ftp: P 16:31(15) ac
k 82 win 64159
E..7m.@..................>u.M.~+P....3..<b>PASS</b> <b>123456</b>
E..Nm......R.............:.!............ EJFDEBFEEBFACACACACACACACACACAAA.. ..
20:40:31.301262 IP 192.168.184.129.ftp > 192.168.184.1.54516: P 82:105(23) ack 31
win 5840
E..?.6@[email protected].~+.>u.P....H..230 <b>Login successful.</b>
<b></b>
<b><b>從我們抓的資料包,可以看到賬号密碼,是以明文傳輸的資料安全性太可怕了</b><b></b></b>
<b><b> </b></b>
<b><b>讓vsftpd</b><b>支援SSL</b><b>,必須讓OPENSSL≥0.9.6</b><b>版本,還有就是本身vsftpd</b><b>版本是否支援</b></b>
<b>查詢vsftpd</b><b>軟體是否支援SSL</b>
<b> </b>
[root@localhost vsftpd]# ldd /usr/sbin/vsftpd |grep libssl
libssl.so.6 => /lib/libssl.so.6 (0xf7f27000) ==è說明此版本支援
如沒有輸出libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)類似文本,說明此vsftpd版本不支援SSL
[root@red-hat-5 ~]#<b>openssl req -x509 -nodes -days 365 -newkey rsa:1024 \-keyout /etc/vsftpd/vsftpd.pem \-out /etc/vsftpd/vsftpd.pem </b>==è生成vsftpd.pem 證書
Generating a 1024 bit RSA private key
..++++++
....................................++++++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [GB]:<b>cn</b>
State or Province Name (full name) [Berkshire]: <b>shanghai</b>
Locality Name (eg, city) [Newbury]:<b>shanghai</b>
Organization Name (eg, company) [My Company Ltd]:<b>ys </b>==è根據提示填寫一些資訊
Organizational Unit Name (eg, section) []:<b>ys</b>
Common Name (eg, your name or your server's hostname) []:<b>viong</b>
Email Address []:<b>[email protected]</b>
[root@localhost ~]# <b>ll /etc/vsftpd/ </b>==è檢視是否生成vsftpd.pem檔案<b></b>
-rw-r--r-- 1 root root 197 12-25 19:57 chroot_list
-rw--------1 root root 125 2007-12-13 ftpusers
-rw------- 1 root root 361 2007-12-13 user_list
-rw------- 1 root root 4396 12-25 19:19 vsftpd.conf
-rwxr--r-- 1 root root 338 2007-12-13 vsftpd_conf_migrate.sh
<b>-rw-r--r-- 1 root root 2168 01-08 01:53 vsftpd.pem </b>==è生成vsftpd.pem成功
[root@red-hat-5 ~]# <b>vi /etc/vsftpd/vsftpd.conf </b>==è編輯主配置檔案,添加以下參數<b></b>
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
<b>下面是ssl</b><b>參數一些定義,根據自己需求去修改</b>
ssl_enable=yes/no //是否啟用 SSL,預設為no
allow_anon_ssl=yes/no //是否允許匿名使用者使用SSL,預設為no
rsa_cert_file=/path/to/file //rsa證書的位置
dsa_cert_file=/path/to/file //dsa證書的位置
force_local_logins_ssl=yes/no //非匿名使用者登陸時是否加密,預設為yes
force_local_data_ssl=yes/no //非匿名使用者傳輸資料時是否加密,預設為yes
force_anon_logins_ssl=yes/no //匿名使用者登入時是否加密,預設為no
force_anon_data_ssl=yes/no //匿名使用者資料傳輸時是否加密,預設為no
ssl_sslv2=yes/no //是否激活sslv2加密,預設no
ssl_sslv3=yes/no //是否激活sslv3加密,預設no
ssl_tlsv1=yes/no //是否激活tls v1加密,預設yes
ssl_ciphers=加密方法 //預設是DES-CBC3-SHA
[root@red-hat-5 ~]# <b>service vsftpd restart</b>
關閉vsftpd: [确定]
為vsftpd啟動vsftpd: [确定]
通過FlashFXP連接配接FTP
如下圖:
打開FlashFXP按<b>F4</b>跳出站點管理器.填寫ftp目标位址并選擇連接配接類型
接受并儲存證書
連接配接成功
傳輸資料成功
接下來我們同樣通過tcpdump抓包分析
[root@red-hat-5 vsftpd]# <b>tcpdump -i eth0 -A |more</b>
………………………………………………………….省略
E..(.l@................._.W.h...P....)........
15:55:03.887804 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 1:36(35) ack 1 win 5840
E..K
3@.@.>.............h..._.W.P....s..220-........YSPLAY........FTP....
15:55:03.888817 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 36:42(6) ack 1 win 5840
E...
4@.@.>.............h..._.W.P...Q...220-
15:55:03.888982 IP 192.168.184.1.53447 > 192.168.184.129.ftp: . ack 42 win 64199
E..(.m@................._.W.h...P....)........
15:55:03.889715 IP 192.168.184.129.ftp > 192.168.184.1.53447: P 42:48(6) ack 1 win 5840
5@.@.>.............h..._.W.P...Q...220
15:55:03.893159 IP 192.168.184.1.53447 > 192.168.184.129.ftp: P 1:11(10) ack 48 win 64193
E..2.n@................._.W.h...P.......<b>AUTH SSL </b>=======è說明SSL加密成功
通過測試得知資料傳輸已經被加密,說明支援SSL加密的vsftp搭建成功
本文轉自viong 51CTO部落格,原文連結:http://blog.51cto.com/viong/261354,如需轉載請自行聯系原作者