目录

文章目录

  • 目录
  • FTP
  • vsftpd
  • 自动模式和被动模式
    • PORT 主动模式
    • PASV 被动模式
  • 访问控制方式
  • 部署配置
    • FTP Server
      • Global config
      • Anonymous User
      • Local User
      • Virtual User
      • 带宽限速配置
    • FTP Client

FTP

FTP(File Transfer Protocol,文件传输协议),用于 Internet 上的控制文件的双向传输(Download/Upload),使用 TCP 协议提供可靠传输。FTP 是一个 C/S 架构。用户通过一个支持 FTP 协议的 Client,连接到在远程主机上的 FTP Server。

FTP 使用两条 TCP 连接实现文件传输:

  1. 一条是 FTP 控制连接,用来控制管理;
  2. 另一条是 FTP 数据连接,用于数据传输。

vsftpd

vsftpd(very secure FTP daemon),安全性是它的一个最大的特点。可以支持很多其他的 FTP 服务器所不支持的特征,例如:

  • 非常高的安全性需求。
  • 带宽限制。
  • 良好的可伸缩性。
  • 可创建虚拟用户。
  • 支持 IPv6。
  • 速率高等。

自动模式和被动模式

FTP 基于 TCP 协议,不支持 UDP 协议。与众不同的是 FTP 使用了 2 个端口,一个 Date transmission port 端口和一个 Control commands transmission port 端口。通常来说这两个端口是 20 和 21。但由于 FTP 工作方式的不同,Date port 并不总是 20 的。这就是主动(PORT)与被动(PASV)模式的最大区别。

PORT 主动模式

Client 从一个任意的 Port N(N>1024)连接到 FTP Server 的 Port 21,Client 开始监听 Port N+1,并发送 FTP CLI “PORT N+1” 到 FTP Server,然后 Server 以 Data Port 20 连接到 Client 指定的 Data Port N+1。

开启主动模式:

pasv_enable=NO

PASV 被动模式

Client 从一个任意的 Port N(N>1024)连接到 FTP Server 的 Port 21,Client 开始监听 Port N+1,Client 提交 PASV CLI,Server 收到 PASV 后会开启一个任意的 Port P(P >1024),并发送 “PORT P” 命令给 Client。然后 Client 发起从 Port N+1 到 Server Port P 的连接用来传送数据。

该模式中,Control 连接和 Data 连接都是由 Client 发起的,这样就可以解决从 Server 到 Client 的 Data 端口的入方向连接被防火墙过滤掉的问题。所以,该模式只有当 Client 通知 Server 它处于被动模式时才启用。

开启被动模式(默认):

pasv_enable=YES

访问控制方式

FTP Server 支持以下 3 中访问权限类型

  1. 匿名用户。
  2. 本地用户。
  3. 虚拟用户。

NOET:virtual user 和 local user 不能同时存在。

User permission control file

  • /etc/vsftpd/ftpuser:deny login user, have higher priority
  • /etc/vsftpd/user_list:only allow login user

部署配置

FTP Server

yum -y install vsftpd

Global config

vim /etc/vsftpd/vsftpd.conf

# YES:Client 上传或下载的日志都会被纪录起来。
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog # Control Port。
listen_port=21
# Listen IP Address。
listen_address=172.18.22.68
# PORT 模式下的 Data Port。
connect_from_port_20=YES# (PASV) 是否启动被定联机模式(passivity mode)。
pasv_enable=NO
# (PASV) min float portNumber
pasv_min_port=8066
# (PASV) max float portNumber
pasv_max_port=8099# 限制最大的客户端连接数,0 表示没有限制。
max_clients=0
# 数据连接超时时间。
data_connection_timeout=120dirmessage_enable=YES
tcp_wrappers=YES
pam_service_name=vsftpd

NOTE:/var/ftp 目录不能更改用户主和用户组和最高权限,默认即可。

Anonymous User

anonymous_enable=YES
anon_umask=022
anon_root=/var/ftp/anon
anon_upload_enable=YES
anon_other_write_enable=YES

创建目录:

mkdir /var/ftp/anon

配置权限:757(出于安全的考虑)或 777。

chmod 777 /var/ftp/anon

Local User

vim /etc/vsftpd/vsftpd.conf

# 允许 /etc/passwd 本地账户登陆。
local_enable=YES
local_root=/var/ftp
# 允许本地账户具有读写权限。
write_enable=YES
# 允许本地账户下载。
download_enable=YES
# 设定本地账户创建 Dir/File 时的权限掩码。
local_umask=022# 通过搭配能实现以下几种效果:
#  1. chroot_list_enable=YES,chroot_local_user=YES:在 /etc/vsftpd/chroot_list 文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
#  2. chroot_list_enable=YES,chroot_local_user=NO:在 /etc/vsftpd/chroot_list 文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
#  3. chroot_list_enable=NO,chroot_local_user=YES:所有的用户均不能切换到其他目录。
#  4. 当chroot_list_enable=NO,chroot_local_user=NO:所有的用户均可以切换到其他目录。
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
chroot_list_enable=YES

创建 FTP local user:

useradd ftpuser
passwd ftpuser

Virtual User

step1. Create virtual user register DB file.

 touch vuser.list

vim vuser.list

userName
userPasswd

step2. Convert the format of userDB file to Berkey DB.

db_load -T -t hash -f vuser.list vuser.db
chmod 600 vuser.*

step3. Create FTP root file also virtual user mapped as system user.

useradd -d /var/ftp/soft -s /sbin/nologin virtual-d  # specify virtual's homeDirectory-S  # specify virtual's shellvirtual  # All virtual user will mapped as system user when they login.

虚拟用户上传时使用 virtual user 的身份来进行,其宿主目录为 /var/ftp/soft:

