FTP文件传输协议

FTP文件传输协议

概述

FTP称为文件传输协议,再Internet双向传输,FTP使用的是完全没有受保护的文明传输方式VSFTP(Very Secour FTP)是linux上使用的解决ftp安全问题

安全特性:
使用者一般是普通用户
指定需要上层程序许可
绝大多数命令整合到了vsftp中,不需要额外命令
可以chroot锁定用户在自己的家目录

工作模式:

port模式(主动模式)

FTP文件传输协议
FTP文件传输协议

passive模式(被动模式)

FTP文件传输协议
FTP文件传输协议

传输模式
Binary模式:
不对数据进行任何处理,适合可执行文件、压缩文件、图片等(默认:输入bin)
ASCII模式:
进行文件传输时,自适应目标操作系统的结束符,如回车符等(输入ascii)

配置信息
服务端软件:vsftpd
客户端软件:ftp
服务名:vsftpd
端口号:20 21
配置文件 /etc/vsftpd/vsftpd.conf

配置文件介绍
/etc/vsftpd
ftpusers 黑名单
user_list
如果userlist_deny=NO,此文件为白名单
如果userlist_deny=YES, 此文件为黑名单
vsftpd.conf 核心配置文件
/var/ftp 匿名用户登陆所在的根目录

FileZilla软件输入主机IP即可链接

1:匿名用户实验

匿名用户初步了解

匿名用户权限控制
anonymous_enable=YES | NO 启用匿名访问
anon_umask=022 匿名用户所上传文件的权限掩码(可以设置匿名用户上传文件后可以被被下载)
annon_upload_enable=YES 允许上传,该需要改目录
anon_mkdir_write_enable=YES 允许创建目录
anon_other_write_enable=YES 开放其他写入权限(删除、覆盖、重命名)
anon_max_rate=0 限制最大传输速率(0为不限速,单位:bytes/秒)
anon_root=/var/ftp 匿名用户的FTP根目录

匿名用户实验

匿名用户基础测试

服务端下载vsftpd和ftp,客户端下载ftp
服务端设置vsftpd服务开机自启和启动服务
服务端查看端口号,21开启
登录客户端ftp 192.168.1.10 用户名输入ftp 密码直接回车
进入ftp界面,可以先看一下ftp专有的命令

?查看命令
ls 列出服务器上的当前目录下的内容
put 上传, get下载
同时上传下载mput,mget
重新定义名字:rename
删除文件:delete ,删除多个文件mdelete
删除目录:rmdir
查看工作目录:pwd

客户端ls一下,发现只有pub目录
服务端cd /var/ftp;touch fuwu.txt
客户端ls一下服务端的内容,可以看到fuwu.txt,get 文件fuwu.txt put文件anaconda-ks.cfg 试一下,发现可以下载,get的目录下载到登录服务器ftp指定目录前最后所在的本机目录,不能上传

不能上传的原因 :配置文件和目录权限都没有给到匿名用户
vim /etc/vsftpd/vsftpd.conf

FTP文件传输协议

ll -d /var/ftp

FTP文件传输协议

可以让匿名用户端上传

权限开启
在服务端vim /etc/vsftpd/vsftpd.conf,把注释取消掉

FTP文件传输协议

在/var/ftp目录下创建一个upload目录(mkdir upload),增加其他人写权限(chmod o+w upload)

服务端重启服务:systemctl restart vsftpd

进入客户端,重新连接ftp服务端,进入upload目录尝试上传文件(put 文件名),发现成功上传了(put),当然也可以进行下载

但是发现自己上传的文件无法下载,可以ls查看一下,只有所有者拥有读权限,此上传的匿名用户属于其他人

FTP文件传输协议

实现匿名上传的文件可下载

vim /etc/vsftpd/vsftpd.conf
在anon_upload_enables=YES下加入anon_umask=022

FTP文件传输协议
FTP文件传输协议

服务端重启vsftpd服务,客户端重新登录到服务端,发现匿名用户端上传的文件可以下载了

FTP文件传输协议

但是客户端无法对文件进行删除,无法创建目录,无法重命名文件

