vsftpd服务
学习目标
一、ftp的安装及启用
二、ftp基本安全部署实例
三、匿名用户读写
四、关于匿名用户的其他设定参数
五、本地用户的设定
六、虚拟用户的认证设定
七、虚拟用户的家目录设定及授权独立
一、ftp的安装及启用
1.什么是FTP 服务器?
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。
2. 什么是Vsftpd?
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。
3.安装Vsftpd
yum install vsftpd -y
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
lftp ip
##能登陆并且显示,表示安装成功
**vsftpd文件信息
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
客户端访问时, 用户身份可以分为:
1). 匿名用户:没有指定用户身份, ftp身份实现从服务器上传和下载文件;
2). 本地用户: -u指定用户身份,用户是服务器端的用户;
3). 虚拟用户: -u指定用户身份,但是服务器端并不存在该用户(id username)
没有指定用户身份
4.vsftpd服务的配置参数
具体操作如下:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2bc75420fc4f53606f2dd2e15f1f304f.png)
指定yum源指向:
yum clean all
yum install vsftpd -y
yum clean all
yum install lftp -y
二、ftp基本安全部署实例
不允许匿名用户登录
测试:
匿名用户登录失败
2.
本地用户可以登录
且可写
测试:
三、匿名用户读写
1.匿名用户和本地用户
2.匿名用户可上传
3.匿名用户下载
4.匿名用户可以建立目录
5.匿名用户可以删除或重命名
anonymous_enable=YES|NO ##匿名用户登陆限制
#<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
#<匿名用户家目录修改>
anon_root=/direcotry
#<匿名用户上传文件默认权限修改>
anon_umask=xxx
#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
#<匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
#<匿名用户删除>
anon_other_write_enable=YES|NO
1.匿名用户 和 本地用户
匿名用户:使用服务器资源时没有指定用户身份的用户
本地用户:指定用户身份
2.匿名用户上传
设置配置文件
测试:
上传成功如下:
3.匿名用户下载
设置配置文件:
测试:
下载成功
4.匿名用户可以建立目录
设置配置文件:
测试:
成功建立目录
5.匿名用户可以删除或重命名
设置配置文件:
测试:
删除和重命名成功
四、关于匿名用户的其他设定参数
1.匿名用户上传文件的权限
2.匿名用户默认登录目录为 westos
3.匿名用户上传下载速率限制设置
4.最大客户端连接
#<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
chown_uploads_mode=0644
#<最大上传速率>
anon_max_rate=102400
#<最大链接数>
max_clients=2
查询参数命令
1.匿名用户上传文件的权限
连接后转到/pub,上传文件,查看权限为600
改变权限:
2.匿名用户默认登录目录为 westos
新建westos目录
在westos目录建立5个文件(为了查看效果)
修改配置文件后,重启
ls查看默认目录,为刚新建的5个文件,说明默认目录为westos:
3.匿名用户上传下载速率限制设置
设置配置文件匿名用户上传下载最大速率为100k
上传文件:
4.最大客户端连接
设置配置文件
连接第三个报错:
五、本地用户的设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
#<本地用户家目录修改>
local_root=/directory
#<本地用户上传文件权限>
local_umask=xxx
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户永久黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
1.
2.本地用户家目录修改
服务端
在/home/student下 建立studentfile文件
客户端
以本地用户student身份登录
查看到刚建立的studentfile文件
现在
希望本地用户登录后,家目录为westos
设置配置文件
重启
查看家目录中的问价为westos中的文件
3.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
本地用户家目录不仅可以看到家目录里东西,
还能看到 服务器/ 下面的东西
不安全
可以把这个用户锁到家目录中
如下:
此参数打开时,要把家目录中的所有写权限去掉,否则登录失败
匿名用户登录时,本地用户不能有写权限
服务端
设置之后
客户端
本地用户登录不成功,因为权限太大
在服务端
设置
客户端
登录成功
并且被锁定到家目录中,不能切换到/目录:
3.1用户黑名单建立(此名单中用户被锁定到家目录中)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
此文件在系统中是不存在的
服务端
设置配置文件
设置黑名单
客户端
以lee身份登录
失败(没关写权限)
服务端
去掉写权限
登录成功
但被锁定家目录
3.2用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
4.限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户永久黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
六、虚拟用户的认证设定
系统用户:可以登录ftp、ssh等任何服务
虚拟用户:只能登录ftp这一种服务
查找文件命令
0). prepare
3 yum clean all
4 yum repolist
5 yum install vsftpd -y
6 systemctl start vsftpd
7 systemctl enable vsftpd
8 systemctl stop firewalld
9 systemctl disable firewalld
10 getenforce
11 setenforce 0
12 getenforce
13 vim /etc/sysconfig/selinux
SELINUX=disabled
1). 创建虚拟帐号身份的文件(注意: 不要出现空行或者多余的空格)
vim /etc/vsftpd/loginusers ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
2). 对用户帐号和密码进行加密
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
chmod 600 /etc/vsftpd/loginusers*
3). 编辑帐号和密码处理的库文件
vim /etc/pam.d/ckvsftpd ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
4). 配置vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ckvsftpd # 虚拟用户信息认证文件名称
guest_enable=YES # 虚拟用户开启
虚拟用户的认证设定
1.创建一个账号身份文件,写账号和密码
2.加密
此认证文件系统不能直接读取
需要转换为库的方式,即加密
3.吧文件指定到策略文件里
此文家名字任意
位置必须在/etc/pam.d下面
系统将用pam来读取文件
和登录用户给定的账号密码做对比
现在,做认证文件
不会做,可以看例子
查看vsftpd文件写入规则:
此时
转到此目录下,编写策略文件
4.设置配置文件
七、虚拟用户的家目录设定及授权独立
1.虚拟用户的家目录设定
虚拟用户的家目录等进去都是匿名用户的家目录
虚拟用户的家目录设定
虚拟帐号身份指定)
guest_username=ftpuser
chmod u-w /home/ftpuser
虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
1.建立3个虚拟用户
并在每个虚拟用户下建立一个目录
现在想让每个用户都有一个家目录
重启
客户端
测试:
成功
2.上传文件
虚拟用户登录 不能上传文件
pub目录不可写
修改权限
修改ftp为用户组
修改组权限775
测试:
上传
成功
上传,删除 都可以
2.虚拟帐号配置独立
案例实现目标:
1). ftpuser1用户上传和下载文件限速;
2). ftpuser2用户上传和下载文件不限速, 并且可以上传文件;
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/conf.d
mkdir -p /etc/vsftpd/conf.d
vim /etc/vsftpd/conf.d/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高
anon_max_rate=1024
vim /etc/vsftpd/conf.d/ftpuser2
write_enable=YES
anon_upload_enable=YES
mkdir /ftp/ftpuser2/upload/
chown ftpuser /ftp/ftpuser2/upload/
systemctl restart vsftpd
查看虚拟帐号配置独立命令
虚拟帐号配置独立
建立自定义文件
进入该目录
建立user2文件
在主配置文件中关掉所有的功能,在自配置文件中开放需要的功能
测试:
user1、user3用户上传失败
user2用户上传成功
user2上传成功,删除失败(在子配置文件中未设置删除)