实现ftp的安全访问控制

ftp简介

FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。

FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unencode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。 FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。

Ftps简介

一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。第二个风险是,这些文件在你等待接收方下载的时候将停留在FTP服务器上,这时你如何保证这些文件的安全。你的第二个选择(创建一个支持SSL的FTP服务器)能够让你的主机使用一个FTPS连接上载这些文件。这包括使用一个在FTP协议下面的SSL层加密控制和数据通道。一种替代FTPS的协议是安全文件传输协议(SFTP)。这个协议使用SSH文件传输协议加密从客户机到服务器的FTP连接。

FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。

创建ftp的步骤。

Mount /dev/cdrom /mnt/cdrom //挂载光盘

Cd /mnt/cdrom/Server //切换到安装包目录

配置yum厂库。

cd /etc/yum.repos.d/

cp rhel-debuginfo.repo localserver.repo

vim localserver.repo

clip_image002

Cd /mnt/cdrom/Server/

Yum install vsftp

启动ftp服务

Service vsftpd start

访问测试

clip_image004

用wireshark抓包工具可以抓的通讯过程中的用户名及密码。

clip_image006

如果你用的本地帐号和密码登录的,被***利用了将会遭到被黑的危险,所以在此提倡使用ftps的方式进行文件传输。

创建并配置ftps。

创建CA

Cd /etc/pki/

Vim tls/openssl.cnf

clip_image008

clip_image010

Cd CA/

Mkdir crl certs newcerts

touch index.txt serial

echo "01" > serial

clip_image012

openssl genrsa 1024 >private/cakey.pem //创建CA的私钥

创建CA证书。

clip_image014

更改私钥权限

chmod 600 private/cakey.pem

clip_image016

mkdir /etc/vsftpd/certs

cd /etc/vsftpd/certs/

为ftp产生私钥

openssl genrsa 1024 >vsftpd.key

创建请求文件。

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

clip_image018

创建证书

clip_image020

更改文件权限

chmod 600 *

clip_image022

更改ftp的主配置文档

vim /etc/vsftpd/vsftpd.conf

插入如下内容:

clip_image024

重新启动ftp服务。

Service vsftpd restart

用windows客户端访问结果。

clip_image026

clip_image028

抓包图:

clip_image030

可从观察得知传输的数据和用户名都进行了加密,此时的安全性也就大大提高了。