加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。; X1 P+ u3 ^1 E) }- e7 g/ a. C
* M3 Y& W% I' b1 mFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
0 \3 I7 [8 L* f8 ^$ c; e8 xvsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
" ]3 Z# J) ` t) D- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。2 r. z4 r' Y1 a6 V) q: N) d1 q, f
5 I& J9 L6 b5 c! E. _9 m
ssl加密的vsftp(vsftp with OpenSSL)
: Q! V4 Z2 ~ h6 A# Z. W- 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,设置强制启用ssl0 \0 k3 w7 d6 e! E! w6 X
ssl_enable=YES$ I6 }* O/ r8 G: n0 ~7 [' t
allow_anon_ssl=NO/ s6 M. C7 Z4 W6 F' a
force_local_data_ssl=YES
0 E& Y+ f- g" A% Kforce_local_logins_ssl=YES' {- ]' d' ~8 d9 A+ \, H7 l6 k
ssl_tlsv1=YES$ _# y8 N$ n1 A) F
ssl_sslv2=NO
! Y4 ?' ^1 s( J5 a4 G" p+ t# r+ _ssl_sslv3=NO$ W3 w: W- c d4 X V0 F
rsa_cert_file=/etc/vsftpd/vsftpd.pem
4 w0 o0 x- x/ D1 o q- hssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!% k9 ]0 e& S( f8 M& @
( a5 ^" O Q0 R" ~% Y n: U+ ^7 p( u6 I
/ A% B7 H( R8 r0 h+ s0 } m! N
// ssl设置
( ?; x3 e% r- @5 F5 B6 N9 V: Tssl_enable=YES
4 v) D9 X" J% A4 nallow_anon_ssl=NO( @( |, U$ `$ v F2 e( Y# X
force_local_data_ssl=YES8 k' S/ Q- d4 M9 D8 Q
force_local_logins_ssl=YES
. l3 Y, J: ]1 u% Tssl_tlsv1=YES
) r4 Z# U0 @( Issl_sslv2=NO: k5 v1 g5 z1 e
ssl_sslv3=NO" H- i) f! ~4 p2 B) |$ n0 N
rsa_cert_file=/etc/vsftpd/vsftpd.pem6 s# s; u3 |7 b, U0 Y
ssl_ciphers=HIGH# a3 a7 v( M5 O, t! s
" o. b9 |$ e' [& l0 L# u2 E3 p8 B, D#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启% Y% j! G. X. H6 Z6 C8 O! \
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是7 W9 C* G) P; c1 z
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
, Q& f2 a, `3 W- }+ N4 W2 v! p#debug_ssl=YES // 输出ssl相关的日志信息
/ \" X3 B ]0 A# s; E* H b; b& E$ |7 ?4 n
+ O* m( q L0 |) |$ t }) t |