允许匿名用户创建目录和文件其他操作
先在客户端尝试一下创建目录和删除文件,重命名文件和覆盖文件,发现不可以(要用专门的命令)
rename重命名
delete 删除文件
mkdir 创建目录
put名字相同的文件进行两次 覆盖文件

FTP文件传输协议

客户端退出后,服务端修改配置文件,取消anon_mkdir_write_enable=YES的注释,允许匿名用户创建目录,增加一行anon_other_writeenable=YES,允许匿名用户进行其他写权限(删除文件,重命名文件)vim /etc/vsftpd/vsftpd.conf,修改权限下面取消一个注释,再加入一行

FTP文件传输协议
FTP文件传输协议

重启nfs服务,尝试客户端创建目录,删除文件,修改文件名,覆盖文件都可以实现

FTP文件传输协议

匿名用户进入某个文件夹时,弹出相应说明(一次登录只说明一次)

服务端在upload目录下创建.message 文件(vim /var/ftp/upload/.message),并写入内容welocme to here!
查看服务端dirmessage_enable=YES是否开启(默认开启)

FTP文件传输协议

服务端重启服务

去客户端进入upload目录查看提示消息

FTP文件传输协议

当然,退出再次进入就不显示了

2:本地用户登陆(本地用户切记加入allow_writeable_chroot=YES到主配置文件,centos7新加)

本地用户初步了解

优点:ftp管理更方便 缺点:本地账户创建过多,管理困难

本地用户初步测试
创建一个用户就好:useradd zhangsan ,设置张三的密码
ftp 192.168.1.10 用户名为zhangsan 输入密码
ls一下,发现所在位置是本地用户的家目录
put 和 get 都可以使用

相关选项:

local_enable=YES(默认)
local_umask=022

锁定知识点
锁定用户
锁定名单
chroot_local_user=YES 将所有用户的登陆点限制在自己的家目录下(allow_writeable_chroot=YES必须加上才能生效)
chroot_list_enable=YES 允许创建锁定用户名单
chroot_list_file=/etc/vsftpd/chroot_list (自己创建文件,想锁定谁就写在此文件下)
local_root=/var/www/html (自己创建此目录,为用户被锁定的目录)
allow_writeable_chroot=YES 允许被锁定的用户有写权限(可以删除本目录下的文件,一般都会加上)

local_max_rate=0 限制最大传输速率

ftp_banner=Welcome to blah Ftp service 用户登录时显示欢迎信息

userlist_enable=YES & userlist_deny=YES 禁止/etc/vsftpd/user_list 文件中出现的用户名登录FTP(黑名单)(你可以登陆,但是我也有不要的)

userlist_enable=YES & userlist_deny=NO 仅允许/etc/vsftpd/user_list 文件中出现的用户名登录FTP(不开启黑名单,白名单)(如果我不拒接你才可以登录)

配置文件:ftpusers(黑名单,优先级更高,立刻生效)

锁的搭配:

当chroot_local_user=YES,且增加了allow_writeable_chroot=YES时
本地所有用户限制在家目录实验:

先在服务端创建zhangsan、lisi两个用户并设置密码,指定户使用的shell再/sbin/nologin下(useradd -s /sbin/nologin zhangsan ),修改/etc/shells,增加一行:/sbin/nologin,可以在客户端让系统用户登录,才可以和zhangsan一样正常登录

在客户端登陆张三用户,发现可以随意切换目录,下载任意其他用户具有读权限的文件

服务端修改配置文件,取消注释,限制用户在家目录下(取消高亮显示noh),并在下面加一句allow_writeable_chroot=YES

FTP文件传输协议

再去客户端登录,发现用户所在目录被锁定在自己的家目录中

FTP文件传输协议

指定用户允许切换目录

比如说允许张三切换目录,vim /etc/vsftpd/vsftpd.conf,取消两个注释,意思为列表下的用户可以切换目录开启,列表创建在/etc/vsftpd/chroot_list

FTP文件传输协议

当然这个目录没有这个文件,我们自己创建一个,进入到/etc/vsftpd下,vim chroot_list

当chroot_local_user=YES未开启时,指定本地用户被锁定到指定目录
实验流程
主配置文件内容

