一. ftp介绍
FTP 是File Transfer Protocol(文件传输协议)的英文简称,互联网中最老牌的文件传输协议。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
1.vsftpd安装及启用
dnf install vsftpd -y
## 安装ftp服务器
关闭selinux 及 防火墙,以免影响实验效果。
dnf install lftp -y
## 安装ftp客户端
安装完成后从客户端浏览器和lftp工具访问FTP服务器时,提示需要进行身份验证,
是因为ftp服务器开启了禁止匿名用户登陆,编辑ftp服务器的配置文件后重启,使其允许匿名访问。
vim /etc/vsftpd/vsftpd.conf
启动匿名用户的访问功能后可以访问到共享资源:
2.vsftp服务的基本信息
- 服务名称:
vsftpd.service
- 配置目录:
/etc/vsftpd
- 主配置文件:
/etc/vsftpd/vdftpd.conf
- 默认发布目录:
/var/ftp
- 报错信息:
- 550 ##程序本身拒绝
- 553 ##文件系统权限限制
- 500 ##权限过大
- 530 ##认证失败
二.匿名用户的访问控制
通过编辑vsftpd的配置文件进行以下操作:vim /etc/vsftpd/vsftpd.conf
1.登陆控制
允许或禁止匿名用户访问,当禁止匿名用户访问时,需要进行用户认证才可以访问成功
2. 家目录控制
新建家目录后在配置文件内指定家目录路径后重启服务
通过ftp客户端访问:
3.上传控制
默认不允许普通用户上传:提示550,即程序本身的上传控制没有打开
修改配置文件后重启
再次上传会提示553报错,即文件系统权限限制,需要修改pub目录的权限
修改pub目录的权限:
重新上传就成功了:
4.目录建立控制
创建目录时,提示550报错,即程序本身拒绝
编辑配置文件,打开匿名用户目录建立权限后重启
再次新建:
5.下载控制
下载文件时,提示550报错,即程序本身拒绝
编辑配置文件,允许匿名用户下载只读文件后重启
anon_world_readable_only=NO
再次测试,文件会被下载到登陆时所在位置
6.文件删除与重命名控制
删除时不会报错,但命令执行完之后,并没有被删除,重命名时会提示550报错,即程序本身拒绝
修改配置文件,允许匿名用户删除和重命名后重启
anon_other_write_enable=YES
再次测试:
7.匿名用户文件上传权限设定
默认状态下,匿名用户上传的文件权限为600
修改配置文件,重新设定文件系统保留权限为022后重启
再次上传,文件权限变为644
8.用户上传身份的控制
默认状态下,匿名用户上传的文件身份都会被设定为ftp
修改配置文件:允许更改匿名用户上传身份为qyq,修改匿名用户上传文件权限为644
重启后再次上传:
9.登陆数量控制
默认状态下,不会限制登陆数量,多个用户可以同时访问到共享资源,如需限制需要修改配置文件如下:
当已经有用户登陆时,超过限制数量的其他用户登陆就会收到请稍候再试的通知:
10.上传速率控制
dd if=/dev/zero of=/tmp/bigfile bs=1M count=200
## 生成一个200M的测试文件
默认情况下,文件上传速率没有限制:
编辑配置文件,修改其上传速率为100k/s
再次上传,上传最大速率会被限制在100以下:
三.本地用户的访问控制
允许本地用户登陆:
1.家目录控制
默认状态下,访问本地用户时,会直接访问到当前登陆用户的家目录:
编辑配置文件,重新指定本地用户访问时的家目录:local_root=/erqian
重新访问本地用户:访问两个不同的用户,共享的资源相同。
2.写权限控制
默认状态下,本地用户登陆可以进行读写操作,
编辑配置文件,关闭写的权限write_enable=NO
,本地用户和匿名用户的读写权限都会被限制
3.本地用户上传权限控制
默认保留权限为022,
编辑配置文件,修改保留权限后重新上传:
4.用户登陆控制-黑白名单
用户永久黑名单: /etc/vsftpd/ftpusers
再次访问,报错提示530,即认证失败。
用户默认黑名单: /etc/vsftpd/user_list
仅仅是一个用户列表,默认状态下用户列表里的用户都为黑名单,拒绝登陆。但也可以修改配置文件,将用户列表里的用户变为白名单
编辑配置文件。设定user_list名单里为白名单,只有名单 里的用户才能登陆,其他用户会被拒绝。
5.锁定用户到自己的家目录中
默认状态下,登陆之后可以访问根目录下的文件
编辑配置文件,将登陆用户锁定在自己的家目录中
修改家目录权限:chmod u-w /home/*
再次访问;用户已经被限制在自己的家目录中,不能访问到根下的资源
新建/etc/vsftpd/chroot_list文件,写入用户名称后修改配置文件,即可控制锁定家目录的黑白名单。
(1)锁定到自己家目录中的白名单
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
(2)锁定到自己家目录中的黑名单
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
开关只控制chroot_list文件中的名单是何种限制。
四.虚拟用户的访问控制
登陆本地用户时都使用匿名用户登陆或者本地用户数量有限,因此需要建立虚拟用户供ftp访问
1.虚拟用户的建立
(1)建立认证文件模板
vim /etc/vsftpd/ftp_auth_file
(2)加密认证文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db
- -T #转换
- -t #加密类型
- -f #指定转换文件
(3)建立用户认证策略
(4)编辑ftp配置文件,指定认证规规则
pam_service_name=ftpauth
表示指定认证策略文件
guest_enable=YES
表示指定虚拟用户功能开启
guest_username=ftp
表示指定虚拟用户在 ftp 服务器上的身份
重启后访问:本地用户访问验证失败,虚拟用户登陆成功,并访问到共享资源:pub
2.虚拟用户家目录的独立设定
如上测试,虚拟用户登陆后访问的都是共享目录pub
建立每个虚拟用户的独立家目录
编辑ftp配置文件:
重新访问虚拟用户:
3.虚拟用户的独立配置
可以对单个虚拟用户自定义的特殊的配置
(1)关闭全局配置中的设定
(2)指定虚拟用户的权限配置文件
(3)编辑虚拟用户的配置文件,文件路径要与ftp配置文件中指定的相同
再次访问:只有user2开启了上传权限,其他用户上传会提示550报错,即程序本身拒绝