加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
- [) g. P- j; V" F/ N* P2 o1 d: K; p% }$ `
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
, d$ e7 d7 f" ^0 @( K- i+ U* nvsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
6 L3 {, [3 R j% C% B$ R+ u- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。9 i$ o3 K, a* c' x9 ?
! k$ X( ` s, M6 Bssl加密的vsftp(vsftp with OpenSSL)
+ E! D9 y' o6 G4 T! ?- 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
: x: x7 v2 N) F( L& y: |0 `ssl_enable=YES
' l7 o" y6 t) V: ]( \& [' vallow_anon_ssl=NO) A/ v7 F |- s; w- G5 L) k' |
force_local_data_ssl=YES
1 J; z/ m+ `0 K. h6 C$ b5 F* e4 p8 Pforce_local_logins_ssl=YES
; z$ v1 ~( Y7 X H0 `0 Q5 Kssl_tlsv1=YES
( e) [6 x0 y0 C' ussl_sslv2=NO
. D% j' ?" E! D7 w% o4 nssl_sslv3=NO) b" L" X8 b4 L5 m; r2 h
rsa_cert_file=/etc/vsftpd/vsftpd.pem6 M G( c. c* `7 t9 `8 k
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!, `, l. S# v' V0 Z% C& L L. V W
7 s& ?* s1 T) K( @5 `5 X. k) F U/ X7 r3 d9 @: M8 L' w+ E
// ssl设置; u6 C% n: D/ I% O: d
ssl_enable=YES( R9 l5 ^; \' P3 [; l
allow_anon_ssl=NO
- m3 v1 d5 U2 M( s; |2 x$ n" fforce_local_data_ssl=YES7 b0 d% F! L! \6 B
force_local_logins_ssl=YES" E6 a! [; S% k/ Y1 U0 `" {
ssl_tlsv1=YES. ?1 Y+ v+ O( r1 i
ssl_sslv2=NO
5 Z$ W: c" Z0 \ssl_sslv3=NO
0 }9 n4 |, B5 }6 Drsa_cert_file=/etc/vsftpd/vsftpd.pem
- B6 p j _( i% u9 ^ssl_ciphers=HIGH5 v7 z6 u# h+ N* ?) U& N6 ]
( a" W3 R" `5 G" ?0 ^+ u#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
5 m: \7 w5 E' H4 p; d#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是2 ^' c1 s: j. F- W, e0 j: U
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
# W" f2 J& O5 g#debug_ssl=YES // 输出ssl相关的日志信息
+ J7 c+ ~, ^: t; [/ C" m/ P( V- b, O" U* ~
" m. j3 `+ i( Y( F
|