FTP服务
一、文件传输协议
FTP—满足不同型号的计算机 和 不同类型的OS上进行文件传输。
客户端和服务端 , 默认使用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
对vsftpd服务主配置文档进行配置(/etc/vsftpd/vsftpd.conf)
配置文件说明
三、VsFTPd服务支持三种认证
匿名开放用户:
最不安全的认证模式,任何人都可以没有密码 直接登录FTP服务器(企业也不用)
本地用户:
通过Linux系统本地的账户密码(/etc/passwd)认证
虚拟用户:
最安全 用户数据是独立存在的 和 本地用户数据无关(/etc/passwd—-thinkmo)
独立数据库—>lisi用户不是真实存在用户文件中的
四、FTP管理
FTP是Linux系统中通过CLI管理
服务器-vsftpd
客户端很多:FTP-client
RHEL7:cifs-utils
客户端执行
案例一:使用匿名用户登录
访问不重要的文件
通过iptables firewall tcp-wrappers 进行主机授权(允许那个IP IP地址段 允许哪些服务)
默认开放,需要开放用户的上传 下载等等权限。
需要开放的参数,配置文件中没有的在第一行后面添加(服务端)
尝试访问(客户端)
默认登录的目录: /var/ftp
对一个目录中的内容进行操控 不是看内容的权限 而是看上级目录的
案例二:本地用户模式
服务端需要开启的参数:
客户端:使用anonymous登录失败
使用root登录失败
服务端: 为了安全 默认拒绝root登录ftp
新建用户john登录ftp
默认情况下 使用本地用户登录 登录后 所在目录是当前用户的家目录
案例三:虚拟用户 最安全的认证形式
步骤:
1.在/etc/vsftp目录中创建用于登录ftp认证的用户数据库文件(vim编辑 奇数行-用户名 偶数行-密码)
明文用户 和 密码不安全 —> 不符合vsftpd的文件要求
–>db_load命令 —>用hash算法 将原始的明文信息 转换成数据库文件 降低数据库文件的权限
用file命令查看vuser.db是个加密的数据库文件
2.创建vsftpd服务程序用于存储文件的根目录(登录后的默认目录) 以及 虚拟用户映射的系统的本地用户每一个文件具备:属主 属组
使用虚拟账户muquan:创建文件 但是本地没有用户 导致文件权限出问题
3.建立用于支持虚拟用户的PAM
**PAM(可插拔认证模块)一种认证机制 分层设计(应用程序层 应用接口层 鉴别模块层)
可以把系统的认证方式 和 服务本身分离**
新建一个用于虚拟用户认证的PAM文件 — vsftpd.vu
文件中包括:参数db(为了使用db_load生成的文件 验证里面的用户名和密码)
4.在vsftpd的配置文档上 加入pam参数
5.为虚拟用户配置不同的权限 muquan和thinkmo都是虚拟用户
允许john 上传、创建、修改、查看、删除文件
允许lol 查看
vim john(给谁权限 编辑谁)
在Vsftpd的配置文件最后加上
user_config_dir=/etc/vsftpd/vusers_dir