Linux下配置FTP服务

一、实验环境

两台Linux主机,一台作为FTP服务器,另一台作为FTP客户机。

二、实验步骤

1.服务器端

(1):配置主机IP,为静态IP。

(2):修改内容如下

(3):重启网络服务

2.客户机端

(1):配置主机IP,为静态IP

(2): 修改内容如下

(3):重启网络服务

3.配置服务器端

(1):查看服务器端是否安装了安装FTP服务

发现已经安装

(2):启动FTP服务

(3):查看FTP服务端口

发现21号端口已经开启(20号是数据传输带端口,21号是传输控制端口)

4.客户机端

安装客户端FTP

mount /dev/sr0 /mnt    挂载光盘镜像

rpm -ivh /mnt/Packages/ftp-0.17-54.el6.x86_64.rpm  安装FTP客户端(也可以使用yum进行安装。但是由于FTP客户端不具有依赖关系,因此可以使用rpm进行安装)

5.在客户端使用匿名用户进行登录

FTP中默认有两个匿名用户

账号:ftp   密码:空密码(直接回车)

账号:anonymous    密码:guest

匿名用户登录后默认进入var/ftp目录。默认共享pub文件夹

cd /    想要使用匿名用户进入到根目录

ls   查看该目录下的文件

发现并没有显示根目录的文件。说明FTP默认不支持使用匿名用户进行到根目录

使用另一个FTP匿名用户进行上述验证

发现和上面匿名用户登录结果是一样的。

也可以使用浏览器来进行登录(匿名用户不用指定用户名密码)

6.新建用户进行登录

(1):在服务器端新建用户

(2):使用新建的用户进行登录

先关闭服务器端的防火墙和selinux

再使用新建用户从客户机进行登录

也可以使用客户机浏览器进行登录

格式:ftp://用户名:密码@主机IP或域名

       使用新用户登录,发现了一个非常可怕的问题。新建的本地用户可以切换到根目录下。这存在着非常严重的安全问题。试想一下,攻击者如果得到本地FTP用户的账号和密码,那么FTP服务器中的所有文件都可以被攻击者浏览甚至下载。为了解决这个问题,可以创建虚拟用户,使虚拟用户的映射到本地用户。这样就可以解决这个安全问题。

7.创建虚拟用户(服务器上操作)

(1):新建ftphome目录

(2):新建一个ftptest用户并且将其加入到ftphome/ftptest下

(3):在etc/vsftpd下新建一个txt文件,将映射的用户名和密码写在该目录下

Login.txt文件内容如下:

这表明创建了四个虚拟用户

(4):将txt文件转换成数据库(db)文件

(5):修改配置文件pam.d

pam.d文件是验证登录配置文件

(6):修改vsftpd文件

修改后内容如下:

(7):修改vsftpd.conf文件

修改内容如下

去掉xferlog_file=/var/log/xferlog前面的#号。这条语句是指明日志文件所在目录。

再在配置文件后面添加如下内容

guest_username=ftptest指定映射关系

user_config_dir=/etc/vsftpd/vuser_conf指定虚拟用户根目录

红色方框中的是要添加的内容。

(8):创建用户权限

当权限内容未指定时,默认使用本地策略。

1)首先创建/etc/vsftpd/vuser_conf目录

2)转到/etc/vsftpd/vuser_conf目录

3)设置虚拟用户权限

首先修改alice的权限。设置alice的权限为空

文件内容如下(内容为空)

修改bob的权限。bob的权限为可读。

文件内容如下

修改jack的权限。jack的权限为读、上传、创建目录。

文件内容如下

修改rose的权限。rose的权限为读、上传、创建目录以及删除权限。

文件内容如下

重启FTP服务

4)修改属主权限

        进入/ftphome目录下,将ftptest文件权限修改为777(最高权限)。然后再在/ftptest文件下添加一个文件(添加文件是为了在后面进行验证)。

文件内容如下

5)验证:在客户机上进行

  • 使用alice进行登录。并验证其权限(alice权限为空)

        可以看见,alice可以下载该文件。并且文件下载到了桌面。使用get下载文件时,文件默认下载到登录FTP服务时的文件目录下。可以从第一行看出来,登录FTP时在桌面目录下,所以文件下载到桌面。

  • 使用bob进行登录。并验证其权限(bob权限为读)

可以看见,bob可以下载该文件。并且文件下载到了桌面。但是不具有其他权限。

  • 使用jack进行登录。并验证其权限(jack权限为读、上传、创建目录)

可以看见,jack具有下载文件、上传文件、创建目录的权限。

  • 使用rose进行登录。并验证其权限(rose权限为读、上传、创建目录和其他,其他里面最重要的一个权限就是删除权)

从上图可以看出来,rose具有创建文件夹权限

从上图可以看出来,rose具有删除文件夹权限

从上图可以看出来,rose具有删除文件权限

从上图可以看出来,rose具有下载文件权限

从上图可以看出来,rose具有上传文件权限

       最关键的一点是:虚拟用户无论具有多大的权限,也无法切换到根目录,这就解决了本地用户登录可以随意切换到根目录的安全问题。这就是使用虚拟用户最主要的原因。

至此,FTP服务就已经配置完成了。