day13:FTP服务

一,FTP概述

概述

FTP(File Transfer Protocol,文件传输协议)是用于在计算机之间传输文件的协议。它工作在网络的应用层,通过 TCP 协议进行数据传输,默认端口号为 21(命令端口,另外将20当做数据端口{主动模式下})。FTP 协议分为客户端和服务端,通过客户端连接服务端以实现文件的上传和下载。FTP 常用于发布和下载软件、网站更新等。

服务端软件

  • vsftpd:安全稳定、性能良好的 Linux FTP 服务端,配置灵活。
  • ProFTPD:易于配置,支持虚拟用户,适合大规模应用。
  • Pure-FTPd:主打简单和高效,具有较高的安全性和兼容性。

客户端工具

  • 命令行 FTP 客户端:在 Linux 和 Windows 系统中都支持,用于执行 FTP 操作的简单命令行工具。(ftp,lftp)
    • lftp:默认匿名用户登录,可以批量下载,也可以下载目录
    • ftp:默认用户+密码方式访问,只能下载文件
  • FileZilla:支持多平台、图形界面的 FTP 客户端,操作便捷,功能全面。
  • WinSCP:适用于 Windows,支持 FTP 及 SFTP 等多种协议,界面友好,适合初学者。

工作模式

FTP 的工作模式有两种:主动模式和被动模式。这两种模式通过不同的端口开启数据传输连接。

  1. 主动模式(Active Mode)

    • 客户端从临时端口向服务端的 21 端口发起连接。
    • 服务端向客户端发送数据传输端口(20 端口),再从该端口向客户端的临时端口建立数据连接。
    • 因为防火墙可能会阻止服务端访问客户端的临时端口,主动模式在受限的网络中可能遇到阻碍。
  2. 被动模式(Passive Mode)

    • 客户端请求服务端开启被动模式,服务端在任意高端口打开数据端口。
    • 客户端连接此数据端口进行数据传输。
    • 被动模式适合在客户端位于防火墙后或受 NAT 保护时使用。

二,FTP服务端搭建

环境准备

防火墙关闭,selinux关闭

安装软件

yum -y install vsftpd

启动

systemctl start vsftpd

测试

先找到自己的ip

配置文件概述

位置:/etc/vsftpd/vsftpd.conf

三,ftp客户端使用

客户端安装

在大部分 Linux 系统中,可以通过包管理器安装命令行 FTP 客户端:ftp/lftp(建议lftp)

FileZilla:跨平台的免费 FTP 客户端,可通过官网下载或使用包管理器安装:sudo yum install filezilla

WinSCP(适用于 Windows):支持多种协议,直接下载安装即可。

连接服务器

命令行方式

lftp/ftp <server-ip-or-domain>【如果lftp要账号登录:-u 账户,密码】

  • ls:列出当前目录内容。
  • cd <目录>:切换到服务器指定目录,并在该目录工作。
  • lcd <目录>:切换到本地指定目录,并在该目录工作。
  • get <文件>【《目标地址》】:下载单个文件到本地。
  • put <文件>【《目标地址》】:上传单个文件到服务器。
  • mget <pattern>【《目标地址》】:批量下载匹配的文件。
  • mput <pattern>【《目标地址》】:批量上传匹配的文件。
  • delete <filename>:删除服务器上的文件。
  • mirror <远程目录> <本地目录>
    • 镜像下载:下载整个目录结构(lftp专有)不支持通配符
  • mirror -R <本地目录> <远程目录>
    • 镜像上传:将本地目录上传到服务器(lftp专有)不支持通配符
图形界面客户端
  • 打开客户端,输入服务器地址、端口(默认 21)、用户名和密码。
  • 连接成功后,文件目录会显示在窗口中,可以直接进行文件的拖拽传输。

