加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。+ M! M$ ^9 |; o, t6 X
& P" e& C/ ]$ O5 R" i6 }8 L6 vFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:% w r, l7 ]" X3 t V
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
) T4 T) P5 j7 E8 z7 v- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
9 Z7 @( e; v& m8 g
; _4 d* T; g% D {' h: Assl加密的vsftp(vsftp with OpenSSL)
4 L6 ?: c" d% @# b$ W- 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,设置强制启用ssl7 u+ a* B/ C7 P& S; a
ssl_enable=YES
) g4 i/ @$ e7 P/ r- v& Lallow_anon_ssl=NO( h3 k' D& ^: D# ~3 a k- ?
force_local_data_ssl=YES* `; w9 d7 F6 s
force_local_logins_ssl=YES' _. O6 A* F7 K3 [! R, u
ssl_tlsv1=YES$ n8 ^' A" b% Y# ]( y" U
ssl_sslv2=NO
1 X0 { f4 ]; Jssl_sslv3=NO6 a5 Z% H& q' D" I; P9 |
rsa_cert_file=/etc/vsftpd/vsftpd.pem4 S3 w, L. h1 D1 L
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!) [$ @, z. m5 A l" o9 |
9 F5 r6 {: T J6 [0 @: `
) ?- c6 [; E2 {' d* G- N# a// ssl设置" H/ t$ |: I8 z6 V
ssl_enable=YES
5 K$ P x& u; P+ _- L: sallow_anon_ssl=NO' S/ n+ A5 V7 Z6 T, T6 b8 g
force_local_data_ssl=YES
; D( B0 ~- f2 q: F; \' y& Wforce_local_logins_ssl=YES, I; @* J. K+ d2 b5 \: k
ssl_tlsv1=YES" ?1 S7 ]$ j& O0 S/ ^8 V' U
ssl_sslv2=NO
3 Z8 h& Q3 P4 x h( N. `9 c& }2 d, Hssl_sslv3=NO1 P( J; M. s# W
rsa_cert_file=/etc/vsftpd/vsftpd.pem
$ f% r6 L' Z. @8 W% Fssl_ciphers=HIGH$ t. v$ t: e, B* e* H- W7 G4 C
) R8 e/ y0 N. ^$ I/ I#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启- K1 t& J% J: ?. n
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
( q* ^' k# W# J0 O当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
. j" B# [* y% h$ p. X#debug_ssl=YES // 输出ssl相关的日志信息7 Y5 D e$ h) Y& u- A5 L/ [9 w
, R: T# t% e1 U; j4 d% y
3 Z5 w6 U& u6 Y9 E+ d
|