Jusene's Blog

vsftpd+ssl实现ftps

字数统计: 532阅读时长: 2 min
2017/04/04 Share

ftps

正如我们所说的ftp明文传输,只要有人监听网络,抓取网络传输报文就可以很轻松的得到ftp明文的用户名和密码,为了安全,这里我们和http一样的原理实现ftps。

自建CA

自建ca还是和ftp在同一台服务器

1
~]# (umask 077;openssl genrsa -out /etc/pki/CA/privite/cakey.pem 4096)
2
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
3
~]# mkdir /etc/pki/CA/{newcerts,certs,crl}
4
~]# touch /etc/pki/CA/{serial,index.txt}
5
~]# echo 01 > /etc/pki/CA/serial

签署证书

1
~]# cd /etc/vsftpd/
2
~]# mkdir ssl
3
~]# cd ssl
4
~]# (umask 077;openssl genrsa -out ftp.key 2048)
5
~]# openssl req -new -key ftp.key -out ftp.csr -days 365
6
~]# openssl ca -in ftp.csr -out ftp.crt -days 365

修改配置

1
cat /etc/vsftpd/vftpd.conf
2
ssl_enable=YES
3
ssl_tlsv1=YES
4
ssl_sslv2=YES
5
ssl_sslv3=YES
6
allow_anon_ssl=NO
7
force_local_data_ssl=YES
8
force_local_logins_ssl=YES
9
rsa_cert_file=/etc/vsftpd/ssl/ftp.crt
10
rsa_private_key_file=/etc/vsftpd/ssl/ftp.key

测试

local 用户登录

1
~]# ftp 10.211.55.35
2
Connected to 10.211.55.35 (10.211.55.35).
3
220 (vsFTPd 2.2.2)
4
Name (10.211.55.35:root): jusene
5
530 Non-anonymous sessions must use encryption.
6
Login failed.
7
ftp> ^C
8
ftp> 221 Goodbye.

匿名用户登录,我们明确指出anonymous不需要ssl加密会话

1
~]# ftp 10.211.55.35
2
Connected to 10.211.55.35 (10.211.55.35).
3
220 (vsFTPd 2.2.2)
4
Name (10.211.55.35:root): anonymous
5
331 Please specify the password.
6
Password:
7
230 Login successful.
8
Remote system type is UNIX.
9
Using binary mode to transfer files.
10
ftp> ls
11
227 Entering Passive Mode (10,211,55,35,189,49).
12
150 Here comes the directory listing.
13
drwxr-xr-x    2 0        0            4096 May 11  2016 pub
14
226 Directory send OK.

需要测试ssl加密登录,我们可以在windows中下载第三方ftp登录工具

ssl配置选项简单说明

  • ssl_enable:开启ssl会话功能,ssl的配置都依赖这个功能
  • allow_anon_ssl:允许匿名用户使用ssl会话
  • force_anon_data_ssl:强制匿名用户使用ssl加密数据传输
  • force_anon_logins_ssl:强制匿名用户使用ssl登录
  • force_local_data_ssl:强制local用户使用ssl加密数据传输
  • force_local_logins_ssl:强制local用户使用ssl登录
  • ssl_sslv2 ssl_sslv3 ssl_tlsv1 ssl_tlsv1_1 ssl_tlsv1_2 支持的加密版本
CATALOG
  1. 1. ftps
    1. 1.1. 自建CA
    2. 1.2. 签署证书
    3. 1.3. 修改配置
    4. 1.4. 测试
    5. 1.5. ssl配置选项简单说明