加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。1 P$ r& f/ W. i" K+ e0 X
% |- z! p! A8 J( ^% k! O$ V! E( O' V
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:* C6 [: S6 o; X" `
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
& e# B% s: d- V- Q) y# I( [- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。" s& g! E3 D3 ?2 c
9 z1 k/ Z- i9 @9 \8 S* h2 v- k0 issl加密的vsftp(vsftp with OpenSSL)
2 h/ @1 ^! H1 B3 y c! L0 v- 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) W* e% i1 X& l$ M
ssl_enable=YES
5 S4 W) P$ n9 }1 Aallow_anon_ssl=NO0 J; J, M$ N1 j# ]# d q
force_local_data_ssl=YES, y% W# N3 e3 f
force_local_logins_ssl=YES$ V& ^. M9 ]0 K' c) K3 Y' r0 R$ q
ssl_tlsv1=YES
# Y: c" }" {- u% O7 t# Sssl_sslv2=NO% ] U7 s. t1 \% P& ?
ssl_sslv3=NO
# C. o' c. R$ Z8 d, ursa_cert_file=/etc/vsftpd/vsftpd.pem
1 l! d/ E" m; X4 m9 _4 \/ `: Vssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!& M7 V) h9 B$ ]! L4 G3 ^, X C
# N# ~/ L$ g, q* i$ |
- K1 Q& x3 E# o3 K2 [// ssl设置9 v+ Y$ D: j, ?
ssl_enable=YES
: z7 r+ b: l0 z4 D! Kallow_anon_ssl=NO5 C$ N! c, ~4 E: s
force_local_data_ssl=YES, i3 L. R+ t+ u* ]# t8 [ f; Z
force_local_logins_ssl=YES4 W4 S' _' P- E) S3 h, K
ssl_tlsv1=YES
& n/ J" s8 f# N, X5 nssl_sslv2=NO% K! ` V) z6 S: \4 F E7 Y. r
ssl_sslv3=NO
, z# U! o6 a8 I2 C* ]rsa_cert_file=/etc/vsftpd/vsftpd.pem3 V+ M6 w8 ~$ T
ssl_ciphers=HIGH& Q1 [. B- v' M. q
# a) U+ g- J% }2 e* W8 ^#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启8 a. @: G7 ]3 U& [( U' O, J3 b" c
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是8 i( L- D& ]# H
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!! B3 p' S2 A$ {7 s' k9 E1 w/ B
#debug_ssl=YES // 输出ssl相关的日志信息: R4 ]6 f2 ?0 C4 V
8 z4 d" l9 j& W# U' N
0 B+ H0 l( h3 l2 I. G |