一、实验环境
两台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可以下载该文件。并且文件下载到了桌面。使用get下载文件时,文件默认下载到登录FTP服务时的文件目录下。可以从第一行看出来,登录FTP时在桌面目录下,所以文件下载到桌面。
可以看见,bob可以下载该文件。并且文件下载到了桌面。但是不具有其他权限。
可以看见,jack具有下载文件、上传文件、创建目录的权限。
从上图可以看出来,rose具有创建文件夹权限
从上图可以看出来,rose具有删除文件夹权限
从上图可以看出来,rose具有删除文件权限
从上图可以看出来,rose具有下载文件权限
从上图可以看出来,rose具有上传文件权限
最关键的一点是:虚拟用户无论具有多大的权限,也无法切换到根目录,这就解决了本地用户登录可以随意切换到根目录的安全问题。这就是使用虚拟用户最主要的原因。
至此,FTP服务就已经配置完成了。