加密ssl vsftp、ftp隐式加密&显式加密_如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。8 W$ g/ T3 \9 j8 p2 M! s
$ K4 ?9 O, [& r9 L& @/ [3 `6 C6 ]
FTP over SSL (Implicit)隐式ssl与FTP over SSL (Explicit)显式ssl:
# x* J) J. w3 U) Avsftp默认启动时用的是显式ssl,也可以配置启用隐式ssl,对应端口21(可修改成990)! Y, H) N! ^% r3 G
- 显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
- 隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。* M/ f ^- s; U) _
U: V+ @, V& C- `, G- Ussl加密的vsftp(vsftp with OpenSSL)
' L# B/ {0 X9 N$ z, W# ` P- \2 C2 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& s1 i7 S- R" k3 ^( B; E# u3 u
ssl_enable=YES% \/ }' f6 e, o1 ^
allow_anon_ssl=NO
7 e) G% i/ i, j) C A' R9 Qforce_local_data_ssl=YES
) c6 T& S+ P! Y+ W1 T2 _force_local_logins_ssl=YES9 x6 N+ |6 p) z9 s5 T
ssl_tlsv1=YES
# e# Q( a0 d1 q4 M" pssl_sslv2=NO \, |' k S, t
ssl_sslv3=NO8 c) v9 U$ ?, p5 R1 O$ ?7 b
rsa_cert_file=/etc/vsftpd/vsftpd.pem
6 J" Z8 T2 t" g, issl_ciphers=HIGH - f. 默认不启用隐式ssl功能,相应的服务器端隐式ssl默认端口是21(很多客户端隐式ssl连接时,设置的默认端口为990,因此如果服务器的不自定义成和客户端一致的话,会导致连接失败!)。如果启用了隐式ssl,那么ftp客户端也必须以隐式ssl的方式连接到21/990端口,ftp客户端的不加密连接、显式ssl连接都会超时。所以不建议开启该设置!
3 g' T, b( H# l+ E4 h6 T 9 l* S! y) c$ H. z. r
" h/ j1 m+ ]( `2 ]9 @
// ssl设置3 r. }1 p" Q8 U4 P+ u% o
ssl_enable=YES
. h* Y, J1 r' R" H0 q; _. z' [allow_anon_ssl=NO
0 d) s' e/ K, q3 @0 c* s0 pforce_local_data_ssl=YES3 r5 v6 L) j9 O) H2 h/ y
force_local_logins_ssl=YES
1 {1 ^" L& h0 i2 Nssl_tlsv1=YES9 w2 C, U+ t2 p9 i$ c
ssl_sslv2=NO3 t* Q; ^" y. H/ F) \! c
ssl_sslv3=NO
5 g, w0 N# g( i/ _rsa_cert_file=/etc/vsftpd/vsftpd.pem
* W/ }! f9 P8 C* ^1 fssl_ciphers=HIGH. {% P& U4 `/ ?) U4 v, U, z& D0 M
, ~# N* o+ F3 h% `+ Q#implicit_ssl=no // 是否启用隐式ssl功能,不建议开启
$ I A1 Y0 E* o#listen_port=990 // 隐式ftp端口设置,如果不设置,默认还是21,但是
# D) H7 r5 S9 O( ?* z- ~- l当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!# g5 l, \- f7 W/ Z
#debug_ssl=YES // 输出ssl相关的日志信息' G B, z& F; o5 ]/ c
3 X1 c7 [7 o. I, @$ r! ]: l! \2 e: P$ i( Y% E* B6 \3 e; ` ]
|