四,配置文件详解

  1. 基本访问控制

    1. 设置用户登录权限,结合 /etc/ftpusersuserlist 文件确保用户的安全访问:
    2. # 允许本地系统用户登录
      local_enable=YES  # 启用本地用户登录
      
      # 禁止匿名用户访问,确保安全性
      anonymous_enable=NO  # 禁止匿名用户登录
      
      # 启用用户列表文件以控制访问权限
      userlist_enable=YES       # 启用用户列表控制访问
      userlist_deny=NO          # 设置为 NO 表示仅允许列表中的用户登录
      userlist_file=/etc/vsftpd/user_list  # 指定允许访问的用户列表文件路径
      
      # 启用 TCP Wrappers 访问控制,通过 /etc/hosts.allow 和 /etc/hosts.deny 管理访问
      tcp_wrappers=YES
      
    3. 用户访问控制的优先级说明

      1. /etc/ftpusers 文件:首先检查此文件中列出的用户,任何在此文件中的用户将被禁止访问 FTP,即使在其他文件中允许也会被拒绝。
      2. userlist 配置:在 /etc/ftpusers 中未被禁止的用户,如果配置了 userlist_enable=YESuserlist_deny=NO,则只有在 /etc/vsftpd/user_list 文件中的用户可以访问。
      3. TCP Wrappers (/etc/hosts.allow/etc/hosts.deny)/etc/hosts.allow 中的允许规则优先于 /etc/hosts.deny,未匹配到的 IP 会被默认拒绝。
  2. 目录与文件访问控制

    1. 设置用户的根目录和权限,确保用户只能访问授权的目录:
    2. # 本地用户的根目录
      local_root=/home/$USER/ftp  # 将本地用户限制在其专属目录
      
      # 限制用户只能访问其根目录
      chroot_local_user=YES  # 将用户限制在主目录内
      
      # 允许在 chroot 环境中进行写操作
      allow_writeable_chroot=YES  # 允许在 chroot 环境中上传文件
      
      # 启用 chroot 列表以允许部分用户访问其他目录
      chroot_list_enable=YES  # 启用 chroot 列表
      chroot_list_file=/etc/vsftpd/chroot_list  # 列表中的用户不受 chroot 限制
      
  3. 文件传输控制

    1. 配置文件传输和日志记录,以便于文件权限控制和记录活动:
    2. # 允许上传和删除等写操作
      write_enable=YES  # 启用写操作权限
      
      # 设置文件权限掩码
      local_umask=022  # 设置文件权限为 644,目录权限为 755
      
      # 启用传输日志记录
      xferlog_enable=YES
      xferlog_file=/var/log/vsftpd.log  # 日志文件位置
      xferlog_std_format=YES  # 使用标准日志格式
      
      # 会话和数据连接的超时设置
      idle_session_timeout=300  # 空闲会话超时(秒)
      data_connection_timeout=120  # 数据连接超时(秒)
      

  4. 网络访问控制

    1. 设置 FTP 的工作模式、端口范围及 TCP Wrappers 的网络控制,以确保网络访问安全:
    2. # 启用被动模式支持防火墙环境
      pasv_enable=YES  # 启用被动模式
      pasv_min_port=30000  # 被动模式的最小端口
      pasv_max_port=31000  # 被动模式的最大端口
      
      # 设置连接限制
      max_clients=200  # 最大客户端连接数
      max_per_ip=5     # 每个 IP 的最大连接数
      
      # 启用 TCP Wrappers
      tcp_wrappers=YES  # 使用 TCP Wrappers 控制访问,查看 /etc/hosts.allow 和 /etc/hosts.deny 文件
      
    3. TCP Wrappers 访问控制优先级说明

      1. 系统首先检查 /etc/hosts.allow 文件,若有匹配项则允许访问,不再检查 /etc/hosts.deny
      2. 如果 /etc/hosts.allow 无匹配项,则检查 /etc/hosts.deny。如匹配到拒绝规则,则拒绝访问。
      3. 若两者均无匹配项,系统默认允许访问。
  5. 限速设置

    1. 限制传输速率以节省带宽:
    2. # 限制本地用户的上传/下载速度
      # local_max_rate=50000  # 最大传输速度设置为 50 KB/s
      
  6. 服务与日志设置

    1. 配置服务的运行模式及欢迎信息,便于管理与监控:
    2. # 启用独立模式并监听 IPv4
      listen=YES         # 独立模式下监听 IPv4
      listen_ipv6=NO     # 禁用 IPv6
      
      # 设置欢迎消息
      ftpd_banner=Welcome to My FTP Server  # 登录后显示的欢迎信息
      
      # 记录所有 FTP 协议信息以便于调试
      log_ftp_protocol=YES  # 启用详细协议日志
      
  7. 数据目录设置

    1. 灵活配置全局和用户的数据目录:
    2. # 全局公共数据目录
      # local_root=/var/ftp/pub  # 公共目录(可选)
      
      # 用户特定的数据目录
      user_sub_token=$USER  # 使用用户名动态生成目录
      local_root=/home/$USER/ftp  # 为每个用户设置专属目录
      

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年末Meme币市场分析:最后两个月的走势预测

