加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。3 \7 a7 }) A' c+ \9 I# w
7 e' O( r' Q' F) z& ]
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:& g) G0 m! o! Z
vsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)
5 E/ p4 r7 l0 s! U4 S. L- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。8 U3 w9 f/ D3 e
6 i2 D# J) Q$ }) P! B7 @ssl加密的vsftp(vsftp with OpenSSL)7 A$ P4 u }' c4 `& j7 Y8 a: O
- 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
. W$ Q; G* E" ]3 J6 Lssl_enable=YES
7 ^) B1 _9 V+ Dallow_anon_ssl=NO
W! q, }" o% T6 g8 Fforce_local_data_ssl=YES
8 ]8 d$ `3 X, Q C Q hforce_local_logins_ssl=YES) c" C/ f2 K; p) ]: g% \: N
ssl_tlsv1=YES
, n i: ?, A- v$ L0 B7 J- R/ Essl_sslv2=NO
& a9 H( C0 W% d- h( f5 o: `ssl_sslv3=NO2 B5 n8 O) I' y7 }/ G8 H( q& Z
rsa_cert_file=/etc/vsftpd/vsftpd.pem
$ o! }+ O0 @/ ~+ |) g! cssl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
% @4 |, Y( M/ j, U & d5 Y0 n: z7 f$ p: F) y
4 i2 M `. V' H1 [// ssl设置
8 }( B" W8 E" Q6 Nssl_enable=YES8 T% W# a" B7 `* z. f+ d) v
allow_anon_ssl=NO
, i( l% O* E( [( Z6 y+ Eforce_local_data_ssl=YES
1 _- V! }1 F9 }2 h8 eforce_local_logins_ssl=YES
2 f7 m; f/ p7 j2 Y% sssl_tlsv1=YES# R1 t+ J1 a ?: k3 {4 I
ssl_sslv2=NO
& f9 a& y! R$ y% g# ossl_sslv3=NO
$ Z: T% Z: _& irsa_cert_file=/etc/vsftpd/vsftpd.pem$ \- D* ~1 t* ]& X, e
ssl_ciphers=HIGH$ L8 H; \, H0 I/ H
; r8 V! l& i* M) x1 d
#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启. V6 P; X0 p" k5 d+ |
#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是$ N* `6 y5 ?0 s2 a+ _
当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!3 \# U/ {2 ?; h# }" |* e5 n
#debug_ssl=YES // 输出ssl相关的日志信息: x; w; w3 e7 ]0 x8 U
: _4 c0 f& x2 U% u9 p g
" Z" C3 I+ Z( h0 A3 J. R |