ftps是多传输协议,在一般情况下,ftp是明文传输的,***者可以窃听传输中的数据,造成信息容易泄露。所以我们可以结合ssl来实现安全的数据传输。ssl (Secure Socket Layer) 安全套阶层,是在客户机和具有SSL功能的服务器之间的保证安全连接的协议,它能确保数据发送到正确的客户机和服务器,并加密数据、保持数据在传输过程中的完整性 。ftps就是ftp+ssl,相当于加密版的ftp,因此FTPS也称作“FTP-SSL”和“FTP-over-SSL”。

openssl

yum install openssl*

cd /etc/pki/

vim tls/openssl.cnf 

更改45行          =/etc/pki/CA

p_w_picpath

由上图可以得知要创建如下文件:

mkdir certs crl newcerts

touch index.txt serial

echo “01” >serial

match替换为optional

p_w_picpath :88,90 s/match/optional

 

 

 

证书服务器生成私钥

cd /etc/pki/CA/private

openssl genrsa 1024 >cakey.pem

为了安全最好更改一下私钥权限:

chmod 600 cakey.pem

自签发:

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

-----

#因为在前面我们已经设置过国、省、组织名不严格匹配了,而且只是实验,这里随便写好了
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:HN
Locality Name (eg, city) [Newbury]:ZZ
Organization Name (eg, company) [My Company Ltd]:ZZU
Organizational Unit Name (eg, section) []:NET
Common Name (eg, your name or your server's hostname) []:root.net  #这里写的是证书服务器的地址,当然这里也是最便写的
Email Address []:

A challenge password []:#挑战口令,直接确定就好
 

 

vsftpd

rpm –ivh vsftpd   

编辑ftp配置文件:

vim /etc/vsftpd/vsftpd.conf

添加如下语句:

p_w_picpath

创建证书目录

mkdir /etc/vsftpd/certs

证书客户端私钥:

openssl genrsa 1024 >vsftpd.key

CSR 请求文件 (Certificate Signing Request)此文件颁发证书后可删除

openssl req –new –key vsftpd.key –out vsftpd.csr

-----
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:HN
Locality Name (eg, city) [Newbury]:ZZ
Organization Name (eg, company) [My Company Ltd]:ZZU
Organizational Unit Name (eg, section) []:NET
Common Name (eg, your name or your server's hostname) []:192.168.101.188

#这个通常写证书客户端网址,这里是我的linux ip O(∩_∩) 
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

颁发证书:

openssl ca –ni vsftpd.csr –out vsftpd.cert

Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Mar 20 03:53:38 2012 GMT
            Not After : Mar 20 03:53:38 2013 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HN
            organizationName          = ZZU
            organizationalUnitName    = NET
            commonName                = 192.168.101.188
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                44:2D:1B:1F:84:DD:BB:D3:4C:FF:B0:3B:89:80:AD:74:AA:A0:3E:1B
            X509v3 Authority Key Identifier:
                keyid:56:FD:BD:54:59:0D:3F:0B:27:1A:08:EB:10:95:CA:4B:E1:C2:BA:35

Certificate is to be certified until Mar 20 03:53:38 2013 GMT (365 days)
Sign the certificate? [y/n]:y  #是否签发?

1 out of 1 certificate requests certified, commit? [y/n]y   #确定要签?
Write out database with 1 new entries
Data Base Updated

更改权限:

chmod 600 certs

 

创建账户:

useradd  user1

重启一下ftp:

service vsftpd restart

 p_w_picpath

登陆:

此时当我们登陆ftp服务器时会得到一个证书,如下:

p_w_picpath

p_w_picpath

我们可以看到登陆后在用户家目录下:

p_w_picpath

openssl虽然可以保证我们的传输数据的安全。但仅仅这样还是不够的,例如,我们可以轻易切换到根目录下,然后

p_w_picpath 

p_w_picpath

保证ftp正常、稳定、安全的运行,我们还需要对ftp进行适当的配置,例如用户权限的分配,磁盘配额等

 

更改家目录

vim /etc/passwd

p_w_picpath 或:

p_w_picpath

允许匿名账号:

p_w_picpath 

local_enable=YES   本地账户

anon_upload_enable=YES   匿名上传

anon_mkdir_write_enable=YES   匿名可写、创建

idle_session_timeout=600     回话超时

data_connection_timeout=120  连接超时


匿名账号家目录修改:vim /etc/vsftpd/vsftpd.conf

128 anon_root=/mnt/ftphome/anon

匿名账号下载速度:100k
anon_max_rate=100000         #byte

本地账号下载速度:
local_max_rate=1000000

允许最大连接数
max_clients=3

每个用户连接数
max_per_ip=2

 

 

磁盘配额

 

开机自动挂载该分区vim /etc/fstab

p_w_picpath

检查当前系统所有分区中的磁盘配额信息

quotacheck -aug –c

编辑用户配额

edquota –u user1

编辑用户或组的配额

p_w_picpath

复制配额信息

edquota –p user1 user2

加到开机脚本

echo “quotaon /dev/sdb1” >>/etc/rc.d/rc.local

 可以输出一个文件,测试一下

p_w_picpath