Linux下如何使用虚拟用户增加FTP的安全性

简介:
 
Linux下如何使用虚拟用户增加FTP的安全性
 
实验背景:
Dreamfire公司由于业务需求,需要架设一台FTP服务器,出于系统稳定和安全等多方面考虑,决定使用RHEL 4作为服务器平台,架设vsftp服务器。其次为了最大限度地保证公司内部RHEL4服务器上“/home”下用户的安全性,决定采用虚拟用户的方式访问FTP服务器。管理员为了能够更好的灵活管理服务器上每个用户的访问权限,根据贵公司的需求和当前网络状况制定了一套可行的方案如下:
1、 所有用户都通过用户名:ftpall、密码:123登录FTP服务器的公共目录ftpall
2、 公共目录ftpall是供员工下载资料所用的,只允许下载,不允许删除、修改、重命名ftpall中的文件或目录
3、 所有用户都可以通过自己的用户和密码登录到FTP服务器上的宿主目录里,且只能看到自己的文件和文件夹,而且可以添加、删除、修改、重命名自己的文件或文件夹。
4、 匿名访问的用户根据实际情况开启,默认不开启。
5、 所有员工访问公共目录ftpall的下载速度最大为100KB/s,而访问各自的宿主目录的下载速度最大为300KB/s
6、 考虑到FTP服务器的承受力,每次只允许最多100个用户连接服务器。
7、 考虑到公司内部某些员工可能会用迅雷、快车等BT下载工具下载文件,所以将同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过3个。
注意:虚拟用户账户是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账户。虚拟用户FTP登录后将把指定的目录作为FTP根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户相对安全,因此正逐步替代本地用户账户。
 
实验步骤:
为了更方便的测试实验环境,本实验采用ftpall作为所有员工的公共用户,xiaonuo作为每个用户的代表。
 
一、挂在第一张RHEL4安装光盘,并安装vsftpd软件包。
clip_image002
clip_image004
 
二、建立虚拟用户口令库文件
建立虚拟用户的口令库文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。为了便于记忆可以将文件命名为.txt文件。不过Linux下文件是不支持扩展名滴哦,只是为了标示而已。
注意:用户的口令库文件中,不要存在空格和空行
clip_image006
clip_image008
 
三、生成vsftpd的认证文件
使用db_load命令生成认证文件,“-f”命令选项设置的值是虚拟用户的口令库文件,即vsftpd_login.txt,命令的参数设置为需要生成的认证文件名vsftpd_login.db,该文件必须放在“/etc/vsftpd/”中。
注意:db_load是软件包db4_utils带的命令,在RHEL4是默认安装的,在RHEL5上没有安装,需要安装db4_utils这个软件包才支持db_load命令。
clip_image010
 
由于vsftpd的认证文件vsftpd_login.db里保存了所有虚拟用户的用户名和密码,为了增强其安全性,应当设置只有root才可以查看。
clip_image012
 
四、建立虚拟用户所需的PAM配置文件
修改/etc/pam.d/vsftpd文件
将默认配置全部用“#”注释在最后添加
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:也可以另外建立一个文件,但是要在/etc/vsftpd/vsftpd.conf中将pam_service_name=vsftpd后面的值改为新建文件的名称。
clip_image014
clip_image016
 
五、建立虚拟用户及要访问的目录并设置相应的权限。
建立vsftpd虚拟目录所需的系统公共用户账号,账号名为ftpall,指定用户的宿主目录是“/var/ftp/ftpall”
建立vsftpd虚拟目录所需的系统单用户账号,账号名为xiaonuo,指定用户的宿主目录是“/var/ftp/xiaonuo”
参数“-d”是建立用户之后,并将自己的宿主目录指向指定的位置。
注意:用户名和宿主目录名称最好一样,便于记忆。这些用户都会存放在系统的/etc/passwd下,并且用户密码都存放在vsftpd认证文件中。所以是不能用虚拟用户登录系统的,安全性自然而然也加强了。
clip_image018
clip_image020
 
建立的虚拟用户的宿主目录默认都是700权限,由于ftpall是公共目录,是不允许普通用户修改、添加、删除和重命名的,所以将其改成500(读+执行)即可。
参数“-R”是修改用户宿主目录以及目录里所有子文件的属性。
clip_image022
 
六、设置vsftpd.cong主配置文件。
在对vsftpd.conf配置文件进行修改前,应先将原有的文件进行备份,以便出现配置错误时可进行恢复。
clip_image024
 
在vsftpd.conf配置文件中添加虚拟用的配置项,内容如下:
anonymous_enable=NO 禁用匿名用户登录
local_enable=YES 启用本地用户登录(本质上是为了能够让虚拟用户登录)
chroot_local_user=YES 将所有本地用户限制在自己的目录中
pam_service_name=vsftpd 配置vsftpd使用的PAM模块为vsftpd
user_config_dir=/etc/vsftpd/users_config 设置虚拟账户配置文件的主目录为 /users_config(后面创建)
max_clients=100 设置FTP服务器最大接入客户端数为100个
max_per_ip=3 设置每个IP地址最大连接数为3个
local_max_rate=300000 FTP服务器的本地用户最大传输速率设置为300KB/s
anon_max_rate=100000 FTP服务器匿名用户最大传输速率设置为100KB/s
clip_image026
clip_image028
clip_image030
 
七、设置公用用户ftpall的配置文件
首先创建虚拟用户配置文件的主文件夹users_config,并在此文件夹下建立虚拟用户的文件ftpall和xiaonuo。
clip_image032
 