chmod 755 /var/ftp/soft   # Home directory permission decided what can the virtual user do in the FTP share home directory.

step4. Create PAM authentication file to support virtual user login. (PAM Pluggable authentication modules)
vim /etc/pam.d/vsftpd.vu

auth required pam.userdb.so db=/etc/vsftpd/vuser     # identity authentication specify vuser.db file
account required pam.userdb.so db=/etc/vsftpd/vuser  # identity verification

step5. Edit the vsftp.conf file

guest_enable=YES
guest_username=virtual       # specify virtual user mapped system user
pam_service_name=vsftpd.vu   # PAM authentication file,localUser's PAM is vsftpd. So localUser and virtualUser can't exist at the same time.

step6. Set the specific permission for virtualUser.

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir
mkdir /etc/vsftpd/vuser_dir

vim /etc/vsftpd/vuser_dir/deradm

anon_ipload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_eoor=/var/market         # specify virtual user home directory.

NOET:If virtual user want to get the rwx permission in directory, we can set permission of 757 to the directory.Because the virtual user use the O(other)identity to access the directory. And we could be change the ownUser to ftp.

带宽限速配置

利用 vsftpd 进行速率限制,需要了解几个配置参数:

  • anon_max_rate:设置匿名用户每条连接最大上传或下载速率。
  • local_max_rate:设置本地用户每条连接最大上传或下载速率。
  • max_per_ip:设置每个用户允许连接最大连接数,即每台电脑同时可以打开几个 FTP 连接。
  • max_clients:设置允许同时连接服务器最大客户端数。

e.g.

anon_max_rate=20000         # 大约 20kb/s。
max_per_ip=3                # 每个 IP 同时允许打开三个连接。
max_clients=3               # 同时允许 3 个客户端建立连接。

FTP Client

  • FileZilla Client

互联网协议 — FTP 文件传输协议相关推荐

  1. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6

    其他协议 WebSocket WebSocket - 建立连接 WebService RESTful HTTPDNS FTP文件传输协议 邮件相关的协议(SMTP.POP.IMAP) POP vs I ...

  2. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)

    加油!偷博人! 一.FTP文件传输协议  向远程主机上传输文件或从远程主机接收文件  客户/服务器模式  客户端:发起传输的一方  服务器:远程主机  ftp: RFC 959  ftp服 ...

  3. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  4. FTP文件传输协议详解

    简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器. 需要通过控制连接20端口来控制双方的通信 需要通过数据连接21端口来进行双方的通信 主动模式:最大的特点是数据连接由服务器的20端口主动 ...

  5. 网络编程之FTP文件传输协议

    FTP文件传输协议: 一.简述: 1.TCP/IP协议簇,应用层协议,采用服务端与客户端通信方式共享文件. 2.FTP根目录:/            (如路径: /hello/) 3.现在的FTP一 ...

  6. 计算机网络 P43 网络应用模型 P44 DNS系统 P45 FTP文件传输协议

    DNS系统: FTP文件传输协议  

  7. FTP文件传输协议(实现windows与linux文件互传)

    FTP文件传输协议(实现windows与linux文件互传) 目录 FTP文件传输协议(实现windows与linux文件互传) 一.FTP概述 二.FTP通信端口 三.FTP数据连接 四.FTP连接 ...

  8. FTP文件传输协议原理详解(两种工作模式)

    初始FTP     文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议.文件传送(file transfer ...

  9. 浅谈FTP(文件传输协议)

    FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议.是基于TCP协议的应用层协议,用于在网络上传输文件. 该协议使用的端口号为20和 ...

最新文章

  1. mysql学习三:mysql的组成部分
  2. SQL多表连接查询(具体实例)
  3. 获取apk的package name 和 Activity
  4. 代替for循环的常见问题
  5. java 观察者模式示例_观察者设计模式示例
  6. python教育学_跟着老男孩教育学Python开发【第三篇】:Python函数
  7. 如何对建模型数据进行预处理
  8. Wincc常用C脚本
  9. php新年倒计时源码,2020年-新年倒计时HTML源码
  10. 魔兽世界服务器维护有哪些内容,魔兽世界wow服务器实装维护公告内容详情介绍_魔兽世界维护公告_快吧游戏...
  11. 洪磊父亲详述被拘细节:银行卡共100万
  12. python连连看_Python 连连看连接算法
  13. 《古墓丽影10》PC版重磅更新:DX12画质惊艳!
  14. 2015062801 - 祈福八仙水上乐园
  15. 巨量信息流广告 “一键起量“ 功能,深度解析使用方法!
  16. c#语法糖模式匹配【switch 表达式】
  17. 伤寒杂病论.辨阳明病脉证并治
  18. 绿色数据中心空调设计 书评_书评:负责任的响应式设计
  19. 记录 2015 年年初跳槽的经历!
  20. dataframe如何替换某列元素值,python – Pandas DataFrame,用另一列的值替换列的值

热门文章

  1. springboot 创建地址_手把手教你Spring Boot入门开发
  2. python flask实现博客系统_基于Flask的博客网站设计与实现
  3. matlab解符号方程组,matlab 求解符号方程组
  4. Frontiers期刊向您邀稿啦!脑机接口领域
  5. 基于Android移动终端的微型餐饮管理系统的设计与实现4——Android基础
  6. 魔改CNN揭秘宇宙大爆炸:物理学的核心是对称性
  7. 全面开启线上参会报名!CNCC线上与现场参会者共赴技术盛宴!
  8. 国产期刊崛起!上海大学、郑州大学主办期刊IF超15,2021版SCI期刊影响因子出炉...
  9. 她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...
  10. Nature盘点的这些代码,个个都改变了科学:Fortran、AlexNet还有arXiv等