【任务描述】
现要配置一个FTP服务器允许匿名用户登录, 对所有互联网用户开放共享目录, 提供相关学习资料的下载, 但禁止上传; 公司内部的员工能够使用FTP服务器进行上传和下载,但不可以删除数据。 为保证服务器的稳定性, 要对用户访问和下载/上传流量进行控制。
【任务分析】
允许所有员工上传和下载文件, 需要设置成允许匿名用户登录并且需要将允许匿名用户上传功能开启, 最后anon_mkdir_write_enable字段可以控制是否允许匿名用户创建目录, 考虑到FTP的安全性, 对于不同用户进行不同的权限限制, FTP服务器需要实现用户的审核,考虑到服务器的安全性, 关闭本地用户登录, 使用虚拟用户验证机制, 并对不同虚拟用户设置不同的权限。 为了保证服务器的整体性能, 还须根据用户的等级, 限制客户端的连接数及下载速度。
【任务实施】
(1) 编辑配置文件vsftpd.conf, 允许匿名用户访问, 并允许上传文件、 创建目录。 命令如下:
[root@ftp_server~]#vim /etc/vsftpd/vsftpd.conf
//查找以下4行并修改之,其他配置行保持默认
anonymous_enable=yes //12行:允许匿名用户访问
write_enable=yes //18行:允许开放写权限
anon_upload_enable=yes //27行:允许匿名用户上传文件
anon_mkdir_write_enable=yes //31行:允许匿名用户创建目录
anon_umask=022 //需要添加此行
anon_world_readable_only=no //需要添加此行且为no,否则不能下载
//保存退出
(2) 创建一个供上传资源的目录tea_stu, 调整该目录的属主或权限, 确保匿名用户ftp有权在目录tea_stu中写入文件。 配置文件vsftpd.conf, 允许匿名用户访问, 并允许上传文件、 创建目录。 命令如下:
[root@ftp_server~]#mkdir /var/ftp/tea_stu
[root@ftp_server~]#ll -dl /var/ftp/tea_stu
drwxr-xr-x.2rootroot409610月1318:18/var/ftp/tea_stu
[root@ftp_server~]#chown ftp /var/ftp/tea_stu
[root@ftp_server~]#ll -dl /var/ftp/tea_stu
drwxr-xr-x.2ftproot409610月1318:18/var/ftp/tea_stu
(3) 修改selinux,使selinux支持匿名用户上传使用getsebool-a| grepftp命令,可以找到ftp的bool值,其中第一行:allow_ftpd_anon_write的当前值为off,需改为on。命令如下:
[root@ftp_server~]#getsebool -a |grepftp //显示与ftp相关的所有selinux的布尔值
allow_ftpd_anon_write-->off
allow_ftpd_full_access-->off
……
[root@ftp_server~]#setsebool -P allow_ftpd_anon_write on //修改指定项的布尔值
[root@ftp_server~]#setsebool -P ftp_home_dir on
[root@ftp_server~]#getsebool -a|grep ftp
allow_ftpd_anon_write-->on //修改为on后,才允许匿名用户上传连接
allow_ftpd_full_access-->off
(4) 修改上下文, 使用reboot命令重新启动服务器, 命令如下:
[root@ftp_server~]#ll -Zd/var/ftp/tea_stu
drwxr-xr-x ftprootroot:object_r:public_content_t /var/ftp/tea_stu
[root@ftp_server~]#chcon -tpublic_content_rw_t /var/ftp/tea_stu
[root@ftp_server~]#ll -Zd/var/ftp/tea_stu
drwxr-xr-x ftprootroot:object_r:public_content_rw_t /var/ftp/tea_stu
[root@ftp_server~]#reboot
(5) 在3、5级别开启vsftpd服务自动启动, 命令如下:
[root@server1~]#chkconfig --list|grepvsftpd
vsftpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@server1~]#chkconfig --level 35 vsftpdon
[root@server1~]#chkconfig --list|grep vsftpd
vsftpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
(6) 建立虚拟用户的用户名、 密码列表的文本文件v_user.txt, 添加公共账号ftp及员工账号team两个虚拟用户。 奇数行为账号名, 偶数行为上一行中账号的密码, 命令如下:
[root@ftp_server~]#vi /etc/vsftpd/vusers.list
ftp
123
team
456
(7) 安装db_load转换工具, 将文本文件v_user.txt转化为数据库文件v_user.db。 命令如下:
[root@ftp_server~]#mount /dev/cdrom /mnt
[root@ ftp_server~]#rpm -ivh /mnt/Packages/db4-utils-4.7.25-17.el6.i686.rpm
[root@ftp_server~]#cd /etc/vsftpd/
[root@ ftp_servervsftpd]#db_load -T -t hash -f v_user.txt v_user.db
(8) 修改数据库文件访问权限。 命令如下:
[root@ftp_server~]#chown 600 /etc/vsftpd/v_user.∗
(9) 创建虚拟用户对应的本地用户, 并设置用户主目录的访问权限。
[root@RHEL6~]#useradd -d/var/ftp/share/ -s/sbin/nologin ftpus⁃er
[root@ RHEL6~]#useradd -d/var/ftp/teacherdir/ -s/sbin/nologin
ftpteacher
[root@RHEL6~]#chmod -R500 /var/ftp/share/
[root@RHEL6~]#chmod -R700 /var/ftp/teacherdir/
[root@ ftp_server~]#chcon -t public_content_rw_t /var/ftp/share/
[root@ ftp_server~]#chcon -t public_content_rw_t /var/ftp/teacherdir/
(10) 建立支持虚拟用户的PAM认证文件, 命令如下:
[root@RHEL6~]#vim /etc/pam.d/vuser.vu //配置文件的名称可以自行定义
#%PAM-1.0
auth required pam_userdb.sodb=/etc/vsftpd/v_user(对应于第1步中建立的v_users.db文件)
account required pam_userdb.sodb=/etc/vsftpd/v_user
(11) 修改/etc/vsftpd/vsftpd.conf主配置文件, 命令如下:
[root@ftp_server~]#vim /etc/vsftpd/vsftpd.conf
……
anonymous_enable=no
local_enable=yes //使用虚拟用户一定要启用本地用户
chroot_local_user=yes //将所有本地用户限制在家目录中(需添加)
guest_enable=yes //启用用户映射功能,允许虚拟用户登录(需添加)
pam_service_name=vuser.vu //指定对虚拟用户进行PAM认证的文件名vuser.vu
user_config_dir=/etc/vsftpd/vconfig //指定虚拟用户的配置文件的位置(须添加)
……
(12) 为虚拟用户ftp、 teacher建立各自独立的配置文件, 命令如下:
[root@ftp_server~]#mkdir /etc/vsftpd/vconfig/
[root@ftp_server~]#vim /etc/vsftpd/vconfig/ftp //确保配置文件名与虚拟用户名同名
guest_username=ftpuser //设置ftp对应的本地用户为ftpuser
local_root=/var/ftp/share //用户登录后所在的目录
anon_world_readable_only=no //允许浏览和下载
anon_max_rate=500000 //限定传输速率为500k B/s
//保存退出
[root@ftp_server~]#vim /etc/vsftpd/vconfig/teacher
guest_username=ftpteacher
local_root=/var/ftp/teacherdir
anon_world_readable_only=no
write_enable=yes//允许写入
anon_upload_enable=yes //允许上传
anon_mkdir_write_enable=yes //允许创建文件夹
anon_max_rate=1000000 //限定传输速度为1000k B/s
//保存退出
(13) 修改SELinux允许本地用户登录和匿名用户具有写入权限, 重新加载vsftpd服务,使配置生效, 命令如下:
[root@ftp_server~]#setsebool -P ftp_home_dir on
[root@ftp_server~]#setsebool -P allow_ftpd_anon_write on
[root@ftp_server~]#service vsftpd reload
(14) 启动vsftpd服务、 开启21号端口, 命令如下:
#service vsftpd start
#iptables -I INPUT -p tcp --dport 21 -j ACCEPT
(15) 在Windows客户端启动IE浏览器,单击“工具” →“Internet选项” 菜单命令,在打开的 “Internet选项” 对话框中单击 “高级” 选项卡, 在 “设置” 列表框内找到 “浏览”节点下的 “使用被动FTP (用于防火墙和DSL调制解调器兼容性) ” 配置项, 并将前面的钩去掉,单击 “确定” 按钮,如图5-5所示。
图5-5 IE浏览器选项设置
(16) 在IE浏览器的地址栏中输入 “ftp: //172.16.102.61” 后按Enter键, 单击 “查看” 按钮, 选择 “在Windows资源管理器中打开FTP站点”, 系统登录FTP服务器。
(17) 在FTP登录窗口单击 “tea_stu” 文件夹, 进入该文件夹。 从本地硬盘 (如 “E:”盘) 的窗口内将文件(夹) 拖拽到ftp登录窗口完成上传。从ftp登录窗口内拖拽文件(夹) 到本地硬盘(E:) 的窗口完成下载,而试图删除上传的文件(夹) 则不允许,如图5-6所示。
图5-6 测试FTP可以下载、不允许删除
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。