天天看点

通过vftps和虚拟帐号增强ftp的安全性

原理介绍:

一、帐号登录:

1.匿名帐号  anonymous 

2.本地帐号  服务器本地的帐号

3.虚拟帐号  虚拟帐号-->映射-->物理帐号

二、ftp的安全性:

由于ftp协议属于明文传输,因此帐号安全是ftp的一个重大问题因此我们需要通过一些方法来确保ftp的安全;在vsftp中,默认使用本地帐号和匿名帐号登录服务器,如果被他人获取ftp帐号,便可以通过此帐号登录ftp服务器的主机,因此对ftp的安全性会有很大的威胁;

再次通过两种方法来增加ftp服务器的安全性:

1 使用ssl安全套接层对ftp进行加密传输;

2 使用虚拟帐号技术来保证帐号和服务器的安全性;

三、为Internet上的FTP服务器,系统的安全性是非常重要的,这是建立FTP服务器者所考虑的第一个问题。其安全性主要包括以下几个方面:   

1 、未经授权的用户禁止在服务器上进行FTP操作。   

2 、FTP用户不能读取未经系统所有者允许的文件或目录。   

3 、未经允许,FTP用户不能在服务器上建立文件或目录。   

4 、FTP用户不能删除服务器上的文件或目录。 

5 、FTP用户不能切换目录;

四、SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

五、虚拟帐号登录原理:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716276UBr5.png"></a>

案例一:通过ssl安全套接层来实现ftps加密传输;

一、实验步骤:

配置服务器ip地址:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716276TmX0.png"></a>

重启network服务:

# service network restart

编辑证书配置文档:

# vim /etc/pki/tls/openssl.cnf

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_13477162779Owi.png"></a>

    //证书文件的主目录

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716283MDCC.png"></a>

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716290v9ko.png"></a>

    //默认国家

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716290YOHa.png"></a>

    //默认省份

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716290yEh7.png"></a>

    //默认城市

搭建CA证书服务器

# cd /etc/pki/CA/

# mkdir crl certs newcerts   //创建证书服务器中所必需的三个目录

# touch index.txt serial    //创建证书服务器中所必须的两个文件

# echo "01" &gt;serial    //在serial文件中写入‘01’的值

# cd private/

# openssl genrsa 1024 &gt;cakey.pem    //产生证书的私钥

# chmod 600 cakey.pem   //改变证书私钥的权限,保护期安全

# openssl req -new -key private/cakey.pem -x509 -days 3650 -out cacert.pem    //通过私钥产生CA服务器的证书文件

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716303KMwA.png"></a>

挂载光盘:

# mkdir /mnt/cdrom

# mount /dev/cdrom /mnt/cdrom/    //挂载

安装vsftp服务

# cd /mnt/cdrom/Server/

# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm   //安装vsftpd服务的包

给vsftp颁发证书:

# mkdir /etc/vsftpd/certs    //创建vsftpd证书存放目录

# cd /etc/vsftpd/certs/

# openssl genrsa 1024 &gt;vsftpd.key    //产生vsftpd自己的私钥

# openssl req -new -key vsftpd.key -out vsftpd.csr   //vsftpd通过自己的私钥产生证书请求

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_13477163035nBN.png"></a>

# openssl ca -in vsftpd.csr -out vsftpd.cert    //通过证书请求,申请证书

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716304TUZs.png"></a>

# chmod 600 *  改变vsftpd证书相关文件的权限

配置vsfpt配置文档:

# vim /etc/vsftpd/vsftpd.conf

添加一下命令:

rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert    //vsftpd证书所在位置

rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key   //vsftpd私钥所在位置

ssl_tlsv1=YES    //支持ssl的1版本

ssl_sslv2=YES    //支持ssl的2版本

ssl_sslv3=YES    //支持ssl的3版本

ssl_enable=YES    //开启vsftpd的ssl加密

force_local_logins_ssl=YES    //对本地用户的登录信息进行加密

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716304NnK4.png"></a>

启动vsftpd:

# service vsftpd start

创建本地帐号:

# useradd test1

# passwd test1

二、实验测试:

使用FlashFXP ftp客户端进行测试:

下载安装FlashFXP后,创建一个ftp站点:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716308ObMb.png"></a>

新建站点:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716309SVVk.png"></a>

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716310EV4n.png"></a>

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716313pM7l.png"></a>

点击连接后,会弹出ftp的证书:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716344Os6l.png"></a>

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716345tPyr.png"></a>

验证成功!!

案例二:通过虚拟帐号保证ftp服务器帐号的安全性;

# mount /dev/cdrom /mnt/cdrom/

安装vsftpd:

# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

安装db_load包:

# rpm -ivh db4-utils-4.3.29-10.el5.i386.rpm

创建虚拟帐号数据库的一个文本文件:

# vim /etc/vsftpd/viruser.txt

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716350zjvE.png"></a>

将viruser.txt生成一个虚拟帐号数据库:

# cd /etc/vsftpd/

# db_load -T -t hash -f viruser.txt viruser.db

编辑vsftp的主配置文档,查看用户通过pam身份验证的接口文件:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716358ByFD.png"></a>

打开pem的接口文件,用于将ftp验证指向定义的用户数据库:

# vim /etc/pam.d/vsftpd

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716364zQzW.png"></a>

编辑vsftpd.conf虚拟帐号映射成真是目录:添加两行

guest_enable=YES

guest_username=localuser

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716364w1tV.png"></a>

启动vsftpd服务:

创建虚拟帐号的映射本地帐号:

# useradd localuser

# passwd localuser

更改localuser家目录的权限:

# chmod a+rx /home/localuser

二、验证测试:

在localuser家目录中创建一个测试文件:

# touch /home/localuser/test.txt

首先登录ftp:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716368b6Hp.png"></a>

使用创建的虚拟帐号test1登录ftp:右击--&gt;登录

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716372XWjA.png"></a>

输入帐号test1:

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716373SJa8.png"></a>

<a href="http://cexpert.blog.51cto.com/attachment/201209/15/5251990_1347716374vS2b.png"></a>

登录成功!!

本文转自 cexpert 51CTO博客,原文链接:http://blog.51cto.com/cexpert/992170