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软件包.
二、建立虚拟用户口令库文件
建立虚拟用户的口令库文件,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令.为了便于记忆可以将文件命名为.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认证文件中. 是不能用虚拟用户登录系统的,安全性自然而然也加强了.
|