FTP服务

一、文件传输协议
--------

FTP---满足不同型号的计算机 和 不同类型的OS上进行文件传输。
![这里写图片描述](https://img-blog.csdn.net/20180904151456827?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**客户端和服务端 , 默认使用20、21端口(用于区别不同程序的标识--http:80 https:443 SMB:445**
**SSH:22-常用于服务器连接 Telnet:23-常用于网络设备连接)**
**20端口:数据端口:用于传输**
**21端口:控制端口(命令端口):用于形成数据信道(还可以通过服务器向客户端发送一些命令)普遍部署于内网中(LAN)、非常容易搭建、方便管理(通过本地hosts文件添加域名**
**客户端支持:多点下载(多个机器同时下载一个文件)、断点续传(迅雷等 暂停)**
**FTP有两种工作方式:**
主动:FTP服务器主动向客户端发送连接请求
1.客户端自己先打开一个随机端口(大于1024,例如:x(X>1024)) ,FTP进程链接服务器的21端口
源端口大于1024的x --->客户端
远程端口21 ---->服务器
2.客户端监听x+1端口, 继续向远程21发送请求
3.服务器打开20端口 去尝试和x+1端口连接
**被动:FTP服务器等待客户端发起请求(FTP默认模式)**
**被动模式中 21和20端口 都是由客户端发起请求**
**解决从服务器到客户端 防火墙的过滤的作用**
**开启FTP连接时 客户端打开两个随机端口(x>1024 和x+1)**
**x端口--->连接21端口(服务器上) 允许服务器进行回连(服务器开启一个新的端口 y大于1024)**
**服务器端的y端口 连接 客户端的x+1端口**

二、Linux下 什么是协议 什么是服务
--------------------
**FTP-协议 --->软件 Linux最火热 开源最常用的叫VsFTPd软件**
Vsftpd very secure ftp daemon--->极度安全的FTP守护进程
运行在Linux上 完全开源 安全性、传输速率高 而且支持虚拟用户(可以使用用户登录FTP,但是不能登录系
统)
安装Vsftpd
![这里写图片描述](https://img-blog.csdn.net/2018090415253538?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**对vsftpd服务主配置文档进行配置(/etc/vsftpd/vsftpd.conf)**
![这里写图片描述](https://img-blog.csdn.net/2018090415274839?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**配置文件说明**
![](https://img-blog.csdn.net/20180904152932158?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

三、VsFTPd服务支持三种认证
----------------
匿名开放用户:
最不安全的认证模式,任何人都可以没有密码 直接登录FTP服务器(企业也不用)
本地用户:
通过Linux系统本地的账户密码(/etc/passwd)认证
虚拟用户:
最安全 用户数据是独立存在的 和 本地用户数据无关(/etc/passwd----thinkmo)
独立数据库--->lisi用户不是真实存在用户文件中的

四、FTP管理
-------
**FTP是Linux系统中通过CLI管理**
**服务器-vsftpd**
**客户端很多:FTP-client**
**RHEL7:cifs-utils**
**客户端执行 **![这里写图片描述](https://img-blog.csdn.net/20180904153559926?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**案例一:使用匿名用户登录**
访问不重要的文件
通过iptables firewall tcp-wrappers 进行主机授权(允许那个IP IP地址段 允许哪些服务)
默认开放,需要开放用户的上传 下载等等权限。
需要开放的参数,配置文件中没有的在第一行后面添加(服务端)
![这里写图片描述](https://img-blog.csdn.net/2018090415381953?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
尝试访问(客户端)
![这里写图片描述](https://img-blog.csdn.net/20180904160204427?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**默认登录的目录: /var/ftp**
**对一个目录中的内容进行操控 不是看内容的权限 而是看上级目录的**
**案例二:本地用户模式**
**服务端需要开启的参数:**
![这里写图片描述](https://img-blog.csdn.net/20180904161127647?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**客户端:使用anonymous登录失败**
![这里写图片描述](https://img-blog.csdn.net/20180904161657695?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**使用root登录失败**
![这里写图片描述](https://img-blog.csdn.net/2018090416182194?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**服务端: 为了安全 默认拒绝root登录ftp**
![这里写图片描述](https://img-blog.csdn.net/20180904162018540?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**新建用户john登录ftp**
![这里写图片描述](https://img-blog.csdn.net/20180904162242413?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**默认情况下 使用本地用户登录 登录后 所在目录是当前用户的家目录**
![这里写图片描述](https://img-blog.csdn.net/20180904162456542?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](https://img-blog.csdn.net/20180904162503844?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**案例三:虚拟用户 最安全的认证形式**
步骤:
1.在/etc/vsftp目录中创建用于登录ftp认证的用户数据库文件(vim编辑 奇数行-用户名 偶数行-密码)
![这里写图片描述](https://img-blog.csdn.net/20180904163041341?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**明文用户 和 密码不安全 ---> 不符合vsftpd的文件要求**
**-->db_load命令 --->用hash算法 将原始的明文信息 转换成数据库文件 降低数据库文件的权限**
![这里写图片描述](https://img-blog.csdn.net/20180904163620217?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](https://img-blog.csdn.net/20180904163826275?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**用file命令查看vuser.db是个加密的数据库文件**
![这里写图片描述](https://img-blog.csdn.net/20180904163938965?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](https://img-blog.csdn.net/20180904164034504?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**2.创建vsftpd服务程序用于存储文件的根目录(登录后的默认目录) 以及 虚拟用户映射的系统的本地用户每一个文件具备:属主 属组**
**使用虚拟账户muquan:创建文件 但是本地没有用户 导致文件权限出问题**
![这里写图片描述](https://img-blog.csdn.net/20180904164554215?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](https://img-blog.csdn.net/20180904164715496?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**3.建立用于支持虚拟用户的PAM**
**PAM(可插拔认证模块)一种认证机制 分层设计(应用程序层 应用接口层 鉴别模块层)
可以把系统的认证方式 和 服务本身分离**
![这里写图片描述](https://img-blog.csdn.net/20180904164816583?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**新建一个用于虚拟用户认证的PAM文件 --- vsftpd.vu**
**文件中包括:参数db(为了使用db_load生成的文件 验证里面的用户名和密码)**
![这里写图片描述](https://img-blog.csdn.net/20180904165253767?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**4.在vsftpd的配置文档上 加入pam参数**
![这里写图片描述](https://img-blog.csdn.net/20180904165346589?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**5.为虚拟用户配置不同的权限 muquan和thinkmo都是虚拟用户**
允许john 上传、创建、修改、查看、删除文件
允许lol 查看
![这里写图片描述](https://img-blog.csdn.net/20180904170048583?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
**vim john(给谁权限 编辑谁)**
![这里写图片描述](https://img-blog.csdn.net/20180904170244943?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjE0MjM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
在Vsftpd的配置文件最后加上
**user_config_dir=/etc/vsftpd/vusers_dir**
 
 
 
 
 
posted @ 2018-10-30 22:21  爱小冉的小江  阅读(273)  评论(0)    收藏  举报