加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。: O) A$ p; ?+ d0 F2 G: s
5 T% u. b# ^) S9 JFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
+ l( S$ y/ ^: @/ bvsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)4 c# `: } B* j7 |
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。* S: h0 Y W; N
3 c7 ~/ [4 q: \0 y3 X
ssl加密的vsftp(vsftp with OpenSSL)9 M/ h% S, J$ e1 D$ o2 p
- 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
* ]; e) i2 A9 v; R' D$ e1 fssl_enable=YES
, j0 W( L) |% e0 C# D! Vallow_anon_ssl=NO0 B; N6 w. a$ u" @' t5 u9 O
force_local_data_ssl=YES) q& v$ y0 E: S5 W8 u8 P
force_local_logins_ssl=YES
0 E& U6 D& c- }2 _/ w! ussl_tlsv1=YES
x+ ?2 N( [) v+ nssl_sslv2=NO0 r4 C1 n. x F
ssl_sslv3=NO2 k& o! X/ d5 r
rsa_cert_file=/etc/vsftpd/vsftpd.pem' N# `4 D. F$ Q8 N0 s2 {
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!$ R' d1 G( o' d& o
0 t. B! ]( [3 }4 w
/ q2 C5 m2 a4 S& [! j, b! r// ssl设置) l5 a4 U! V" `* y7 j2 s7 B
ssl_enable=YES
, c5 ^. y" Z8 @" r8 A5 G5 ]3 E+ nallow_anon_ssl=NO" B: v1 i" J2 D
force_local_data_ssl=YES; B' d, m( m6 v
force_local_logins_ssl=YES! u" a4 ^6 j7 O, v# K
ssl_tlsv1=YES
" z* f* I8 n! R9 T8 _+ m3 I7 tssl_sslv2=NO
* ]; H2 U- G! V: [3 o! q$ W3 Dssl_sslv3=NO6 |3 A+ B3 {9 X
rsa_cert_file=/etc/vsftpd/vsftpd.pem# q; o) k) W0 e( D+ @
ssl_ciphers=HIGH
! f; l1 v8 v" D6 {. Y$ m1 ^# b
, _/ j W$ y* U+ p#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
, Y) w1 f2 q3 a6 p#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是+ G& d) ~. R) a5 O) \2 }
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!5 M4 {" n1 A' e0 T& d4 f
#debug_ssl=YES // 输出ssl相关的日志信息5 n/ y6 ~" j2 e; N. y4 m6 J+ {% C
) K- O5 r# c9 F: @2 i; \( m3 _; x/ F
|