网络服务 - FTP
00 分钟
2024-6-20
Created
Jun 14, 2024 12:46 PM
Tags

FTP服务

A. FTP服务原理

简介

  • FTP:File Transfer Protocol,文件传输协议
  • 用于网络上文件的双向传输(上传、下载)的应用层协议
  • 最广泛、最底层、较简单的,但是明文传输
  • 适用于较大文件的传输

FTP 访问权限

  • 下载
  • 上传
  • 创建文件夹
  • 其他写入权限

FTP 传输模式

  • ASCII模式
    • 将文件内容转换成目标计算机支持的格式(存储文本文件的格式)
    • 多用于传输文本文件
  • BINARY模式
    • 二进制模式
    • 不对数据进行任何处理、逐位复制
    • 多用于传输非文本文件,如程序、数据库、压缩文件

FTP 工作模式

客户端传输数据时,FTP服务默认采用被动模式客户端指明使用主动模式 —-> ftp> passive off被动和主动是由客户端决定的被动和主动作用的是服务器的动作 —-> 是主动连接还是被动等待连接
A. 被动模式
  • 流程
    • 客户端连接服务器的21端口、验证用户名和密码,建立控制连接客户端想传输数据时,在控制连接中发送PASV命令服务器收到该命令后,生成随机端口返回给客户端、等待客户端的请求服务器端为缩小开放的随机端口数量,可通过pasv_max_port、 pasv_min_port配置,指定一个端口范围传输数据时,客户端的随机端口连接服务器的指定端口,建立数据连接客户端和服务器进行数据传输
  • 控制连接:
    • 客户端(随机端口)-> 服务器端(21端口)
  • 数据连接:
    • 客户端(随机端口)-> 服务器端(指定端口)
B. 主动模式
  • 流程
    • 客户端连接服务器的21端口、验证用户名和密码,建立控制连接客户端想传输数据时,在控制连接中发送PORT命令该命令中包含了客户端要进行数据传输的指定端口服务器端收到该命令后,会主动连接客户端传输数据时,服务器的20端口连接至客户端的指定端口,建立数据连接客户端和服务器进行数据传输
  • 控制连接:
    • 客户端(随机端口)-> 服务器端(21端口)
  • 数据连接:
    • 服务器(20端口) -> 客户端(指定端口)
被动模式VS主动模式
控制连接过程相同
数据连接部分不同
主动模式下,服务器主动连接客户端来建立数据连接
被动模式下,服务器被动等待客户端连接来建立数据连接

FTP加密(FTPS)

加密方式:FTP+SSL —-> FTPS,使用x.509的数字认证
SSL 协议
  • SSL:Secure Socket Layer,安全套接字
    • 是一种安全性协议
    • 目前版本是3.0,版本通常被称为SSLv1、SSLv2、SSLv3
    • TLS(安全传输层)是基于SSL上开发的、支持更多功能
主要功能:
  • 认证用户和服务器,确保数据发送到正确的客户机和服务器上
  • 加密数据以防止数据中途被窃取
  • 维护数据的完整性,确保数据在传输过程中不被改变
PKI
  • PKI:Public Key Infrastructure,公钥基础设施
    • 一种遵循既定标准的密钥管理平台为所有网络应用提供加密和数字签名等密码服务、密钥和证书管理服务等利用公钥理论和技术来提供的安全服务的基础设置是信息安全技术的核心、是电子商务的关键和基础
  • 组成
    • CA:数字证书的申请签发机关,是PKI的核心X.500:保存、发布证书的目录服务器,用户可以查询SSL:高强度密码算法、及相应的安全服务器
加密原理
  1. 服务端先在本地生成一对密钥,然后携带公钥、网站信息、企业信息等数据去CA机构申请;
  1. CA机构根据提交的信息核实身份后,会通过单向的哈希算法(如MD5)对这些信息进行加密,加密后的内容被称为“信息摘要”,因为单向哈希算法的不可逆特性,所以只要被加密的内容发生了丁点改变,加密后得到的内容也会存在天差地别,因此可以有效防止信息被篡改;
  1. 紧接着CA机构会通过自己的密钥对“信息摘要”进行再次加密,加密后的内容被称为「数字签名」,而「申请信息、服务器公钥、数字签名」组合在一起,最终被称为「数字证书」

FTP 常见 S & C

系统
客户端
服务端
windows
winscp、Filezilla、serv-u
IIS
linux
ftp命令
VSFTPD

VSFTPD

VSFTPD 属性
  • VSFTPD:very secure FTP daemon,非常安全的ftp服务器(但依旧是明文传输)
  • 拥有三种用户模式
    • 匿名用户模式
    • 本地用户模式
    • 虚拟用户模式
  • 拥有改善的安全特性
    • 程序的运行者一般是普通用户,降低对响应进程的权限,提高安全性
    • 任何需要执行的较高权限都需要上层程序许可,如selinux的行为控制
    • 所需的大部分命令都整合在vsftpd中,基本不需要系统额外提供命令
    • 拥有chroot功能,可改变用户的根目录,限制用户只能在自己的家目录里
VSFTPD 用户
用户模式
共享目录
用户名
密码
默认权限
匿名用户
/var/ftp
ftp/anonymous
任意
仅下载
本地用户
该用户家目录
系统用户
对应密码
FTP所有权限
虚拟用户
本地代理用户家目录
指定
指定
指定

B. FTP服务参数

C. VSFTPD服务搭建流程

1. 基本功能搭建

