加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。1 m B$ {* |7 x8 Z
- T! Q J" f6 y* a& wFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
8 \ p! R) A/ Q7 _9 t, E2 Ivsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)3 e& f. |4 [% T* }# l, `* L$ \* z
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
4 _6 h, m" q \0 d) v0 S
* Q+ c$ q( ~& K7 {* Zssl加密的vsftp(vsftp with OpenSSL)$ i5 _8 k9 J- P: @3 p3 K
- 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
6 Z* z0 \! w% d( [ Yssl_enable=YES! Y1 i! V- a! \ C; n% R4 R. h2 H
allow_anon_ssl=NO
9 V( Q+ I; r7 s2 `' r7 u6 ?6 iforce_local_data_ssl=YES3 B( M3 K4 i: Q) C2 g7 y
force_local_logins_ssl=YES8 n. @5 V; ^. c M" [" A
ssl_tlsv1=YES. T$ I g! Q, c8 [9 e
ssl_sslv2=NO: s1 x% T; I% w; t
ssl_sslv3=NO$ `. v/ N7 X3 e& ` {! o
rsa_cert_file=/etc/vsftpd/vsftpd.pem3 o' P. o7 F3 ~/ s% ]! z( v
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!+ ]0 Z# [1 T- \
# U7 ~. H4 ^. d5 l# \$ U+ w: D. _) `- v- t/ D' l
// ssl设置' T" Q2 L6 f: e% M+ Y/ {1 ~( H
ssl_enable=YES8 V5 W$ X: A( F7 |8 K9 E
allow_anon_ssl=NO
2 P% ~. Y1 H: b* @$ u) mforce_local_data_ssl=YES- e3 Y4 |$ u" Y( O4 b4 ^5 v
force_local_logins_ssl=YES+ J- M7 J! w, {
ssl_tlsv1=YES
p. _2 g" [2 ~, l# k2 Jssl_sslv2=NO! ?: `) K% `9 A8 n4 J: O+ Q6 n2 R
ssl_sslv3=NO& ?9 A+ r7 v5 |+ @$ c1 O- ?
rsa_cert_file=/etc/vsftpd/vsftpd.pem
- D# T) B: K J: fssl_ciphers=HIGH
! G0 ^( R& W" l- Z& L8 Q" ~: i4 _4 M3 C2 d
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启: w i2 {* M; @5 {# ]
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是5 b a3 @7 ~5 c, O( R
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!- H# l$ o2 [6 j' ]% `
#debug_ssl=YES // 输出ssl相关的日志信息9 U. d2 Y& @# w+ r; Q
1 K) F: z+ N: Y8 [
% P' v: b( _% p0 F |