加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
3 g) e: w5 g9 C( u
( Q/ o' G! v1 a# AFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl: P. r4 S" p8 k4 A7 h
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
: @( B, S( v" {8 X4 y, `: m- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。6 w, L- ~& K) e, R3 C# `- e+ a9 R; ^
+ `) x! T, F- F" T. J$ _4 K; C( _" J0 S+ kssl加密的vsftp(vsftp with OpenSSL): B0 j {! X7 i& t
- a. ftp默认的传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题
- b. 检查vsftp是否支持SSL:从2.0.0版本开始,vsftpd支持命令连接和数据连接的加密传输。vsftpd服务器版本查看:rpm -qa vsftpd 输出:vsftpd-2.2.2-11.el6.i686
- c. 检查vsftp是否支持SSL:ldd /usr/sbin/vsftpd | grep libssl,如果输出类似与libssl.so.10 => /usr/lib/libssl.so.10 (0x00dfb000),那么支持。如果不支持,那么重新编译vsftp,然后再重新安装
- d. 用openssl生成vsftpd的证书:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
- e. 修改vsftpd.conf,设置强制启用ssl7 ?/ \& Q8 C: o6 {
ssl_enable=YES( {7 j% a' E4 w" A% X
allow_anon_ssl=NO' v$ K3 ~' d# }6 k' U% Q
force_local_data_ssl=YES
5 @: b E6 c. o" b; ^) P/ |1 E- Mforce_local_logins_ssl=YES
! p6 d8 H1 W" {- ~- Ossl_tlsv1=YES
1 r2 g/ B( N. w f, X5 pssl_sslv2=NO
1 I, w, D4 n6 x2 bssl_sslv3=NO! z8 F6 m# @6 \- t/ T
rsa_cert_file=/etc/vsftpd/vsftpd.pem
. ^3 N3 A$ A8 Z; y% w$ t; Bssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
1 V8 q: z1 Z! i% G! P1 ^1 w + p' s, \6 m {3 h4 T& Y/ B
, b- Y& w: m7 r) ]3 }$ }
// ssl设置
+ O2 V2 k0 Q/ B" Cssl_enable=YES
7 X+ g# k, ^' e/ `: d, K/ @allow_anon_ssl=NO
! X {" V9 @* T3 |force_local_data_ssl=YES
. W& Z" \* E; Y- Y+ Fforce_local_logins_ssl=YES
( d' t+ v- _1 Q% D0 c1 k/ fssl_tlsv1=YES9 ]) F" ^$ [( a0 t: k6 @/ z
ssl_sslv2=NO
- Y! V1 J. q5 f2 I6 Mssl_sslv3=NO" q1 h% e* N5 q! m
rsa_cert_file=/etc/vsftpd/vsftpd.pem
. J* r; _, R2 I; B+ d& K- Sssl_ciphers=HIGH
4 y6 Z8 [2 w9 [/ \9 r% H* k4 l2 j% [
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
; M" f" O! j" p0 q+ w( C#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是* K2 A" g- m* Q/ {6 [7 ~$ d; Y, f
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!( j; A8 M- m8 U2 y. A9 c& D2 L
#debug_ssl=YES // 输出ssl相关的日志信息# D- K; w5 |, d! ~ |3 _9 k$ G
) d/ z4 `7 B1 [# u8 m, P# I2 b/ j
% j4 x" [9 f# b9 V; C |