vsftp

一、概述

FTP是file Transfer Protocoll文件传输下ieyi,用于Internet上的文件的双向传输。因ftp是明文传输,没有受到保护,所以具有一定危险性。

VSFTP是一个基于GPL发布的类unix系统上使用的FTP服务器软件。为了解决ftp传输安全性问题的,依然明文,未加密。

二、安全特性

1.vsftp程序的运行着一般是普通用户,降低了相对应进程的权限,提高了安全性。

2.任何需要执行较高权限的执行全都需要上层程序的许可。

3.ftp所需要使用的绝大多数命令都被整合到vsftp中,基本不需要系统额外提供命令。

4.拥有chroot功能,可以改变用户的根目录,限制用户职能再自己的家目录。

三、vsftp连接类型

控制连接(持续连接)—>TCP 21(命令信道)—>用户收发FTP命令

数据连接(按需连接)—>TCP 20(数据信道)—>用于上传下载数据

四、VSFTP工作模式

两种模式(主动模式port模式;被动模式Passive模式)

主动模式(port,默认)

ftp客户端 ftp服务器 1.登录ftp服务器传入用户名密码(21端口) 2.登录成功 3.随机放开端口 4.port命令读取,通过随机端口号,发送到ftp服务器21端口 5.通过20端口发数据到客户端开通的随机端口 ftp客户端 ftp服务器

FTP客户端和服务器的TCP21端口进行连接,用来发送命令,客户端需要接收数据的时候在这个通道上发送port命令。port命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。

被动模式(passive)

ftp客户端 ftp服务器 1.登录ftp服务器传入用户名密码(21端口) 2.登录成功 3.pasv命令 4.开放随机端口号 5.服务器向客户端开放随机端口号,客户端接收 6.连接随机端口号获取数据 ftp客户端 ftp服务器

FTP客户端首先和服务器的TCP21端口建立连接,用来建立控制通道发送命令,但建立连接后客户端发送pasv命令。服务器收到pasv命令后,打开一个临时端口(端口大于1023小羽65535)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器的临时端口,然后ftp服务器将通过这个端口传输数据。

注:由于vsftp的被动模式是随机端口进行数据传输,所以设置防火墙时需要刻意放行。

五、VSFTP传输模式

Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件,图片等。

ASCII模式:进行文本传输时,自动适应操作系统的结束符,如回车等。

Linux红帽发行版本中VSFTP默认采用的时binary模式,这样能保证绝大多数文件传输后能正常使用。

切换方式:在ftp>提示符下输入ascii即转换到ascii方式,输入binary即转换到binary模式

六、vsftp软件信息

服务端软件名
vsftpd

客户端软件名
ftp

服务名
vsftpd

端口号
20、21、或指定范围内随机端口

配置文件
/etc/vsftpd/vsftpd.conf

登录验证方式

匿名用户验证
用户账号名:ftp或anonymous
用户密码:无密码
工作目录:/var/ftp(类似家目录,别把文件放在这里)
默认权限:可下载可上传,上传权限由两部分组成(配置文件和文件系统)

本地用户验证
用户账号名:把本地用户(/etc/passwd)
用户密码:用户密码(/etc/shadow)
工作目录:登录用户的宿主目录(用户家目录)
权限:最大权限(drwx------)

