加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。, y9 w2 X. T3 m
9 p2 `% ~5 l$ N" r( X. s
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
6 M3 _8 B; `/ c8 q. k9 Kvsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)4 i1 @. A7 l( C$ A7 {& @
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。
- t. Z2 Y" s6 | $ D2 {* n! Z# b$ X
ssl加密的vsftp(vsftp with OpenSSL)
3 Q) G; i( t. 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
: r' A3 Z' `0 v2 g, A2 q5 ^8 Cssl_enable=YES1 n! m* j* a4 ?5 W# M* ]5 c
allow_anon_ssl=NO$ i. V4 H1 v9 {- I9 s
force_local_data_ssl=YES& \' _! ~/ C% Q) ~: e
force_local_logins_ssl=YES
2 U/ x( V; J- l& Cssl_tlsv1=YES+ m: T' U4 ?: `$ D: K
ssl_sslv2=NO3 o5 p) x* o7 r1 _
ssl_sslv3=NO
7 v) i4 \& K& ` M n4 [4 }9 r. Crsa_cert_file=/etc/vsftpd/vsftpd.pem# d: }7 T5 d2 I' J
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
2 h- e) I3 j! w+ f/ x; u7 ` u
2 p: B% L* o% Z& [# F- H/ _0 L; ^, V g8 ?, P7 d- k: ?: G
// ssl设置! Q* O* }2 z. j0 e; O2 a
ssl_enable=YES# V3 I! X/ U! S: a! t
allow_anon_ssl=NO
+ H/ T2 N% o+ e/ G6 u0 J! Cforce_local_data_ssl=YES
6 \5 j3 l9 K8 {1 ?% Qforce_local_logins_ssl=YES2 C" W7 t# @. @. O C- k6 g
ssl_tlsv1=YES
6 Q d$ G, G" w8 h4 L0 Cssl_sslv2=NO
- G# X. r$ Q& ~" }7 Bssl_sslv3=NO/ A$ ?7 o/ ^0 v" Q! d8 k( i# E
rsa_cert_file=/etc/vsftpd/vsftpd.pem
9 ]+ g l6 _/ u* R0 o7 }ssl_ciphers=HIGH+ D( q2 f0 B2 K' B
( |5 L% W3 y+ d$ X* B#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
6 e9 E5 y( [' \' ~! p#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
4 n1 `1 b$ G) h5 Q7 ^5 G当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
* C9 x: F1 y# ?! i#debug_ssl=YES // 输出ssl相关的日志信息
+ H; u! @2 K! n1 J( H7 @7 G1 X" @) A( p+ [: r; d h: U0 o( k
8 V7 d9 {+ `! X+ ^+ P
|