加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
: a4 I6 B- d2 ?; h* S& H8 A7 a7 F# y+ h2 p
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:# z$ u9 B6 w/ R& Q& a N1 {
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
7 p( G3 D' ^8 U8 s- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
0 O8 v; F. e1 E( [$ k1 h
1 C' a& N- j5 Y3 a$ K, S% vssl加密的vsftp(vsftp with OpenSSL)* Y4 s) x7 m/ Q+ h& d! u' `
- 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; O" ~- ]# T9 D6 D F( b: C, G
ssl_enable=YES
; J ~% g! u3 Y+ ?, Yallow_anon_ssl=NO7 X! Z% e: E, F/ g3 w1 d9 l
force_local_data_ssl=YES5 N9 K3 J" o% Y" i# l
force_local_logins_ssl=YES% T& G& ]3 w1 A. J4 J7 w
ssl_tlsv1=YES; `6 m3 | G/ i3 Z3 Y) b; U$ S
ssl_sslv2=NO" r: F, C: v6 j! d0 n; \
ssl_sslv3=NO
1 @9 e' K" P: G! S4 Qrsa_cert_file=/etc/vsftpd/vsftpd.pem
9 R$ K! s7 \9 O; j' b- \ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!& ^! `, `$ n7 V6 I1 a7 m
5 x" }9 p5 Y+ B# c7 u$ B/ b( a6 G" j
5 f; f. ^1 l8 V, @- S
// ssl设置
' o$ C6 E+ C. K% ^5 b/ @ssl_enable=YES
& k9 e/ {9 J0 Q0 G" hallow_anon_ssl=NO" o" _- w& Q! U
force_local_data_ssl=YES
z! E+ `" \$ ]6 }, S$ Kforce_local_logins_ssl=YES
- X; e; w% n& w k& j1 [1 k' hssl_tlsv1=YES
8 d; v% m0 O# y) O! p) tssl_sslv2=NO
4 }7 h9 j; M5 B/ t: |: I5 |7 i* x \ssl_sslv3=NO
) `" g' i% K2 k: C. d0 Grsa_cert_file=/etc/vsftpd/vsftpd.pem, p' l7 A( W o, O" y2 z) o; f w
ssl_ciphers=HIGH1 w, e& ~+ w7 n( g" e
+ [: f! Z) K) z1 L
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启 x% G ]! V3 s* O3 g1 q
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
+ K2 H- @7 S$ E( u- Y当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!) P' m/ U# f5 k0 F+ D; ~5 Z" ?
#debug_ssl=YES // 输出ssl相关的日志信息. e1 J @' t9 t# P+ j8 L
1 G; ]+ M! V+ Q- A
, t7 k: K7 u8 z/ k" O8 R3 }+ _% y |