环境:设备一(服务器端)、设备二(客户端)
  • 服务端:
      1. 安装vsftpd软件
      1. 配置vsftpd服务
      1. 启动vsftpd服务
      可配置的功能:全局参数
  • 客户端:
      1. Linux
  1. Windows
  • 文件资源管理器(winE) 的地址栏中,输入:ftp://vsftpd服务IP
    • 使用 winscpfilezillaserv-u 等工具

    2. 配置用户模式

    (此 实验环境基本功能搭建基础上进行↓)
    !! 注意: 需先把要上传共享目录的文件系统权限设置为755

    a. 匿名用户模式

    匿名用户默认仅拥有ftp下载权限
    1. 下载权限 (默认拥有)
      1. 默认可以, 但 必须 符合以下条件!!
        1. 被下载文件归属属于ftp用户时, 需在文件所有者上有r权限,才能下载
        1. 被下载文件不属于ftp用户时, 需在其他人权限上有r权限,就能下载
    1. 上传权限
      1. 软件让上传(软件配置开关)
        文件系统让写入(W权限)
        chmod或者设置acl权限
        文件写入位置
        特殊情况:匿名模式不允许直接上传到匿名的根目录下,可以创建自定义子目录保存上传文件
        其他人下载
        默认能下载,但想让自己上传的文件也能下载,需要设置anon_umask,允许其他人有r权限
    • # 创建共享根目录下子目录 $ mkdir /var/ftp/upload/ #文件系统让写入(w权限) $ chmod 777 /var/ftp/upload/ #该操作比较危险,建议用acl权限 $ setacl -u -c
    1. 创建目录权限
      1. 其他写入权限
        总结
        • 服务端
            1. 开启匿名用户模式
            1. 配置匿名用户权限
            1. 重启服务
        • 客户端验证
        • $ ftp 192.168.88.10 输入用户名:ftp 或 anonymous 输入密码:随便输入、一般输空直接回车 ftp> pwd #查看当前位置,在匿名用户的共享根目录即/var/ftp ftp> get 文件名 #从共享目录下载文件到客户端的当前位置 ftp> put 文件名 #向共享目录上传文件、默认没有 ftp> mkdir 目录名 #在共享目录中创建目录的权限、默认没有 ftp> rename、delete等 #在共享目录的其他写权限、默认没有 ftp> ls #查看服务器端目录内文件 ftp> !ls #查看客户端目录内文件

        b. 本地用户模式

        本地用户默认拥有ftp所有权限, 用户名和密码为服务器端/etc/passwd文件内的用户
        • 服务端:
            1. 开启本地用户模式
            1. 配置本地用户权限
            1. 重启服务
        注!!!
        vsftpd服务在验证用户时,会查询该用户的shell类型,若不在/etc/shells文件中,则vsftpd服务拒绝登录
        • 客户端:

          c. 虚拟用户模式

          由于pam验证的原因, 虚拟用户和本地用户无法共存, 但它们都可以和匿名用户模式共存
          • 服务端:
              1. 创建 本地(代理)用户 ,指定共享位置(代理用户的家目录)
                1. 创建虚拟用户, 存储文本并转为数据库文件, 修改FTP服务用户登录PAM验证
                  1. 修改FTP服务的主配置文件,指明虚拟用户模式指明验证文件权限配置
                    1. 创建被代理用户的权限控制目录文件
                      1. 重启服务

                    3. FTP 模拟加密

                    环境: 设备一(待认证的服务器端)、设备二(客户端)
                    • 服务端:
                        1. 安装SSL软件包
                          1. 生成证书
                            1. 配置文件添加SSL相关配置
                              1. 重启服务
                            • 客户端: 使用 filezella 验证
                            有时会发现时间不同的红色报错 ↓↓↓↓

                            4. 时间同步搭建

                            4-1 date命令与clock命令
                            date: 查看系统时间
                            clock: 查看硬件时间
                            4-2 时间同步搭建
                            • 能联网
                              • 使用ntpdate命令 同步网络时间服务器
                            • 虚拟机设置
                              • 选项 - vmware tools - 客户机与主机时间同步
                            • 局域网
                              • 使用chrony服务
                            Chrony:
                            • 一个开源的自由软件,在RHEL 7操作系统中是默认服务
                            • 默认配置文件在 /etc/chrony.conf
                            • 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步
                            • 相对NTP时间同步软件,速度更快、配置和依赖都更简单
                            • 有两个核心组件,分别是:
                              • chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿;
                              • chronyc:提供一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
                            • 服务器端:
                                1. 修改配置文件
                                1. 启动(重启)服务并设为自启动
                                需配置功能:
                                注释掉时间同步服务器
                                配置允许同步的客户机
                                设置同步级别
                            • 客户端:
                                1. 修改配置文件
                                1. 启动(重启)服务并设为自启动
                                需配置功能: 设置时间同步服务器为服务器端
                                验证

                            5. FTP 局域网YUM源

                            D. 常见报错 & 问题

                            • 用户既需要服务权限,又需要文件系统权限
                            • vsftpd服务设置参数结尾不能有空格
                            • 添加、删除虚拟用户是需要重新生成数据库依赖
                            • FTP的主/被动模式是由客户端决定的,针对服务器而言的
                            • 公网中无法要求客户端开放防火墙、一般采用被动模式;FTP服务器较弱时,可以考虑主动模式
                            上一篇
                            Linux 基础知识 往期汇总
                            下一篇
                            <K8S> vol. 01 - kubernetes 组件