chroot_list_enable=YES 可以建立被锁用户名单
chroot_list_file=/etc/vsftpd/chroot_list (自己创建文件,被锁的用户名单)(如果开启此权限波许添加allow_writeable_chroot=YES,centos7修改的)
local_root=/var/www/html (自己添加的目录,用户被锁在哪里)
allow_writeable_chroot=YES 允许被锁定的用户有写权限
FTP文件传输协议

创建/var/www/html 文件并给其他人写权限

黑白名单

两种黑名单
/etc/vsftpd/ftpusers,永久黑名单,优先级高于一切
报错信息
530 Login incorrect.
Login failed.
/etc/vsftpd/user_list 临时黑名单(显示Login failed,密码都不用输入)
修改上述两种黑名单后的生效方式:1:用户退出后再次登录(登陆错误信息:530 Permission denied.
Login failed.) 2:立刻重启服务(用户端显示登陆错误信息:421 Service not available, remote server has closed connection Passive mode refused.)

白名单
先去 /etc/vsftpd/vsftpd.conf 编辑目录中内容

FTP文件传输协议

再去/etc/vsftpd/user_list 所编辑的目录则成为了白名单

开启被动模式并修改被动模式数据传输使用端口
知识点:修改被动模式数据传输使用端口
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
操作:
在vsftpd.conf最后几行加入上述几行后:
找一个大的端口查看持续链接,进入服务端的/var/ftp/upload目录输入dd if=/dev/zero of=./fuwu.txt bs=1M count=1000 创建一个1个g的fuwu.txt 文件

netstat -tuln查看只有21端口

FTP文件传输协议

客户端匿名进入进入upload,get fuwu.txt
再次查看端口,开启了几个40000-50000之间的端口

3:虚拟用户(本地用户切记加入allow_writeable_chroot=YES到主配置文件,centos7新加)

介绍

找一个本地用户作为映射用户,提供登陆目录
目的:
创建虚拟用户来代替本地用户,减少本地用户曝光率
使本地用户作为虚拟用户用射影用户,为虚拟用户提供工作目录和权限控制
能够设置严格的权限,为每一个用户生成单独的配置文件
vim /etc/vsftpd/vsftpd.conf, local为全局设置,及所有用户,无法特定指定每一个用户

实验:

建立FTP的虚拟用户的用户数据库文件

创建用户并加密

创建虚拟用户,家目录指定在/var/ftproot,提供给a1,a2,a3用户家目录,不需要设置密码

创建

FTP文件传输协议

家目录允许其他人(映射用户)读

FTP文件传输协议

在/etc/vsftpd 下vim vsftpd.user

文件内容格式:奇数行用户,偶数行密码

FTP文件传输协议

创建a1,a2,a3三个用户。密码都设为123

文件加密:db_load -T(将普通文件转化为数据库文件) -t(指定加密算法) hash  -f(指定要转化的源文件)vsftpd.user  vsftpd.db(生成的文件名)

FTP文件传输协议

chmod 600 vsftpd.db启用匿名功能

FTP文件传输协议

建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

进入/etc/pam.d 创建pam文件vim vsftpd.pam

添加内容,调用用数据库文件
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd

FTP文件传输协议

vim /etc/vsftpd/vsftpd.conf 修改
增加部分

FTP文件传输协议
pam_service_name=vsftpd.pam
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir
FTP文件传输协议

把匿名用户相关配置改回初始配置

FTP文件传输协议

虚拟用户和匿名用户共用同一个参数

在/etc/vsftpd下创建dir文件

修改虚拟用户相关配置文件a1,a2,a3分配不同的权限

允许a1上传
cd dir;vim a1

FTP文件传输协议

允许a2创建目录
vim a2

FTP文件传输协议

允许a3上传,覆盖删除文件
vim a3

FTP文件传输协议

服务端重启服务

测试:
客户端登陆a1账户
可以上传
客户端登陆a2账户
可以创建目录
客户端登陆a3账户:
可以上传并覆盖,可以删除文件

发布者:LJH,转发请注明出处:https://www.ljh.cool/5624.html

(1)
上一篇 2022年7月3日 下午11:40
下一篇 2022年8月20日 下午1:50

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注