加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
+ a1 y2 C0 V( { q0 R; y2 U
7 R* ?5 H# H# @! i$ f6 n6 ?FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
+ O% I9 H8 N+ a+ ^. Y' D# ~vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
6 _1 k5 P' {4 k1 Z# m0 }- g- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。( {. n: K% z1 p% j2 W. `5 W+ E' S
) P2 @& [( l, r- i
ssl加密的vsftp(vsftp with OpenSSL)2 f0 m: I6 Z6 b1 u2 a# 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
4 k, j$ i; m5 U1 H0 M1 |ssl_enable=YES
+ b& C1 |/ \! `, Ballow_anon_ssl=NO' {) n4 S4 Q8 Q& M: j. S/ f
force_local_data_ssl=YES
$ p/ Q* D. K: u* u9 c; {force_local_logins_ssl=YES9 \. P* i9 ~9 ~% C4 O6 X" s
ssl_tlsv1=YES/ a" G6 e- R6 @1 ^
ssl_sslv2=NO H# ^+ p3 F% y; G# S. U
ssl_sslv3=NO2 B1 V1 \! `1 G6 u7 `
rsa_cert_file=/etc/vsftpd/vsftpd.pem6 r3 w) `# e# }! l. M9 G0 u8 V' l
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!0 r. Z! t% H5 i" ]+ G. u1 R/ }
" m* p4 Q7 c& q% U7 Q2 O/ s- c
; X' o0 o7 C, L8 V! X# r) l+ z
// ssl设置
/ k8 _' g& f5 K5 h. o) V: i+ Issl_enable=YES8 W: C/ Y' A8 j6 n5 e
allow_anon_ssl=NO
: }( ?' D8 e! y2 I% Sforce_local_data_ssl=YES
" E* v5 V3 v( I. I8 C# F+ Iforce_local_logins_ssl=YES' a) B. g9 P1 E4 T. h
ssl_tlsv1=YES. }7 I3 m J7 o1 o5 Q
ssl_sslv2=NO
. D# ^, G- l2 j7 y, a* [0 L0 issl_sslv3=NO
) u; F% q0 d. x/ s- T* trsa_cert_file=/etc/vsftpd/vsftpd.pem
1 Z1 D0 L0 @; q, ]8 ussl_ciphers=HIGH: ]: C# [, U- j* L; {
4 L( d+ L3 N# d2 \0 D E#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
5 W: ^! _$ j3 r& m7 v#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
9 e3 a2 o+ t: `. n# s当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!: N; [# _. W3 B/ ^+ }1 o/ x0 _
#debug_ssl=YES // 输出ssl相关的日志信息! [+ G( T9 q: Z" [3 `
& J" k) P# b/ _. A* N9 Y) @/ r3 u( r8 w# @1 {# Q: l
|