虚拟(virtual)用户验证
1.创建虚拟用户来代替本地用户,减少本地用户曝光率
2.使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制
3.能够设置严格的权限(为每一个用户生成单独配置文件)
人为创建,生成数据库文件,找一个系统用户作为虚拟用户的映射用户,借助系统用户的家目录作为默认登陆点,则默认登录位置:/home/*
每个虚拟账户的权限都可以被单独定制

七、VSFTP实验

匿名用户实现

匿名权限控制:(/etc/vsftpd/vsftpd.conf)

anonymous_enable=yes,启用匿名访问
anon_umask=022,匿名用户所上传文件的权限掩码
anon_root=/var/ftp,匿名用户的FTP根目录
anon_upload_enable=yes,允许上传文件
anon_mkdir_write_enable=yes,允许创建目录
anon_other_write_enable=yes,允许其他人写入权限
anon_max_rate=0,限制最大传输速率,0为不限速,单位byte/s
注:anon就是anonymous,代表匿名用户。

实现需求和流程

1.实现可以上传
anon_upload_enable=yes
在/var/ftp/创建上传目录
修改上传目录的权限或所有者,让匿名用户有写入权限(不推荐设置/var/ftp目录权限,pub也不行)

2.实现创建目录和文件其他操作
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

3.用户进入某文件时,弹出相应说明
在对应目录下创建.message文件,并写入提示内容。
确认dirmessage_enable是否启用
尝试切换目录查看效果,同一次登录仅提示一次。

实现上传的文件可下载
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限
设置anon_umask=022,可以让上传的文件other位拥有r权限,然后才能被其他人下载。

服务机安装vsftpd,客户端安装ftp
客户端通过ftp 服务器IP,即可通过vsftp访问。
常用命令:
?,获取帮助
get,下载文件,例如:get install.log
put,上传文件,例如:put install.log
delete,删除目录,例:delete laoli
mkdir,创建目录,例:mkdir laoli
rename,改名。例如:rename install.log ist

本地用户验证实现

本地用户权限控制:
local_enable=yes,是否启用本地用户
local_umask=022,本地用户所上传的文件的权限掩码
local_root=/var/ftp,设置本地用户的ftp根目录,默认本地用户家目录
chroot_local_user=yes,是否将用户禁锢在家目录
local_max_rate=0,限制最大传输速率
ftpd_baner=welcaome to blah FTP server,用户登陆时显示的欢迎信息
userlist_enable=yes&userlist_deny=yes,禁止/etc/vsftpd/user_list文件中出现的用户名用户登录FTP
userlist_enable=yes&userlist_deny=no,仅允许/etc/vsftpd/user_list文件中出现的用户名用户登录FTP

配置文件
/etc/vsftpd/ftpusers
禁止/etc/vsftpd/ftpusers文件中出现的用户名用户登录FTP,权限比user_list更好,即刻生效。

实现需求和流程

1.客户端需要创建用户并设置密码(用户不登陆操作系统,仅用来登录vsftp)
useradd -s /sbin/nologin username

2.将所有用户禁锢在自己家目录下
chroot local_user=yes,默认不禁锢

3.将部门用户禁锢在自己家目录下
chroot_list_enable=yes
开启白名单功能,允许白名单中的用户随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list
白名单文件所在位置(需要自己配置)

4.配置文件
/et/cvsftpd/ftpusers
所有写入此文件的用户都不允许登录ftp,立即生效

5.修改被动模式数据传输使用端口
pasv_enable=yes
pasv_main_port=30000
pasv_max_port=35000

虚拟用户验证实验

1.建立FTP虚拟用户的用户数据库文件,在/etc/vsftpd/

vim vsftpd.user
注:文件名可以随便定义,文件格式是奇数行用户,偶数行密码
laoli
123456
在这里插入图片描述
写完后用命令进行文件类型转换
db_load -T -t hash -f vsftpd.user vsftpd.db
将vsftpd.user转换成vsftpd.db
-T,将文件转换成数据库文件
-t,加密类型,hash加密
-f,要转换的源文件,所以是-f vsftpd,user
在这里插入图片描述
再修改文件权限位600,保证其安全性
chmod 600 vsftpd.db
在这里插入图片描述

2.创建ftp用户的映射用户,并指定其家目录。

useradd -d /var/ftproot -s /sbin/nologin virtual
创建virtual用户作为ftp的虚拟用户的映射用户
在这里插入图片描述

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

cp -a /etc/pan.d/vsftpd /etc/pam.d/vsftpd.pam
在这里插入图片描述
使用模板生成自己的认证配置文件,方便调用

4.编辑新生成的文件vsftpd.pam,清空原来的内容,添加以下内容

auth required pam_userdb.so db:/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd

5. 在vsftpd.conf添加支持配置

修改
pam_service_name=vsftpd.pam
添加
guest_enable=yes #开启虚拟用户
guest_username=virtual #映射用户是谁
user_config_dir=/etc/vsftpd/dir #配置文件目录,自己创建

6.为虚拟用户创建独立的配置文件,启动服务并测试

注:做虚拟用户配置文件时,将主配置文件中定义的匿名用户相关设置注释掉,因为虚拟用户和匿名用户使用同一种参数anon_xxx。如果主配置文件有自定义的配置,那么子配置文件不生效,仅是自定义的,原本默认的不改。
在这里插入图片描述
配置文件:

用户可以上传:anon_upload_enable=yes
用户可以创建文件或目录:anon_mkdir_write_enable=yes
用户可以修改文件名,删除等写入权限
anon_upload_enable=yes
anon_other_write_enable=yes

注:给映射用户的家目录,设置r权限,让虚拟用户有读写权限。
dir下的配置文件的名字和虚拟用户文件中的用户名相同即可,每个用户就有每个配置文件
取消匿名用户的相关设置(虚拟用户与匿名用户使用相同的参数,所以如果要设定虚拟用户,取消主配置文件中关于匿名用户的配置,子虚拟用户配置文件才有作用)

测试是否成功

在这里插入图片描述
在这里插入图片描述

openssl+vsftpd加密验证方式

使用tcpdump工具指定端口抓包,抓取ftp登录过程中的数据包
tcpdump -i ens33 -nn -x -vv port 21 and ip host

-i,interface:指定tcpdump需要监听的接口
-n,对地址以数字方式显示,否则显示主机名
-nn,除了-n作用外,还会把端口显示为数值,否则显示端口服务名
-x,输出包的头部数据,会以16进制和ASCII两种方式同时输出
-vv,产生更详细的输出,可以-v -vvv

例如:
tcpdump -i ens33 -nn -x -vv port 21 and ip host 192.168.1.130
指定监听本机ens33网卡的21端口,抓取来自192.168.1.130的包
注:此抓包就可以看到账户密码,表示vsftp确实以明文传输,可以和22端口抓的包作比较
在这里插入图片描述
在这里插入图片描述

所以需要使用openssl进行加密

具体操作:
https://blog.csdn.net/mango_kid/article/details/108147323
很详细,我这里也就不写了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353612.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SFTP在Linux和window下的文件传输

使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件 参考文献: http://ice-k.iteye.com/blog/1068275 http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html 背景: 有一台主机,安装了windows7,在其安装了virtualbo…

vsftp的简单使用

一、vsftp以及安装 服务端软件:vsftpd 客户端软件:ftp 端口号:20、21或指定范围内其他随机端口 配置文件:vim /etc/vsftpd/vsftpd.conf # 安装 yum install vsftpd ftp# 开机自启 systemctl enable vsftpd# 启动 systemc…

Explaining predictive models: the Evidence Counterfactual

Imagine being targeted with an advertisement for this blog. You’d like to know: why did the AI model predict you’d be interested in the Faculty of Business and Economics’ blog, based on the hundreds of web pages you visited? The answer could be: becaus…

记录搭建hadoop集群的过程

Linux(CentOS-7.6-x64位)基础配置, 虚拟机平台VmWare15 CentOS-7.6-x64镜像下载: https://www.aliyundrive.com/s/72Xg449t6i8 提取码: 32rm VmVare15安装包下载带序列号:VmVare15安装包下载带激活序列号资源-CSDN文库 点击关闭,点击完成&…

ChatGPT热度不减!华为宣布入局,盘古GPT能否大杀四方!

ChatGPT热度不减 六月份了,朋友们,来到六月份了已经,ChatGPT的热度依旧不减,各大论坛网站的榜单上还飘着ChatGPT相关话题的文章,且排名靠前。由此可见,这ChatGPT这股子热潮还得持续一段时间呢。 而且ChatG…

三国志战略版:Daniel_新晋减伤战法-奇计良谋

一、战法介绍 战法定位:稳定且有针对性的群体减伤战法。 同类效果: 稳定的群体减伤战法:八门金锁阵、抚辑军民、暂避其锋、锋矢阵、藤甲兵、御敌屏障。 稳定群体减伤战法往往可以极大提升一个队伍的强度,如今一线群体减伤战法中…

英雄打怪

英雄类 package LOLDemo;/*** ClassName: Hero* Description: * 自定义一个英雄类* 0.英雄类中加入“经验值”,“等级”,“攻击力”等属性变量,加入“击打”方法,击打的目标是怪物,击打的结果是怪物的生命值-英雄攻击力* …

【游戏逆向】RPG游戏自动打怪之取得最近怪物

RPG游戏辅助想要自动打怪,首要的任务就是需要获得最近的怪物,否则打怪的顺序会非常混乱。 想要取得最近怪物信息 要2个步骤 第一步 计算出所有怪物的距离 第二步 对所有怪物的距离进行判断,筛选出距离最近的 第一步怪物距离计算 如果是以2D的平面来看 2个点的距…

英雄杀-如何通关挑战

对于很多英雄杀的新手玩家来说,挑战,几乎很难一次通关,我也是,一般没超过十关。 我给大家分享一下我最近的通关方法,仅供参考: 第一种思路: 杨延昭: 有两个前提: 第一、…

javaweb session与cookie

Cookie Cookie是本地的存储数据,是键值对 注意一定要使用resp.addCookie才能返回cookie cookie修改 修改的话也是调用addCookie,对相同key的进行修改,作用于set-cookie响应头。 可以新建cookie,add进去,也可以在用户传…

行为型设计模式03-观察者模式

🧑‍💻作者:猫十二懿 🏡账号:CSDN 、个人博客 、Github 🎊公众号:猫十二懿 观察者模式 1、观察者模式介绍 观察者模式是一种行为型设计模式,也被称为发布-订阅模式,它定…

【虹科案例】虹科数字化仪在激光雷达大气研究中的应用

01 莱布尼茨研究所使用激光雷达进行大气研究 图 1:在 Khlungsborn 的 IAP 办公室测试各种激光器 大气研究使用脉冲激光束通过测量大气中 100 公里高度的多普勒频移和反向散射光来测量沿光束的温度和风速。返回的光信号非常微弱,会被阳光阻挡&#xff0c…

XML入库后空白字符丢失问题

最近项目上在做电子病历,使用的是第三方的电子病历组件,该病历组件是利用XML来组织数据的。界面上渲染出来的效果如下图: XML渲染后的界面 对应的后台数据(已做简化处理)是如下XML格式的,其中的空格部分是…

前端入门学习

封装axios axios的基础使用 axios基础使用方法: axios.create({config}) //创建axios实例 axios.get(url,{config}) //get请求 axios.post(url, data,{config}) //post请求 axios.interceptors.request.use() // 请求拦截器 axios.interce…

赛尔号什么时候支持html5,赛尔号:这几只精灵必须拥有!无关强度,只因经典情怀!...

赛尔号这款游戏有着比较老的资历,很多玩家从还是小学生的时候就开始玩起了这个游戏,然后便一直玩到大学,甚至毕业工作。因此,赛尔号不仅仅是一款简单的网页游戏,更是一款充满了情怀的游戏。 那么,接下来的小…

赛尔号星球大战服务器维修,赛尔号星球大战11月29日更新公告

赛尔号星球大战11月29日新增了什么玩法?服务器的维护时间是多少?来看看9k9k小编rayxx带来的赛尔号星球大战11月29日更新公告。 11月29号下午15点至17点更新公告: 1、精灵 新增了两种精灵:亚兰洛(火系),星吉拉(普通系)。 通过有缘人进行精灵繁…

4399知名游戏-赛尔号图鉴的爬取

4399知名游戏-赛尔号图鉴的爬取 面向对象: 1.疫情居家无聊之人 2.python略懂一点点就行 头文件引入: 如果没有下面的头文件不要慌,打开你的python终端pip install 包名即可 from bs4 import BeautifulSoup import requests import json …

容器技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化(容器技术)的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

使用geoserver发布shp和tiff数据

一、安装并启动geoserver服务 1.1 下载geoserver 进入官网下载 由于geoserver是使用Java语言开发的,所以运行需要java的环境,不同geoserver的版本号对java的版本要求不同,所以选择版本时需注意对应java的版本要求,由于我本地安…

javascript回到顶部

如图: 数字从1到100,滚动后点击章鱼哥便可以回到顶部。 HTML内容不多只有一个a标签内容有一个图片和100个h1标签,但要看清楚是给它设置好了id的,当然不设置id也行但有时候对小白不太友好。 为了使点击图片更加贴合整个页面所以需要…