Centos使用虚拟用户增加FTP的安全性,centosftp其次为了最大限度地保


实验背景:

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软件包。

二、建立虚拟用户口令库文件

建立虚拟用户的口令库文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。为了便于记忆可以将文件命名为.txt文件。不过Linux下文件是不支持扩展名滴哦,只是为了标示而已。

注意:用户的口令库文件中,不要存在空格和空行

三、生成vsftpd的认证文件

使用db_load命令生成认证文件,“-f”命令选项设置的值是虚拟用户的口令库文件,即vsftpd_login.txt,命令的参数设置为需要生成的认证文件名vsftpd_login.db,该文件必须放在“/etc/vsftpd/”中。

注意:db_load是软件包db4_utils带的命令,在RHEL4是默认安装的,在RHEL5上没有安装,需要安装db4_utils这个软件包才支持db_load命令。

由于vsftpd的认证文件vsftpd_login.db里保存了所有虚拟用户的用户名和密码,为了增强其安全性,应当设置只有root才可以查看。

四、建立虚拟用户所需的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后面的值改为新建文件的名称。

五、建立虚拟用户及要访问的目录并设置相应的权限。

建立vsftpd虚拟目录所需的系统公共用户账号,账号名为ftpall,指定用户的宿主目录是“/var/ftp/ftpall”

建立vsftpd虚拟目录所需的系统单用户账号,账号名为xiaonuo,指定用户的宿主目录是“/var/ftp/xiaonuo”

参数“-d”是建立用户之后,并将自己的宿主目录指向指定的位置。

注意:用户名和宿主目录名称最好一样,便于记忆。这些用户都会存放在系统的/etc/passwd下,并且用户密码都存放在vsftpd认证文件中。所以是不能用虚拟用户登录系统的,安全性自然而然也加强了。

建立的虚拟用户的宿主目录默认都是700权限,由于ftpall是公共目录,是不允许普通用户修改、添加、删除和重命名的,所以将其改成500(读+执行)即可。

参数“-R”是修改用户宿主目录以及目录里所有子文件的属性。

六、设置vsftpd.cong主配置文件。

在对vsftpd.conf配置文件进行修改前,应先将原有的文件进行备份,以便出现配置错误时可进行恢复。

在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

七、设置公用用户ftpall的配置文件

首先创建虚拟用户配置文件的主文件夹users_config,并在此文件夹下建立虚拟用户的文件ftpall和xiaonuo。

在/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

八、设置单用户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

通过对以上配置项的组合设置,vsftpd可以为每个虚拟用户配置不同的FTP权限,用户配置文件中没有的配置项将按照vsftpd.conf配置文件中的内容设置。

九、重新启动vsftpd服务,使所有配置文件的设置生效。

使用/etc/rc.d/init.d/vsftpd restart或者services vsftpd restart命令重新启动vsftpd服务。

十、测试公共用户ftpall的权限。

在测试之前,首先在/var/ftp/ftpall和/var/ftp/xiaonuo中创建文件和文件夹做测试用。

公共用户ftpall使用常用的IE浏览器进行访问FTP服务器,测试ftpall的权限。

将客户机机上的文件复制到FTP服务器上提示出错,测试成功!

重命名FTP服务器上的文件提示出错,测试成功!

删除FTP服务器上的文件提示出错,测试成功!


重命名FTP服务器上的文件夹提示出错,测试成功!

将FTP服务器上的文件拖拽的本地文件夹中,测试成功。

整个测试过程说明使用ftpall用户登录FTP服务器,只能下载文件,不允许增加、删除、修改、重命名文件或文件夹。

十一、测试xiaonuo用户

使用命令提示符窗口测试虚拟用户xiaonuo的权限。

首先使用匿名用户登录,可以看到登录失败,原因是因为在主配置文件vsftpd.conf的anonymous_enable=NO的缘故,如果开启,则登录成功,而且能够看到所有用户的宿主目录名称,虽然不能访问,但如果恶意用户使用用户名猜测密码则会造成一定的危害。

使用虚拟用户xiaonuo登录FTP服务器。

使用dir或者ls –l命令可以查看到xiaonuo用户宿主目录里的内容,而ftpall里的内容是看不到的,这也就实现了用户目录的隔离。

使用get命令下载文件到本地测试成功。

使用put命令上传文件到FTP服务器上测试成功

使用rename命令重命名FTP服务器上的文件测试成功。

使用rename命令重命名FTP服务器上的文件夹测试成功。

使用delete删除FTP服务器上的文件测试成功。

使用rmdir删除FTP服务器上的空目录测试成功。

下载速度或者上传速度的测试,可将速度调整低一点,便可以看出效果来。

通过上面的实验可以看出,所有员工使用公共虚拟用户ftpall登录FTP服务器只能查看和下载FTP服务器上共享的文件,而每个员工使用分发的虚拟用户名登录FTP服务器可以实现添加、删除、修改、查询宿主目录里的文件或文件夹,这也就实现了Dreanfire公司的业务需求,同时也增强了FTP服务器的安全性。

本文出自 “小诺的Linux开源技术博客” 博客,请务必保留此出处http://dreamfire.blog.51cto.com/418026/160521


相关内容

    暂无相关文章