加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。* I1 D6 ?$ R: N3 G
# G4 H. S9 H, ^
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:5 H1 k1 z3 x& ~8 b H* H* e7 s
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)+ m/ r% d1 |8 `; M y6 B
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
% O: S. ~5 h p% @0 o; y$ v ) }9 a% |1 j" q
ssl加密的vsftp(vsftp with OpenSSL)
; m! o0 L1 w5 t8 a0 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: V. y" H+ D; u. J/ U( M2 ^8 z
ssl_enable=YES% t, j( `: j9 x6 o3 O+ ?
allow_anon_ssl=NO
! N; y G* S4 x* [2 X: B5 N4 qforce_local_data_ssl=YES" {: i: ~: E; H6 O
force_local_logins_ssl=YES; n0 z5 D. p% r5 t E( n0 P
ssl_tlsv1=YES
3 D" }" t& J1 R( f) i3 ?ssl_sslv2=NO0 u6 P. [9 R- H( S1 q0 x0 u
ssl_sslv3=NO
" x4 K! Z; M4 j( Arsa_cert_file=/etc/vsftpd/vsftpd.pem
& G9 c# _" x: [, u( F- _6 Vssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
+ P7 Z$ x5 B' E |+ y) E$ d
5 f/ u7 g& H; i/ R5 n9 b3 \) _9 [: f `4 P% |& Z
// ssl设置2 v5 k* K- e; o' B
ssl_enable=YES2 R( Y0 p+ R: s
allow_anon_ssl=NO
+ s4 s$ l5 P( l( m+ Kforce_local_data_ssl=YES
9 d4 f5 _6 m2 j% D& s* Z. {3 H, qforce_local_logins_ssl=YES) M& O: E) N: g& ]7 A" b
ssl_tlsv1=YES! i' F5 ~/ W" q* m# }
ssl_sslv2=NO
7 v a" `2 {$ V0 J# T/ Gssl_sslv3=NO
; P1 d# G2 c, @3 X; y/ d6 \rsa_cert_file=/etc/vsftpd/vsftpd.pem
+ X3 W3 ?9 U h1 b p" Essl_ciphers=HIGH
, @2 i, r/ t$ ?: m' }, a# g, n t& T! i8 `
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
1 U$ t. z/ i$ ~5 ~* s9 x#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
2 U- I; V o. e- X4 m; N当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
7 z, g+ n1 B( _* J#debug_ssl=YES // 输出ssl相关的日志信息
; p) s @6 s, C# I0 B9 q
# Y& p N3 H# V; A% I/ L* f4 P# m, K3 v) T
|