实验背景:
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 (责任编辑:IT) |