vsftpd配置详解之实现加密数据传输

运维 系统运维
vsftpd配置详解:Linux是一种开源的而且安全的操作系统,已经深入人心。作为Linux的一种流行发行版本,Ubuntu的使用更为普及。vsftpd作为Linux下一种最为方便的FTP程序,也为人们所推崇。本文讲述的是vsftpd配置详解之实现加密数据传输。

  vsftpd配置详解之实现加密数据传输:

  FTP一个声名狼藉的问题是它以明文方式发送用户名和口令。任何人只要在网络中合适的位置进行抓包分析就可以看到用户名和口令;FTP发送的数据也是以明文方式传输,通过对ftp连接的监控和数据收集就可以重现ftp的数据传输。很多用户为了方便把相同的用户名和口令用在不同的应用中,如果黑客收集到 FTP口令,他们也可能就得到了你在线帐号或者其他一些机密数据的口令。

  下面我们使用linux自带的抓包工具tcpdump抓包分析,来截取ftp登录用户口令:

  # tcpdump -i eth0 -A

  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

  listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

  17:44:35.520880 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: S 3417937804:3417937804(0) win 65535

  E..0..@........e...i ...........p...............

  17:44:45.681026 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: S 2518028758:2518028758(0) ack 3417937805 win 5840

  E..0..@[email].@......i...e[/email].. .........p...............

  17:44:35.520954 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: . ack 1 win 65535

  E..([email]..@........e...i[/email] ...........P....x........

  建立TCP连接的三次握手,接下来登录之前信息,省约……

  17:44:36.513224 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: P 32:44(12) ack 97 win 513

  E..4..@........e...i ...........P...v...USER test1

  用户名:test1

  17:44:39.942107 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: . ack 13 win 5840

  E..(.|@[email].@..5...i...e[/email].. .........P.......

  17:44:39.942277 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: P 21:55(34) ack 13 win 5840

  E..J.}@[email].@......i...e[/email].. .........P....[..331 Please specify the password.

  17:44:40.094629 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: . ack 55 win 65481

  P....l.........e...i ..........

  17:44:40.525157 IP 192.168.0.105.32832 > 192.168.0.1.domain: 31226 PTR? 105.0.168.192.in-addr.arpa. (44)

  E..H..@.@..;[email]...i.....@.5.4..y............105.0.168.192.in-addr.arpa[/email].....

  17:44:41.714630 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: P 13:23(10) ack 55 win 65481

  P.......PASS abc...i ..........

  密码:abc

  17:44:41.742271 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: P 55:78(23) ack 23 win 5840

  ....P....P..230 Login successful.

  登录成功!

  怎么样!弄到密码很简单吧!服务器配置的再优秀,数据是明文传输的,所以还是会让别有用心之人有机可乘。

  SSL(Secure Socket Layer)工作于传输层和应用程序之间。作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证。SSL取得大规模成功后,IETF将SSL作了标准化,并将其称为TLS(Transport Layer Security)。Ftp结合SSL,将实现传输数据的加密,保证数据不被别人窃取。

  要让vsftpd支持SSL,必须在安装之前修改头文件builddefs.h,将#undef VSF_BUILD_SSL行改为#define VSF_BUILD_SSL,在安装小节已经讲过。这里我们用OpenSSL结合vsftpd来实现数据加密传输。首先查看自己的系统有没有安装 OpenSSL,如果没有安装,到官网下载安装,安装过程很简单,就不贴出来了。

  下面我们为 vsftpd 生成证书:

  # cd /etc/vsftpd/

  # openssl req -new -x509 -nodes -out vsftpd.pem -keyout 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]:cn

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

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

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

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

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

  www.linuxer.cn

  Email Address []:icecard@hotmail.com

  填写这些信息后,就产生了/etc/vsftpd/vsftpd.pem证书文件,接下来我们在配置文件中加入下面两行:

  1.   ssl_enable=yes 
  2.  
  3.   rsa_cert_file=/etc/vsftpd/vsftpd.pem  
  4.  

#p#

  现在我们登录服务器测试:

  1.   # ftp 127.0.0.1  
  2.  
  3.   Connected to 127.0.0.1.  
  4.  
  5.   220 (vsFTPd 2.0.5)  
  6.  
  7.   504 Unknown AUTH type.  
  8.  
  9.   504 Unknown AUTH type.  
  10.  
  11.   KERBEROS_V4 rejected as an authentication type  
  12.  
  13.   Name (127.0.0.1:root): test1  
  14.  
  15.   530 Non-anonymous sessions must use encryption.  
  16.  
  17.   Login failed.  
  18.  

  已经不能登录了,可能是这个ftp客户端不支持ssl的原因吧!在windows下支持ssl的ftp客户端很多(IE是不支持的),比如 FlashFXP,使用比较简单,相信大家都会使用。我们这里介绍Linux下使用lftp来登录服务器。很多Linux发行版中都已经包含了lftp软件包,如果你的Linux中没有lftp,到官网下载原码包来安装。

  # lftp 127.0.0.1

  lftp 127.0.0.1:~> user test1

  口令:

  lftp

  test1@127.0.0.1

  :~> ls

  -rw-r--r-- 1 0 0 5 May 17 21:35 virftp.file

  drwxrwxrwx 2 500 500 4096 May 17 21:47 woo

  同时我们打开tcpdump抓包测试:

  1.   # tcpdump -i lo -A  
  2.  
  3.   tcpdump: verbose output suppressed, use -v or -vv for full protocol decode  
  4.  
  5.   listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes  
  6.  

  省约部分信息……

  23:32:15.237079 IP localhost.localdomain.ftp > localhost.localdomain.46605: P 36:47(11) ack 7 win 512

  ..yI...U.....3.........

  ..M7..M5 AUTH SSL

  启用了SSL

  23:32:15.272496 IP localhost.localdomain.46605 > localhost.localdomain.ftp: . ack 47 win 513

  .....U..yT....9......

  ..M@..M6

  23:32:15.272570 IP localhost.localdomain.ftp > localhost.localdomain.46605: P 47:137(90) ack 7 win 512

  ..yT...U...............

  ..M@..M@ AUTH TLS

  EPRT

  EPSV

  MDTM

  23:32:15.272605 IP localhost.localdomain.46605 > localhost.localdomain.ftp: . ack 137 win 513

  .....U..y.....9i.....

  ..M@..M@

  23:32:15.273156 IP localhost.localdomain.46605 > localhost.localdomain.ftp: P 7:17(10) ack 137 win 513

  .....U..y......2.....

  ..M@..M@AUTH TLS

  使用 TLS 认证方式,这是 Vsftpd 默认的安全认证方式。

  我们看到使用tcpdump抓到的包已经使用 TLS 加密了,数据也是加密的,再也不怕第三方窃听了。

  上面的例子只使用了两条配置语句,vsftp还提供了下面的语句来设置ssl:

  1.   ssl_enable=yes/no //是否启用 SSL,默认为no  
  2.  
  3.   allow_anon_ssl=yes/no //是否允许匿名用户使用SSL,默认为no  
  4.  
  5.   rsa_cert_file=/path/to/file //rsa证书的位置  
  6.  
  7.   dsa_cert_file=/path/to/file //dsa证书的位置  
  8.  
  9.   force_local_logins_ssl=yes/no //非匿名用户登陆时是否加密,默认为yes  
  10.  
  11.   force_local_data_ssl=yes/no //非匿名用户传输数据时是否加密,默认为yes  
  12.  
  13.   force_anon_logins_ssl=yes/no //匿名用户登录时是否加密,默认为no  
  14.  
  15.   force_anon_data_ssl=yes/no //匿名用户数据传输时是否加密,默认为no  
  16.  
  17.   ssl_sslv2=yes/no //是否激活sslv2加密,默认no  
  18.  
  19.   ssl_sslv3=yes/no //是否激活sslv3加密,默认no  
  20.  
  21.   ssl_tlsv1=yes/no //是否激活tls v1加密,默认yes  
  22.  
  23.   ssl_ciphers=加密方法 //默认是DES-CBC3-SHA  
  24.  

  总结:FTP展望

  FTP是在70年代设计出来的,当时的互联网是一个封闭的网络,与现代网络环境还是有很大的差异,现代网络中不管你使用Port模式还是Passive模式,都可能产生问题。很多人对FTP协议安全性进行不懈的努力,使用SSL/TLS进行ftp传输过程的验证和加密,基本解决明文传数据的问题。但还是存在不少缺陷,于是出现了一些FTP替代应用,如SCP、SFTP;如果你使用ftp更新你的网页,还可以考虑WebDAV。

  在FTP服务器软件中,vsftpd可以说是最安全的ftp软件,短小精悍,且高性能,是ftp服务器软件中的佼佼者。经过上面的学习,对于搭建安全高效的FTP服务器,再也不会困惑了。

【编辑推荐】

  1. vsftpd配置详解之简介篇
  2. vsftpd配置详解之软件安装和卸载
  3. vsftpd配置详解之配置vsftpd服务
  4. Vsftpd配置详解之配置文件详解
  5. Vsftpd配置详解之Vsftpd配置下高级操作
  6. Vsftpd配置详解之与MySql的结合
  7. vsftpd配置详解之实现加密数据传输
责任编辑:zhaolei 来源: CSDN
相关推荐

2021-06-09 11:28:06

加密数据Jsencrypt

2009-05-26 11:24:00

2009-04-10 23:40:06

2009-05-19 17:05:10

2020-06-12 07:50:15

大数据

2009-12-08 11:17:41

WCF双向通信

2009-12-18 09:20:34

路由器基础配置

2010-04-07 14:54:38

2019-09-29 15:16:49

2009-12-21 14:47:43

路由器配置

2010-07-13 15:55:12

FTP数据传输模式

2023-04-12 16:20:00

同步数据异步数据传输

2015-10-14 09:44:55

TCP网络协议数据传输

2013-11-26 15:51:45

Android编程蓝牙数据传输

2023-07-12 15:52:28

2009-07-07 16:46:33

数据传输铜缆结构

2021-12-14 11:01:44

TCPUDP网络协议

2021-10-08 08:37:38

数据传输数据调用网络协议

2019-09-06 09:11:36

以太网数据二层交换

2022-03-30 15:06:25

数据传输Harmony源码分析
点赞
收藏

51CTO技术栈公众号