vsftpd的安全设置

      vsftpd原名是very secure FTP daemon的缩写,安全性是它的一个最大的优点,并且还可以对其进行带宽的限制,创建虚拟用户等 许多的优点。这里就不再讲解它的简单的设置,主要说一下vsftpd的安全设置.

     vsftpd实现用户安全登录的方法主要四种

          1> 配置文件与主目录权限的设置

          2> 简易防火墙tcp_wrappers

          3> FTPSCA认证)

          4> iptables

对于配置文件与主目录权限设置和iptables,不在这节的讨论范围之内,主要讨论23两种方法对vsftpd安全的设置。

     (1) 简易防火墙tcp_wrappers的设置

          1>  在进行此实验之前需要先查看一下你安装的vsftpd软件是否支持tcp_wrappers,可以用如下命令查看 

vsftpd的安全设置_简易防火墙tcp_wrappers

现在我们可以进行下面的实验了。

          2>  tcp_wrappers功能在使用起来比较简单,只是改动系统中的两个文件就可以实现一定的用户及ip地址的控制,即文件:/etc/hosts.allow/etc/hosts.deny

              hosts.allow:表示在此文件中的ip都被允许

              hosts.deny: 表示在此文件中的ip都不被允许

              如果有些IP地址都没有在这两个文件中定义的话,系统就会使用默认的规则,即默认为:允许全部的ip地址通过。

              如果在两个文件中都定义了的ip地址,那么系统会按顺序来使用定义的规则,系统默认是先查找hosts.allow中的规则,如果匹配,则允许其通过,就会忽略hosts.deny中定义的规则。

          3> 实验

               现在我有两台主机,IP地址分别为192.168.2.2192.168.2.12,我们现在可以定义让192.168.2.2可以允许其ip地址为192.168.2.10vsftpd主机,而不允许192.168.2.12来访问。下面还会说一下冲突ip地址,系统对其的处理方式。

               现在我们对hosts.deny进行配置,它的配置很简单,只需要在两个文件中各加入下面的一句话就行了

                [root@mail ~]# vim /etc/hosts.deny      

                vsftpd:192.168.2.2:deny  

                [root@mail ~]# vim /etc/hosts.allow 

                vsftpd:192.168.2.12:allow

               在/etc/hosts.allow可以写也可以不写,因为对于没有设置规则的ip地址,系统中默认允许其通过的。   

:如果在文件hosts.deny定义了规则是拒绝了192.168.2.12,如:拒绝这个网段或全部的ip地址,一定要在hosts.allow中加入这一行。

现在我们就可以进行测试:

      在192.168.2.2  

vsftpd的安全设置_vsftpd安全设置_02

     在192.168.2.12测试                                                                                     

vsftpd的安全设置_FTPS_03

测试的效果是可以的。

有时我们在hosts.allowhosts.deny中都设置有一个相同的ip,紧接着上一个实验测试一下,我们再把192.168.2.2放入hosts.allow,看会出现效果。

           [root@mail ~]# vim /etc/hosts.allow

             vsftpd:192.168.2.12:allow

             vsftpd:192.168.2.2:allow

            [root@mail ~]# vim /etc/hosts.deny

              vsftpd:192.168.2.2:deny

现在在192.168.2.2中查看效果 

vsftpd的安全设置_简易防火墙tcp_wrappers_04

hosts.denyhosts.allow中还可以使用all参数,即允许或阻止全部ip如 除hosts.allow中的ip外,阻止全部另外的ip,可以在hosts.deny中加入以下一行: vsftpd:all:deny    这样就可以达到阻止除了你想让其允许通过的ip

