加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。
: Y( N" K, s. O. U' G" r5 t
2 m' ^, }1 Q3 gFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
/ X" |$ B% d+ r7 J: u" vvsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
2 F: B+ e/ G) q& o1 Z9 b- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。, y& i7 |9 g" q% l+ {
8 o( v- f( c! b$ K% sssl加密的vsftp(vsftp with OpenSSL)
* C' M9 K5 ]+ W+ \4 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,设置强制启用ssl! ~5 x0 l- d6 X& a
ssl_enable=YES; O2 e o5 ^5 T+ m
allow_anon_ssl=NO
7 W- v3 e; W, n2 ~: k+ b4 J9 Zforce_local_data_ssl=YES
7 E: W8 F7 |8 q) @force_local_logins_ssl=YES% Q$ v9 O& ] z8 H/ F
ssl_tlsv1=YES
a; c0 l" o' v. Q- Q0 M8 f( B ?" rssl_sslv2=NO
1 S/ R* n q5 }" {, O) q9 {& Qssl_sslv3=NO
4 L' n* r* w7 X% f7 C5 rrsa_cert_file=/etc/vsftpd/vsftpd.pem1 e1 S! m. v2 }( L" Y
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!7 y; h- p- q, e5 m3 z
$ a1 K# h9 S* n* d+ K- A
- @6 s" G/ T8 x' ?1 B// ssl设置2 G! ]# g1 X& J# p
ssl_enable=YES
* B6 _1 |: T) ]allow_anon_ssl=NO
2 R; }- M/ Y/ u4 r5 [0 Z# k& aforce_local_data_ssl=YES0 `+ I) ~! L5 F6 N k% v4 z( ?
force_local_logins_ssl=YES
7 {- ~# `+ [$ x' x$ Z/ W# t; o4 z$ issl_tlsv1=YES
5 x% O4 a! N8 [" \( I' nssl_sslv2=NO
4 A9 Y0 f( C/ V/ ~! z* hssl_sslv3=NO" J* h( M' G+ z. G% I4 t! ^
rsa_cert_file=/etc/vsftpd/vsftpd.pem2 K* H* o2 q0 m
ssl_ciphers=HIGH
7 @* b. F6 ], F5 P N8 \2 h8 z0 Q" q0 d2 U
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启% M h' P) e: O
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
6 C0 n# @0 h* @当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!/ o5 i: O, i" f! k. R5 a
#debug_ssl=YES // 输出ssl相关的日志信息
8 N( d8 l, ?+ y2 Z$ ]% g& p1 a. x7 Z+ u1 m( M
9 K2 n: s- C# ?# ?" M9 r4 l
|