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
由上图可以得知要创建如下文件:
mkdir certs crl newcerts
touch index.txt serial
echo “01” >serial
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
----- #因为在前面我们已经设置过国、省、组织名不严格匹配了,而且只是实验,这里随便写好了 A challenge password []:#挑战口令,直接确定就好 |
vsftpd
rpm –ivh vsftpd
编辑ftp配置文件:
vim /etc/vsftpd/vsftpd.conf
添加如下语句:
创建证书目录
mkdir /etc/vsftpd/certs
证书客户端私钥:
openssl genrsa 1024 >vsftpd.key
CSR 请求文件 (Certificate Signing Request)此文件颁发证书后可删除
openssl req –new –key vsftpd.key –out vsftpd.csr
----- #这个通常写证书客户端网址,这里是我的linux ip O(∩_∩) Please enter the following 'extra' attributes |
颁发证书:
openssl ca –ni vsftpd.csr –out vsftpd.cert
Signature ok Certificate is to be certified until Mar 20 03:53:38 2013 GMT (365 days) 1 out of 1 certificate requests certified, commit? [y/n]y #确定要签? |
更改权限:
chmod 600 certs
创建账户:
useradd user1
重启一下ftp:
service vsftpd restart
登陆:
此时当我们登陆ftp服务器时会得到一个证书,如下:
我们可以看到登陆后在用户家目录下:
openssl虽然可以保证我们的传输数据的安全。但仅仅这样还是不够的,例如,我们可以轻易切换到根目录下,然后
保证ftp正常、稳定、安全的运行,我们还需要对ftp进行适当的配置,例如用户权限的分配,磁盘配额等
更改家目录
vim /etc/passwd
允许匿名账号:
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
检查当前系统所有分区中的磁盘配额信息
quotacheck -aug –c
编辑用户配额
edquota –u user1
编辑用户或组的配额
复制配额信息
edquota –p user1 user2
加到开机脚本
echo “quotaon /dev/sdb1” >>/etc/rc.d/rc.local
可以输出一个文件,测试一下