linux vsftpd服务的部署

目录

    • ftp介绍
    • vsftpd安装
    • vsftpd基本信息
    • 匿名用户访问控制
    • 本地用户的访问
    • 虚拟用户访问

ftp介绍

ftp(file transfer protocol)是互联网中最老牌的文件传输协议
在ftp的使用中,通常会遇到两个概念:上传和下载
上传:将文件从自己的计算机拷贝至远程主机上
下载:从远程主机拷贝文件到自己的计算机上

vsftpd安装

1.yum install vsftpd -y
2.关闭selinux
3.关闭firewalld
4.systemctl start vsftpd
systemctl enable vsftpd
5.测试安装
方式一:使用firefox输入ftp://ip
方式二:使用lftp ip指令
使用lftp指令前需要安装lftp包,可以先查找lftp指令由什么包提供。这个lftp是一个浏览软件,相当于火狐浏览器。
linux vsftpd服务的部署_第1张图片
linux vsftpd服务的部署_第2张图片
这种方式,只有可以列出资源时才算访问成功。
linux vsftpd服务的部署_第3张图片
而下图仅仅表示开启这个软件
在这里插入图片描述

vsftpd基本信息

1.服务名称: vsftpd.service
2.配置目录:/etc/vsftpd
3.主配置文件:/etc/vsftpd/vsftpd.conf
4.默认发布目录:/var/ftp
-q:指定vsftpd
-c:指定配置文件
linux vsftpd服务的部署_第4张图片
5.报错信息
550:程序本身拒绝
553:文件系统权限限制
500:权限过大
530:权限过小(认证失败)

匿名用户访问控制

先来明确一个概念,什么是匿名,什么是本地用户访问?
lftp 192.168.145.100: 当访问ftp服务时没有加入用户访问是匿名访问
lftp 192.168.145.100 -u westos: 本地用户访问
准备:帮助命令1 通过 man 5 vsftpd.conf 指令查看具体参数
在这里插入图片描述
linux vsftpd服务的部署_第5张图片
帮助命令2
linux vsftpd服务的部署_第6张图片
1.登录控制
anonymous_enable=YES|NO,YES表示允许匿名登录,NO表示不能匿名登录。
(1)在虚拟机2中原本可以匿名登录
linux vsftpd服务的部署_第7张图片
(2)修改虚拟机1vsftpd的配置文件
在这里插入图片描述
linux vsftpd服务的部署_第8张图片
linux vsftpd服务的部署_第9张图片
(3)发现虚拟机2不能匿名访问了
linux vsftpd服务的部署_第10张图片
2.家目录控制
anon_root=/software
(1)在虚拟机2中登录位置原本为/var/ftp
linux vsftpd服务的部署_第11张图片
(2)编辑虚拟机1中vsftpd配置文件
linux vsftpd服务的部署_第12张图片
linux vsftpd服务的部署_第13张图片
(3)在虚拟机2中再次登录发现家目录变为/var/ftp/software
linux vsftpd服务的部署_第14张图片
3.上传控制
anon_upload_enable=YES|NO,YES表示允许上传,NO表示不允许上传。
(1)在虚拟机2中查看是否允许上传/etc/passwd文件
上传被拒绝
linux vsftpd服务的部署_第15张图片
(2)修改虚拟机1中的/etc/vsftpd/vsftpd.conf
linux vsftpd服务的部署_第16张图片
linux vsftpd服务的部署_第17张图片
(3)在虚拟机2中查看是否可以上传了
为什么会报错呢?553表示权限设置有问题
linux vsftpd服务的部署_第18张图片
(4)在虚拟机1中查看权限并设置权限
由于我们在虚拟机2中是匿名登录的方式,而虚拟机1中/var/ftp目录的权限设定为只有超级用户可写,所以在虚拟机2中匿名登录时会报错,我们重新设定满权限试试。
linux vsftpd服务的部署_第19张图片
(5)在虚拟机2中尝试登录
还是报错,500表示权限过大。当在虚拟机1中对/var/ftp目录权限设置超过755时,系统便会拒绝访问。
linux vsftpd服务的部署_第20张图片
(6)重新设置权限
这次我们将/var/ftp的权限还原,以便用户可以正常登入系统,重新设置/var/ftp/pub的权限为777,在/var/ftp/pub下上传数据。
linux vsftpd服务的部署_第21张图片
(7)在虚拟机2中上传文件
成功上传文件
linux vsftpd服务的部署_第22张图片
4.下载控制
anon_world_readable_only=NO,NO表示匿名用户可以下载没有读权限的文件,YES表示只能下载有读权限的文件。
(1)在虚拟机2中下载文件
发现报错,550表示程序本身拒绝。
linux vsftpd服务的部署_第23张图片
(2)编辑虚拟机1中的/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第24张图片
linux vsftpd服务的部署_第25张图片
(3)在虚拟机2中尝试下载
下载成功,注意在哪里登录,下载的文件就在哪里。
linux vsftpd服务的部署_第26张图片
5.目录建立控制
anon_mkdir_write_enable=YES|NO,YES表示可以建立目录,NO表示不能建立目录。
(1)在虚拟机2中尝试新建目录
报错,550表示程序本身拒绝
linux vsftpd服务的部署_第27张图片
(2)编辑虚拟机1中的/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第28张图片
linux vsftpd服务的部署_第29张图片
(3)在虚拟机2中尝试建立目录
建立成功
linux vsftpd服务的部署_第30张图片
6.删除、重命名控制
anon_other_write_enable=YES|NO,YES表示可以删除、重命名,NO表示不能执行删除、重命名操作。
(1)在虚拟机2中删除、重命名
发现删除和重命名都失败了
linux vsftpd服务的部署_第31张图片
(2)在虚拟机1中编辑/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第32张图片
在这里插入图片描述
(3)在虚拟机2中尝试删除、重命名
删除、重命名成功
linux vsftpd服务的部署_第33张图片
7.登录数量控制
max_clients=2
(1)在虚拟机1中编辑/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第34张图片
linux vsftpd服务的部署_第35张图片
(2)在虚拟机2中尝试登录三个用户
发现失败
linux vsftpd服务的部署_第36张图片
退出其中一个帐户后,发现登录成功。
linux vsftpd服务的部署_第37张图片
8.上传速率控制
anon_max_rate=102400
(1)先在虚拟机2中查看当前上传速率
linux vsftpd服务的部署_第38张图片
(2)编辑虚拟机1中的/etc/vsftpd/vsftpd.conf
102400表示100K
linux vsftpd服务的部署_第39张图片
linux vsftpd服务的部署_第40张图片
(3)在虚拟机2中重新上传文件,查看上传速率。
linux vsftpd服务的部署_第41张图片

