加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。4 }1 {- ~- y# \* q& R9 t7 ^& \
1 k7 a/ m+ w, g5 o
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:$ q* B# b! d' f A3 R" U- X2 O8 n
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
) g7 D% w, q* ^4 ?3 t- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
0 W: I* S2 ?% m& R$ y
8 C) Q, f7 Z% p" p! T! \2 `ssl加密的vsftp(vsftp with OpenSSL)% q" \" T5 ]8 N
- 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
; |: p* c9 S, ]9 }ssl_enable=YES, @8 {6 t; w* E0 W! q/ ?4 H- F& R
allow_anon_ssl=NO- t r f( g$ Z* F! p7 r1 Z' c
force_local_data_ssl=YES9 G. E$ @* S+ g+ M! J) V
force_local_logins_ssl=YES! `( x7 d1 `" p9 [$ ]) U
ssl_tlsv1=YES; S, [6 d" K/ S) ]
ssl_sslv2=NO
0 M+ G. A$ }! |1 }% C2 Cssl_sslv3=NO: M3 C# \3 }& Q8 V) h
rsa_cert_file=/etc/vsftpd/vsftpd.pem1 k+ [0 ^" f) [4 s# _$ S
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!4 K) w# b# W* U x* j! w* A
% `* h3 @( p3 D, _4 B
0 ~4 y8 o% q) ~+ d6 ~, N// ssl设置' y7 ^" j% ?" d- }' g, l
ssl_enable=YES
4 R" j! m' l9 g+ I2 v( gallow_anon_ssl=NO
. i$ \# N! t# H2 Bforce_local_data_ssl=YES
6 q1 C/ f1 m( L. Qforce_local_logins_ssl=YES p3 Q9 K7 x" n
ssl_tlsv1=YES* ~3 n" m. v1 ^0 Z% D
ssl_sslv2=NO
: s' I4 m0 T- Q, G5 dssl_sslv3=NO
6 R/ p- S$ N% f* p2 Ursa_cert_file=/etc/vsftpd/vsftpd.pem# n3 p6 y+ @( U1 M; c
ssl_ciphers=HIGH. k0 ?6 G& h$ {/ V: s) M5 t* e
: j3 |: O) y; a. T- d: ~5 z) s
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
4 q8 V0 I. Q* W0 {/ R+ `9 f- e#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
3 G# [; {0 R ^* f. R当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!: a5 p' F- u' \6 {; B) g
#debug_ssl=YES // 输出ssl相关的日志信息
+ D! a& W8 _/ w% O1 }
: L+ Y; n& |6 ]" o, ?2 _. n! O. p2 q/ A" P! e- E
|