进入2024年最后的两个月&#xff0c;Meme币市场正面临复杂的内外部环境&#xff0c;行情波动增大&#xff0c;许多投资者希望对年底走势做出预测&#xff0c;以便更好地调整投资策略。在这篇文章中&#xff0c;我们将从市场情绪、监管政策、技术创新和宏观经济等几个关键因素出…

ssm+vue657基于spring和vue开发的web新闻流媒体平台

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

家电智能屏方案新选择,乐鑫SoC高集成触控语音控制,启明云端乐鑫代理商

随着科技的飞速发展&#xff0c;智能家居系统正逐渐成为现代生活的一部分。在这一变革中&#xff0c;LCD屏幕作为人机交互的核心界面&#xff0c;扮演着至关重要的角色。 它们不仅提供实时信息的展示&#xff0c;还支持丰富的交互式体验&#xff0c;使得家庭管理变得更加直观和…

ceph补充介绍

SDS-ceph ceph介绍 crushmap 1、crush算法通过计算数据存储位置来确定如何存储和检索&#xff0c;授权客户端直接连接osd 2、对象通过算法被切分成数据片&#xff0c;分布在不同的osd上 3、提供很多种的bucket&#xff0c;最小的节点是osd # 结构 osd (or device) host #主…

(六)Python结构数据类型

一、集合类型&#xff08;Sets&#xff09; Sets&#xff08;集合&#xff09;是一个无序不重复的元素集。主要功能是自动清除重复的元素。创建集合时使用大括号{}包含其中元素。 Food{西瓜,南瓜,冬瓜,北瓜} print(Food) 输出结果&#xff1a; 增加重复元素&#xff0c;则会…

补齐:相交链表:扣160

梦重新开始的地方 – 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。图示两个链表在节点 c1 开始相交&#xff1a; 示例&#xff1a; 何解&#xff1f; 暴力&…

消息队列-Rabbitmq(消息发送,消息接收)

将来我们开发业务功能的时候&#xff0c;肯定不会在控制台收发消息&#xff0c;而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议&#xff0c;因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息&#xff0c;都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不…

BUUCTF re Youngter-drive

传送门&#xff1a;BUUCTF在线评测 先梳理一下这题要用到的知识点 1&#xff1a;upx的查壳与脱壳&#xff08;老朋友了&#xff0c;就不多讲了&#xff0c;可以去下面看原理&#xff09; 2&#xff1a;多线程和ida平衡堆栈 &#xff08;第一次遇到有点难懂&#xff09; 可以…

网络安全入门文档-虚拟机配置篇

前言 虚拟机作为网络安全渗透测试中常见的工具。通常被用来安装kali系统 简单解释一下&#xff0c;目前操作系统分为三类 windows、linux、mac linux又有两个小类&#xff0c;分别是RedHat、Debian 而我们要安装的kali就是基于Debian的操作系统。 简单来说。虚拟机和系统是两个…

直流稳压电源设计