(2) FTPSCA认证)

          单单使用FTP时是极不安全的,别人可以直接使用抓包工具,抓取用户的登录名与密码,我们也可以实验一下,抓包时我们使用wireshark,使用rpm可以直接在Linux下安装

      [root@mail Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm     wireshark-1.0.8-1.el5_3.1.i386.rpm 

Preparing...                ########################################### [100%]

   1:libsmi                 ########################################### [ 50%]

   2:wireshark              ########################################### [100%]  

使用user1登录,试一下能否抓到用户名与密码

vsftpd的安全设置_简易防火墙tcp_wrappers_05

    

可以看到抓取的用户名与密码

   从上面的小实例中可以看出,直接使用FTP是极其不安全的,因此为了保证我们系统的安全性,我们可以使用FTPS,这样使用抓包工具就算抓到用户名与密码也是经过加密的,不能够了直接登录我们的系统。

     配置FTPS,是使用CA对其进行认证,并进行加密,本实验包含三大部分,分别为:

               1. 配置CA认证中心

               2.ftp服务器进行加密

               3.客户端进行认证

     1.    配置CA认证中心

                [root@mail ~]# cd /etc/pki

                [root@mail pki]# cd tls

                [root@mail tls]# vim openssl.cnf 

         修改如下内容

vsftpd的安全设置_vsftpd安全设置_06

vsftpd的安全设置_FTPS_07

创建所需的文件与目录

           [root@mail CA]# mkdir certs crl newcerts

           [root@mail CA]# touch index.txt serial

           [root@mail CA]# echo "01">serial

     

          配置CA服务器的密钥

     [root@mail CA]# openssl genrsa 1024 >./private/cakey.pem

        Generating RSA private key, 1024 bit long modulus

        ..............++++++

        ............................++++++

        e is 65537 (0x10001)

   为自己颁发证书,以保证自己是可信任的

  

vsftpd的安全设置_简易防火墙tcp_wrappers_08

 

   2.ftp服务器进行加密

     现在来进行ftp服务器应用ssl,配置ftps

       先在/etc/vsftpd文件中创建一个存放密码与证书的目录,并进入目录

       [root@mail CA]# mkdir /etc/vsftpd/certs

       [root@mail CA]# cd /etc/vsftpd/certs

       [root@mail certs]# 

为服务器创建私钥

  [root@mail certs]# openssl genrsa 1024 > vsftpd.key

    Generating RSA private key, 1024 bit long modulus

    .................++++++

     .....++++++

     e is 65537 (0x10001)  

 创建一个用于向CA认证中心申请的请求证书

vsftpd的安全设置_简易防火墙tcp_wrappers_09

 向CA认证中心进行证书请求

vsftpd的安全设置_简易防火墙tcp_wrappers_10

请求成功之后就可以开始认证了。

   对配置文件vsftpd.conf进行设置,使其支持ftps

[root@mail certs]# vim /etc/vsftpd/vsftpd.conf

添加如下内容

 ssl_enable=yes

ssl_sslv2=yes

ssl_sslv3=yes

ssl_tlsv1=yes

rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key

rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert

force_local_data_ssl=yes

force_local_logins_ssl=yes

 做到现在FTPS可以说已经做成了,现在只要去验证是否成功。

  

  3.客户端进行认证

现在在192.168.2.2上进行验证(注意把在hosts.deny中的规则删除)        

vsftpd的安全设置_FTPS_11

可以看出直接使用ftp是不可以登录的

  Ftps是不能直接使用命令或浏览器登录的,我们需要使用专门的软件来登录,我下载 了一个FlashFXP-v4.0.1548.zip来进行这个实验,把这个文件安装上

   测试时并进行抓包

       

vsftpd的安全设置_FTPS_12

点击最下面的“连接”进行登录

  登录后会出现下面的图像框,就说明我们的ftps配置成功了。

vsftpd的安全设置_简易防火墙tcp_wrappers_13

点击“接受一次”或“接受并保存”就可以看到自己ftp主目录下的文件。

抓包的内容我们也可以看一下

vsftpd的安全设置_简易防火墙tcp_wrappers_14

可以看出登录信息已经经过了加密,安全性大大提高。

实验结束