加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。$ w. m& m* e, o$ a0 M
2 ]$ Z: J: v0 C. w6 [FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:) ]& ]2 D) {6 {5 v
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)3 w6 Z/ ]; q# r9 o
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。; u+ g z' C* O. E6 M
) m( ?" u8 j4 P3 M
ssl加密的vsftp(vsftp with OpenSSL)! V1 ^; R- Q4 ~0 [
- 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
* K; {" ]7 J, W+ h' ^" T0 ^ssl_enable=YES% [ w: Q9 H+ p1 n
allow_anon_ssl=NO
/ \/ |7 d; L1 z# Q& {* Y+ [force_local_data_ssl=YES
6 S: C8 i7 b& oforce_local_logins_ssl=YES
$ M( }, b! r( L1 V& Y( Mssl_tlsv1=YES
5 w" I2 t4 [% O/ J8 Y# t+ Nssl_sslv2=NO' K9 V" j5 f& b5 B$ W$ {- d
ssl_sslv3=NO* d: h! P% L+ @' k# J2 t
rsa_cert_file=/etc/vsftpd/vsftpd.pem
/ N: L- C% q2 [9 R, i! `0 Xssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!9 U( S( z* |4 i2 }$ e
9 s4 t3 v3 d, T# d% h+ b5 v; @
1 h# } { ~# j// ssl设置
* x- N$ Z+ u( e/ Nssl_enable=YES2 l+ w! F# n; y
allow_anon_ssl=NO
! Y9 d' Z; ^, Gforce_local_data_ssl=YES
. T( D& l* o8 F; Q: D$ Wforce_local_logins_ssl=YES5 b5 b3 b: {$ k
ssl_tlsv1=YES D" d& {9 _" X' Z) N
ssl_sslv2=NO3 C V: ^4 a" Z+ f7 p
ssl_sslv3=NO2 ^' Q' N1 V! k0 k. d- m
rsa_cert_file=/etc/vsftpd/vsftpd.pem+ D+ f( @- N, z" [
ssl_ciphers=HIGH: R( C& U4 Y5 [ d6 P0 F3 M
) p5 q$ C. m8 _+ A% N0 c* a#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
$ b+ P- p* t4 M0 s) q#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
5 ?+ N# i R2 O7 S9 ? S9 n当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!3 g, j& ~. i1 e, x! ?- L
#debug_ssl=YES // 输出ssl相关的日志信息: o9 V- g& `1 ?: U4 z# |
0 m% ]; n" B( j+ e0 U! V' G K2 V" {4 G
|