一、设计任务和基本要求&#xff1a; &#xff08;1&#xff09;设计集成直流稳压电源电路。 &#xff08;2&#xff09;输出直流电压5V。 &#xff08;3&#xff09;画出逻辑电路图&#xff0c;对电路进行仿真验证&#xff0c;写出总结报告。 图 1 系统组成框图 二、进度安排…

华为认证HCIE通过需要考到多少分?_博睿谷·博睿慕课

华为认证HCIE考试主要分两部分&#xff1a;笔试实验。其中笔试部分总分为1000分&#xff0c;达到600分算通过。实验部分总分为100分&#xff0c;通过分数线为80分。 HCIE证书是华为认证体系中的最高级别认证&#xff0c;难度会相对比较高。那么&#xff0c;如何才能高分通过HCI…

基于springboot的社区团购系统设计与实现

一、项目背景 网络交易&#xff08;Electronic Commerce&#xff09;&#xff1a;是指实现整个贸易过程中各阶段的贸易活动的电子化。网络交易是一种多技术的集合体。其业务可包括&#xff1a;信息交换、售后服务、销售、电子支付、运输、组建虚拟企业、公司和贸易伙伴可以共同…

江协科技STM32学习- P32 MPU6050

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

AutoGLM:智谱AI的创新,让手机成为你的生活全能助手

目录 引言一、AutoGLM&#xff1a;开启AI的Phone Use时代二、技术核心&#xff1a;AI从“语言理解”到“执行操作”三、实际应用案例&#xff1a;AutoGLM的智能力量1. 智能生活管理&#x1f34e;2. 社交网络的智能互动&#x1f351;3. 办公自动化&#x1f352;4. 电子商务的购物…

CSGO: Content-Style Composition in Text-to-Image Generation(代码的复现)

文章目录 CSGO简介论文的代码部署需要下载的模型权重&#xff1a;复现中存在的一些问题 推理代码生成结果示意图 CSGO简介 CSGO: Content-Style Composition in Text-to-Image Generation&#xff08;风格迁移&#xff09; 本文是一篇风格迁移的论文&#xff1a;将内容参考图像…

Excel重新踩坑4:快捷键;逻辑函数;文本函数;日期相关函数;查找与引用函数;统计类函数;数组公式

0、excel常用快捷键 基础快捷键&#xff1a; alt&#xff1a;快速区域求和&#xff1b; ★ altenter&#xff1a;强制换行&#xff08;因为在excel单元格中没法用enter换行&#xff09;&#xff1b;altj&#xff1a;强制换行符的替换删除&#xff0c;这里altj就是在替换中输入…

【JavaEE初阶 — 多线程】认识线程

目录 认识线程&#xff08;Thread&#xff09; 1 线程是什么? 2 为什么要有线程 3 进程和线程的区别 区别一 区别二 区别三 区别四 4. Java的线程和操作系统线程的关系 5.创建第一个多线程程序 引入Thread类 重写run() start()与run()区别 降低多线程对CPU的占用…

链栈的引用

链栈&#xff0c;自己实现一遍&#xff0c;但是节点存储不是整数&#xff0c;存储学生信息&#xff08;年龄&#xff0c;分数&#xff0c;姓名&#xff09;三级引用。 1、建立学生信息结构体&#xff0c;将data改为学生信息结构体类型。 2、循环入栈和出栈。 #include<m…

Games101笔记-三维Transform变换(三)

1、二维矩阵转化为三维 1、将3x3的变换矩阵升维到4x4的变换矩阵即可 2、缩放及平移 3、旋转 2、视图变换 1、MVP变换&#xff1a;模型&#xff08;场景&#xff09;视图&#xff08;相机&#xff09;投影&#xff08;正交/透视&#xff09; 2、正交投影和透视投影区别 …

树莓派开发相关知识六 -串口通讯

1、uart串口通信 uart串口通信协议&#xff0c;使用txd&#xff0c;rxd双引脚实行异步数据传输&#xff0c;其中txd为传输口&#xff0c;rxd为接收口。 其协议如上图&#xff0c;由起始位有效数据位奇偶校验位(*可选)&#xff0c;停止位(*宽度可调)&#xff0c;空闲位组成&…