在/etc/vsftpd/user_config/ftpall配置文件中添加虚拟用的配置项,内容如下:
guest_enable=YES 开启虚拟账户登录
guest_username=ftpall 设置ftpall对应的系统账户为ftpall
anon_world_readable_only=NO 允许用户浏览FTP目录和下载文件
anon_max_rate=100000 限制传输速率为100KB/s
clip_image034
clip_image036
 
八、设置单用户xiaonuo的配置文件
在/etc/vsftpd/user_config/xiaonuo配置文件中添加虚拟用的配置项,内容如下:
guest_enable=YES 开启虚拟账户登录
guest_username=xiaonuo 设置xiaonuo目录对应的系统账户为xiaonuo
anon_world_readable_only=NO 允许用户浏览FTP目录和下载文件
anon_other_write_enable=YES 允许用户进行文件改名和删除文件的权限
anon_mkdir_write_enable=YES 表示用户具有建立和删除目录的权利
anon_upload_enable=YES 表示用户可以上传文件
anon_max_rate=300000 限制传输速度为300KB/s
clip_image038
clip_image040
 
通过对以上配置项的组合设置,vsftpd可以为每个虚拟用户配置不同的FTP权限,用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。
 
九、重新启动vsftpd服务,使所有配置文件的设置生效。
使用/etc/rc.d/init.d/vsftpd restart或者services vsftpd restart命令重新启动vsftpd服务。
clip_image042
 
十、测试公共用户ftpall的权限。
在测试之前,首先在/var/ftp/ftpall和/var/ftp/xiaonuo中创建文件和文件夹做测试用。
clip_image044
 
公共用户ftpall使用常用的IE浏览器进行访问FTP服务器,测试ftpall的权限。
clip_image046
clip_image048
 
将客户机机上的文件复制到FTP服务器上提示出错,测试成功!
clip_image050
 
重命名FTP服务器上的文件提示出错,测试成功!
clip_image052
 
删除FTP服务器上的文件提示出错,测试成功!
clip_image054
 
重命名FTP服务器上的文件夹提示出错,测试成功!
clip_image056
 
将FTP服务器上的文件拖拽的本地文件夹中,测试成功。
clip_image058
 
整个测试过程说明使用ftpall用户登录FTP服务器,只能下载文件,不允许增加、删除、修改、重命名文件或文件夹。
 
十一、测试xiaonuo用户
使用命令提示符窗口测试虚拟用户xiaonuo的权限。
首先使用匿名用户登录,可以看到登录失败,原因是因为在主配置文件vsftpd.conf的anonymous_enable=NO的缘故,如果开启,则登录成功,而且能够看到所有用户的宿主目录名称,虽然不能访问,但如果恶意用户使用用户名猜测密码则会造成一定的危害。
clip_image060
 
使用虚拟用户xiaonuo登录FTP服务器。
clip_image062
 
使用dir或者ls –l命令可以查看到xiaonuo用户宿主目录里的内容,而ftpall里的内容是看不到的,这也就实现了用户目录的隔离。
clip_image064
 
使用get命令下载文件到本地测试成功。
clip_image066
 
使用put命令上传文件到FTP服务器上测试成功
clip_image068
 
使用rename命令重命名FTP服务器上的文件测试成功。
clip_image070
 
使用rename命令重命名FTP服务器上的文件夹测试成功。
clip_image072
 
使用delete删除FTP服务器上的文件测试成功。
clip_image074
 
使用rmdir删除FTP服务器上的空目录测试成功。
clip_image076
 
下载速度或者上传速度的测试,可将速度调整低一点,便可以看出效果来。
通过上面的实验可以看出,所有员工使用公共虚拟用户ftpall登录FTP服务器只能查看和下载FTP服务器上共享的文件,而每个员工使用分发的虚拟用户名登录FTP服务器可以实现添加、删除、修改、查询宿主目录里的文件或文件夹,这也就实现了Dreanfire公司的业务需求,同时也增强了FTP服务器的安全性。


本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/160521,如需转载请自行联系原作者
相关文章
|
28天前
|
存储 安全 Shell
⭐⭐【Shell 命令集合 文件传输 】Linux ftp工具 使用指南
⭐⭐【Shell 命令集合 文件传输 】Linux ftp工具 使用指南
40 0
|
28天前
|
存储 Shell Linux
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
【Shell 命令集合 文件传输 FTP客户端工具】Linux ncftp 命令使用指南
35 0
|
3月前
|
安全 算法 网络协议
【Linux】文件服务FTP(File Transfer Protocol)
【Linux】文件服务FTP(File Transfer Protocol)
51 0
|
7月前
|
安全 网络协议 Linux
搭建FTP站点(Alibaba Cloud Linux 3)
vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。
搭建FTP站点(Alibaba Cloud Linux 3)
|
6月前
|
监控 Ubuntu 安全
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
246 2
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
|
4月前
|
安全 网络协议 Linux
哇~~真的是你呀!今天是LINUX中的FTP服务
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络中传输文件的标准协议。它允许用户从一个计算机(称为FTP客户端)向另一个计算机(称为FTP服务器)发送和接收文件。 以下是FTP服务的一些关键特点和功能:
46 0
|
5月前
|
Linux 网络安全 开发工具
如何在linux搭建FTP服务
如何在linux搭建FTP服务
62 0
|
5月前
|
Linux
手把手教你Linux下搭建ftp服务
手把手教你Linux下搭建ftp服务
148 1
|
8月前
|
安全 Linux 网络安全
Linux FTP协议:文件传输与远程管理
FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的协议。在Linux系统中,FTP协议是常用的远程文件传输方式,允许用户通过网络在本地计算机与远程服务器之间传输文件。本文将深入解析Linux下的FTP协议,包括工作原理、配置、使用方法以及安全性注意事项,帮助读者全面了解FTP协议在文件传输和远程管理中的应用。
180 0