加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。1 u$ \ h! A; G/ M& ?: J' `
" X! v: ^8 b( Q5 Q vFTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
4 j- }( w% G* c+ x4 O" Q* b9 M8 }vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
# V- c- Q2 o9 d9 L9 t( s6 C- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。9 E; t4 K, c, t$ f% Y
?4 L3 @* {% z! }5 m: t* F
ssl加密的vsftp(vsftp with OpenSSL)! @# M$ P1 q# ^* A! d
- 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. N8 `# B: D5 O# S
ssl_enable=YES* M7 C2 T) h: N7 m# s3 g" ^) L1 H
allow_anon_ssl=NO
9 o$ R% g# Z9 T6 T/ P0 Xforce_local_data_ssl=YES, p G' n7 Z9 |2 l4 C, Q( [2 a1 m8 F
force_local_logins_ssl=YES
- g) \' ^3 R+ Q! \+ l$ ~ssl_tlsv1=YES" f5 L4 e9 \5 P6 r% a( P1 ^9 q) ?
ssl_sslv2=NO& h/ ?( u( J4 ^3 M8 t$ I7 E
ssl_sslv3=NO! j9 s0 e f% T1 y H5 I
rsa_cert_file=/etc/vsftpd/vsftpd.pem" s7 F( Z. ]( e; M" l: w
ssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置! }: p3 ?# q# u. b* u8 I
) y m5 q+ H, U" ?' f% _9 s
* h7 B( ~* E4 x. y' [( @; {/ n
// ssl设置4 i1 @1 X+ H8 `' t4 [ O
ssl_enable=YES
3 C" G5 M7 Q( M4 N5 k: Qallow_anon_ssl=NO! h0 o1 D1 x z2 m) V9 S. Q
force_local_data_ssl=YES
; X( Y) w0 G8 sforce_local_logins_ssl=YES2 I$ ^' r' D' e
ssl_tlsv1=YES8 I6 J2 V+ v, W+ e$ n7 b( x7 ?. }. Q
ssl_sslv2=NO4 M, N; ?8 `# {+ g9 Y
ssl_sslv3=NO
6 m$ H( W1 a5 Y# o" D; arsa_cert_file=/etc/vsftpd/vsftpd.pem$ z) n+ R/ O) {5 `1 Y
ssl_ciphers=HIGH
7 l3 J3 D/ @. |7 n2 U
$ D. ]# _$ u; T#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启1 |( k% K: f0 D( J- V: k- ^
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是4 |1 G6 ]0 d$ X3 G* R9 c2 ]9 K; q
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!# U9 t- T( v, Z1 U
#debug_ssl=YES // 输出ssl相关的日志信息+ H/ Z) c$ N+ }+ H. M- I) i. }
1 @9 q4 q( @" W4 c' V! C o$ W t, l
|