本地用户的访问

1.登录控制
local_enable=YES|NO,YES表示本地用户可以登录,NO表示本地用户不能登录。
(1)在虚拟机1中新建两个用户lll和yyy,并设定密码。
重置用户密码:echo 新密码 | passwd --stdin 用户名
linux vsftpd服务的部署_第42张图片
(2)在虚拟机2中使用新建的两个用户进行登录
输入正确密码,登录失败。
linux vsftpd服务的部署_第43张图片
(3)修改虚拟机1中/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第44张图片
linux vsftpd服务的部署_第45张图片
(4)在虚拟机2中重新登录
这里已经登录成功了,只是相应目录下没有东西。
linux vsftpd服务的部署_第46张图片
为了看得更清楚,我们在虚拟机1中新建文件。
linux vsftpd服务的部署_第47张图片
在虚拟机2中重新登录
登录成功!
linux vsftpd服务的部署_第48张图片
2.家目录控制
local_root=/software
(1)在虚拟机2中登录后查看家目录
linux vsftpd服务的部署_第49张图片
(2)在虚拟机1中编辑/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第50张图片
linux vsftpd服务的部署_第51张图片
(3)在虚拟机2中重新登录,查看家目录。
家目录已经改变为/software
linux vsftpd服务的部署_第52张图片
3.写权限控制
write_enable=YES|NO,YES表示允许用户使用任何修改ftp文件系统的指令,NO表示不允许。
(1)在虚拟机2中尝试新建、删除操作
发现操作失败
linux vsftpd服务的部署_第53张图片
(2)编辑虚拟机1/etc/vsftpd/vsftpd.conf文件
在这里插入图片描述
linux vsftpd服务的部署_第54张图片
(3)在虚拟机2中重新新建、删除目录
linux vsftpd服务的部署_第55张图片
4.上传文件权限控制
local_umask=077
(1)在虚拟机2中上传文件查看其权限
umask=022:新建的目录权限为755,文件的权限为644
umask=077:新建的目录权限为700,文件的权限为600
这里发现所上传文件的权限为644
linux vsftpd服务的部署_第56张图片
(2)修改虚拟机1中/etc/vsftpd/vsftpd.conf文件
为了降低文件权限,将umask值设为077
linux vsftpd服务的部署_第57张图片
linux vsftpd服务的部署_第58张图片
(3)在虚拟机2中上传文件,查看其权限。
发现所上传的文件权限为600
linux vsftpd服务的部署_第59张图片
5.用户登录控制
/etc/vsftpd/ftpusers:永久黑名单
/etc/vsftpd/user_list:临时黑名单(可以根据我们的某些设定变成白名单)
使用第一种方式
(1)在虚拟机2中使用lll账号登录
登录成功
linux vsftpd服务的部署_第60张图片
(2)修改/etc/vsftpd/ftpusers文件
将lll用户添加进这个黑名单
linux vsftpd服务的部署_第61张图片
(3)在虚拟机2中使用lll账号重新登录
登录失败
linux vsftpd服务的部署_第62张图片
使用第二种方式
(1)在虚拟机2中使用lll账号登录
登录成功
linux vsftpd服务的部署_第63张图片
(2)修改虚拟机1中/etc/vsftpd/user_list文件
linux vsftpd服务的部署_第64张图片
(3)在虚拟机2中使用lll账号重新登录
登录失败
linux vsftpd服务的部署_第65张图片
6.用户登录白名单
userlist_deny=NO,NO表示开启白名单。
(1)准备
此时user_list和userlist_deny如下,此时开启的是黑名单。
linux vsftpd服务的部署_第66张图片
linux vsftpd服务的部署_第67张图片
(2)在虚拟机2中查看用户lll和yyy能否登录
用户lll不能登录,用户yyy可以登录。
linux vsftpd服务的部署_第68张图片
(3)user_list保持不变,修改虚拟机1中的/etc/vsftpd/vsftpd.conf文件。
linux vsftpd服务的部署_第69张图片
linux vsftpd服务的部署_第70张图片
(4)在虚拟机2中使用账号lll和yyy重新登录
此时,用户lll可以正常登录,用户yyy不能登录,黑名单变成了白名单。
linux vsftpd服务的部署_第71张图片
7.锁定用户到自己的家目录中
chroot_local_user=YES
(1)在虚拟机2中查看用户是否可以离开家目录
此时,用户可以离开家目录,进入服务器根目录,非常危险。
linux vsftpd服务的部署_第72张图片
(2)修改虚拟机1中的/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第73张图片
linux vsftpd服务的部署_第74张图片
(3)在虚拟机2中看是否能进入根目录
注意一个小问题:对/home/*的写权限和chroot_local_user设定冲突(锁定用户到家目录里,即降低用户权限,所以去掉写权限),我们需要在虚拟机1中将写权限减掉。
linux vsftpd服务的部署_第75张图片
在这里插入图片描述
在虚拟机2中再次查看,发现用户lll已经被锁定到家目录里了。
linux vsftpd服务的部署_第76张图片
这个参数对所有用户生效,比如用户yyy也不能离开家目录。
linux vsftpd服务的部署_第77张图片
8.锁定用户到自己的家目录中的白名单(接7)
chroot_local_user=YES
chroot_list_enable=YES(YES表示启用名单)
chroot_list_file=/etc/vsftpd/chroot_list
(1)在虚拟机2中所有用户均不能离开家目录
linux vsftpd服务的部署_第78张图片
(2)修改虚拟机1中的/etc/vsftpd/vsftpd.conf和/etc/vsftpd/chroot_list文件
linux vsftpd服务的部署_第79张图片
linux vsftpd服务的部署_第80张图片
linux vsftpd服务的部署_第81张图片
(3)在虚拟机2中查看用户切换路径情况
用户lll可以离开家目录,而用户yyy不行。
linux vsftpd服务的部署_第82张图片
linux vsftpd服务的部署_第83张图片
9.锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES(YES表示启用名单)
chroot_list_file=/etc/vsftpd/chroot_list
(1)修改虚拟机1中的/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第84张图片
linux vsftpd服务的部署_第85张图片
(2)在虚拟机2中查看用户切换路径情况
发现用户lll被锁定到家目录中,而用户yyy可以自由切换,即白名单变成了黑名单。
linux vsftpd服务的部署_第86张图片
linux vsftpd服务的部署_第87张图片

虚拟用户访问

准备
1. 为了避免系统资源的浪费,我们设置虚拟用户,即只有在ftp软件中才承认用户的身份,在实际linux系统中不存在这个用户。
2. 出于安全考虑,vsftpd不共享本地系统的用户认证信息,而采用自己独立的用户认证数据库来认证虚拟用户。这样,虚拟用户和真实用户不必采用相同的用户名和指令。
本地系统的真实用户认证: 模块pam_unix
独立的用户认证数据库: 模块pam_userdb(这个文本文档中的奇数行为用户名,用户名的下一行就是其对应的口令)
3. 使用 cd /etc/pam.d ls 指令查看多个认证文件
linux vsftpd服务的部署_第88张图片
实验
1.建立虚拟用户过程
(1)在虚拟机1中使用 vim /etc/vsftpd/ftp_auth_file 指令建立认证文件模板,注意用户名和密码后不能有空格,否则空格也会被算进去。
在这里插入图片描述
linux vsftpd服务的部署_第89张图片
(2)在虚拟机1中使用 db_load -T -t hash -f ftp_auth_file ftp_auth_file.db 指令加密认证文件(-T 转换,-t 类型,-f 指定转换文件)。
linux vsftpd服务的部署_第90张图片
(3)在虚拟机1中使用 vim /etc/pam.d/lyueyue 指令编写认证方法
account: 账号
auth: 密码
required: 表示强制
pam_userdb.so: 插件
db=/etc/vsftpd/ftp_auth_file: 加密认证文件所处位置,默认添加.db。
第一句命令含义:通过使用pam_userdb.so这个插件,强制比对加密认证文件来验证账号。
linux vsftpd服务的部署_第91张图片
linux vsftpd服务的部署_第92张图片
(4)在虚拟机1中使用 vim /etc/vsftpd/vsftpd.conf 指令,让ftp程序能识别这个认证。
pam_service_name: 指定认证策略文件
guest_enable: 指定虚拟用户功能开启
guest_username: 指定虚拟用户在ftp服务器上的用户身份为ftp(刚才新建的redhat1、redhat2和redhat3在ftp服务器上使用的真实用户身份指定为一个,即ftp)。
linux vsftpd服务的部署_第93张图片
linux vsftpd服务的部署_第94张图片
(5)在虚拟机1和虚拟机2中测试
在虚拟机2中发现可以使用虚拟用户登录ftp
linux vsftpd服务的部署_第95张图片
而在虚拟机1中这些redhat用户实际并不存在
linux vsftpd服务的部署_第96张图片
2.虚拟用户家目录的独立设定
(1)在虚拟机1中建立目录
-p:即使上级目录不存在,也可以按目录层级自动创建目录
linux vsftpd服务的部署_第97张图片
(2)在虚拟机1中建立文件
这样做的目的是便于等会儿查看家目录linux vsftpd服务的部署_第98张图片
(3)在虚拟机1中修改/etc/vsftpd/vsftpd.conf文件
准备:
$USER代表用户身份,但这个命令ftp并不能识别,因此在后面修改/etc/vsftpd/vsftpd.conf文件时要加上:user_sub_token= $USER
linux vsftpd服务的部署_第99张图片
linux vsftpd服务的部署_第100张图片
linux vsftpd服务的部署_第101张图片
(4)在虚拟机2中进行测试
测试成功
linux vsftpd服务的部署_第102张图片
3.用户配置独立
(1)在虚拟机1中修改/etc/vsftpd/vsftpd.conf文件
linux vsftpd服务的部署_第103张图片
在/etc/vsftpd/user_config目录中与用户名称相同的文件为用户配置文件
linux vsftpd服务的部署_第104张图片
linux vsftpd服务的部署_第105张图片
(2)在虚拟机1中新建目录和文件
linux vsftpd服务的部署_第106张图片
linux vsftpd服务的部署_第107张图片
linux vsftpd服务的部署_第108张图片
linux vsftpd服务的部署_第109张图片
(3)在虚拟机2中测试redhat1、redhat2和redhat3三个用户能否上传文件
发现只有redhat1用户可以上传文件,而redhat2、redhat3用户不能上传文件。
linux vsftpd服务的部署_第110张图片
linux vsftpd服务的部署_第111张图片
完成

你可能感兴趣的:(linux学习)