加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
6 I0 I* l0 `) n6 v
0 [1 J z4 t0 H+ y- S) f% jFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:# x8 ?1 J1 A) I9 E9 y" K. h2 _
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)5 ^' o/ [4 ?3 B+ O6 C1 @4 b2 V2 S
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。( N9 C2 b R& |6 ^
: ^+ p! O: k7 p$ K3 N, Wssl加密的vsftp(vsftp with OpenSSL)
5 T+ `- D, G3 C2 f F6 l- 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
7 C4 b/ f( m- t W8 Sssl_enable=YES$ U: M7 C) C9 i, X P
allow_anon_ssl=NO
7 i+ v, i! Z- Q$ Y% H2 w. eforce_local_data_ssl=YES
3 i$ G( v7 D M& w! |force_local_logins_ssl=YES
; i$ R% n( H' Y @ Xssl_tlsv1=YES
' L9 ~9 P8 u1 xssl_sslv2=NO1 P& r8 a2 I1 p+ |$ p
ssl_sslv3=NO7 S% r- N0 U2 C) E# ?# x+ D o
rsa_cert_file=/etc/vsftpd/vsftpd.pem
; W4 f" i0 j, u) q7 p; Essl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
4 D+ Q7 x* Q2 x8 i; G & y+ Q i" t% W& |2 k, m, T2 ~0 P
# f% \% p0 {+ Z0 z! T" L// ssl设置" G9 }( P' L8 H. _' }( S8 \ q
ssl_enable=YES' K; h+ n4 Y& V% F
allow_anon_ssl=NO
% |- i2 P4 i& [; [; ?4 `' dforce_local_data_ssl=YES# [3 N) F' J' _( W! s! a5 O; h
force_local_logins_ssl=YES% h* Y( Q1 E; k! \
ssl_tlsv1=YES2 J! u& E. p! l& S9 d: D- F) X
ssl_sslv2=NO
: U E7 {# ~2 x0 O+ }ssl_sslv3=NO
& a, G0 B1 I" S% Trsa_cert_file=/etc/vsftpd/vsftpd.pem& @5 C/ l# N7 b5 i$ x& Z
ssl_ciphers=HIGH) O; s1 E8 |6 u' S3 j, m
( z, l3 ^ u. f7 l& r6 g- o
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启( t" F3 U8 C, I g6 H$ ]4 _6 D
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
3 E ~. Z9 L8 p% s当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!- t7 \4 {$ s6 g) [# \5 @, G/ J
#debug_ssl=YES // 输出ssl相关的日志信息 {* F5 B. q$ u' K
+ P) z L# J4 e$ W- `1 _% L7 M$ `" k
|