一、FTP作用与工作原理
1、作用:
用户可以通过FTP连接到远端一个运行着FTP服务的计算机上上传下载文件.
2、工作原理:
支持FTP协议的服务器都可以理解为FTP服务器.FTP协议有两种连接方式,一种是控制连接,另一种是数据连接.而在数据连接的时候也有两种工作模式,即主动模式与被动模式.
主动模式图示:
工作原理:
a、客户机通过自己的Y端口(大于1024)
向服务器发起请求 连接服务器的21端口
b、服务器的21端口对客户机做出回应
c、服务器打开20端口连接客户机的Y+1端口
d、客户机响应服务器,数据开始传输.
被动模式图示:
工作原理:
a、客户机通过自己的Y端口(大于1024)
向服务器发起请求,连接服务器的21端口
b、服务器的21端口响应客户机
c、服务器打开一个大于1024的随机端口连接客户机的Y+1端口.
d、服务器响应客户机 数据传输开始.
环境:vsftpd-2.2.2 CentOS-6.5-i386 FlashFXP4_1548_Setup
二、利用Centos自带的openssl实现CA
在实现FTPS之前呢,可以先测试一下ftp的安全性.ftp是明文传输的,在用户名密码在传输的过程中肯定不安全的。另开启一台主机并安装wireshark工具进行抓包.
这就是要实现FTPS的直接原因.
1、挂在光驱并安装vsftpd、openssl
mkdir /media/cdrom #创建挂在点 mount /dev/cdrom /media/cdrom #挂在光盘 yum --disablerepo=\* --enablerepo=c6-media install vsftpd #安装ftp yum --disablerepo=\* --enablerepo=c6-media install openssl #安装openssl
2、修改openssl的配置文件
修改默认匹配策略.
# For the 'anything' policy # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional ####################################################################
注:
快速修改指令:85,87 s/match/optional
修改默认国家省市.
[ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = CH #默认国家 countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = HN #默认省份 localityName = Locality Name (eg, city) localityName_default = ZZ #默认城市 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Default Company Ltd # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd
3、切换到/etc/pki/CA/目录下
touch index.txt touch serial echo "01" >serial openssl genrsa 1024 >private/cakey.pem #产生私钥 chmod 600 cakey.pem #更改权限,增加安全性 openssl req -new -key private/cakey.pem -x509 -out cacert.pem #颁发CA证书
4、vsftpd的配置
mkdir -pv /etc/vsftpd/certs #创建放置私钥、请求文件、证书的目录 cd /etc/vsftpd/certs openssl genrsa 1024 >vsftpd.key #产生FTP私钥 chmod 600 vaftpd.pem #更改权限 openssl req -new -key vsftpd.key -out vsftpd.req #产生证书请求文件 openssl ca -in vsftpd.req -out vsftpd.cert #请求CA颁发证书
修改配置文件.
在配置文件的最后加上下列配置:
force_local_data_ssl=YES force_local_logins_ssl=YES ssl_enable=YES ssl_sslv2=YES ssl_sslv3=YES ssl_tlsv1=YES rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key
5、OK.配置完成之后启动服务进行测试.注意观察抓包内容,全部变成密文的了!而不像之前的账号密码都可以看得一清二楚.