加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。1 x! U C3 ^3 @8 ?* K3 L- N! n
5 n( s: r w0 p/ k
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
3 q2 a; O* u2 W) h( i1 a, evsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
3 k! H* e1 Q X! {- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
0 \" A E+ ?- u$ d2 M! B. Q* B
5 d. G5 O6 d- D7 l; c# {9 X$ v) Lssl加密的vsftp(vsftp with OpenSSL)
% [# Y8 A+ H! o7 I7 h- 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,设置强制启用ssl
& T0 ?$ B% S; R0 _; `4 {( Rssl_enable=YES
+ O0 X! d6 M, h# X: Xallow_anon_ssl=NO
' Z3 V; U+ J( U C* q# Bforce_local_data_ssl=YES
% L9 {6 u, Q# p& l! `1 W0 K6 Yforce_local_logins_ssl=YES' v) u' i3 w! h* l
ssl_tlsv1=YES) n) R5 D; R' _
ssl_sslv2=NO% A9 T- `- p0 s" i% f+ d8 B7 H7 F3 q
ssl_sslv3=NO U2 W0 {" [1 v8 h
rsa_cert_file=/etc/vsftpd/vsftpd.pem
: y8 [; @# y7 \1 @ {( ^% Vssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!! e) n R$ f, y, [* W) T! z
! O& e; Y3 ]3 t
4 f2 h8 T# _0 O6 i// ssl设置
5 K. o0 t2 f" b, l. u6 ussl_enable=YES" k* C$ }# d5 f {! Q; N
allow_anon_ssl=NO
6 z; Z* K- H' Cforce_local_data_ssl=YES
; l- i$ Z8 z: C" ~+ ?force_local_logins_ssl=YES
F% n; i q& T# d1 y1 v" tssl_tlsv1=YES
3 r4 C/ t5 r" n+ V5 \8 Fssl_sslv2=NO# V" Y$ _' G' Z2 w' |
ssl_sslv3=NO- r; t0 N9 ]' h* u% r$ s. s M
rsa_cert_file=/etc/vsftpd/vsftpd.pem$ C3 _% N* W# `. {/ @ N
ssl_ciphers=HIGH0 Q( R$ j0 k% X" y1 t- ]0 j
# c* p. A1 ~3 A
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启+ E1 C$ \3 G. z" t# j
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
" `+ [0 x7 T) R* W当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!8 B" x+ Z# t4 n2 K0 T
#debug_ssl=YES // 输出ssl相关的日志信息! I' K! ?( @6 V! ^/ w& p7 V, {0 P
. o# ~9 P! y2 h' @3 Y: u1 _" g! V7 m5 I
|