当前位置:   article > 正文

计网-FTP&SFTP&FTPS-Wireshark_sftp报文

sftp报文

一、FTP server&client环境搭建

Ubuntu中安装配置和卸载FTP(转) - 极客先锋 - 博客园 (cnblogs.com)

本地Ubantu18搭建FTP server:

  # 安装FTP服务
 sudo apt-get install vsftpd
 # 配置
 sudo vi /etc/vsftpd.conf
 # 修改以下设置,允许匿名用户
listen=YES                 # 服务器监听  
local_enable=YES         # 是否允许本地用户访问  
write_enable=YES         # 是否允许上传文件,不开启会报 550 permission denied  
anonymous_enable=NO     # 匿名访问允许,默认不要开启,  
anon_upload_enable=YES # 匿名上传允许,默认是NO  
anon_mkdir_write_enable=YES # 匿名创建文件夹允许  
chroot_local_user=YES      # 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。  
chroot_list_enable=YES  # 设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。  
chroot_list_file=/etc/vsftpd.chroot_list # 禁用的列表名单,格式为一行一个用户,用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。 
# 创建用户
sudo useradd -g ftp -d /home/test -m test  
sudo passwd test
# 删除用户
sudo userdel test
# 将用户test添加至/etc/vsftpd.chroot_list
vim /etc/vsftpd.chroot_list
# 重启
sudo /etc/init.d/vsftpd restart
# 卸载
sudo apt-get remove --purge vsftpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接 - 简书 (jianshu.com)

 # 我们将首先在 /etc/ssl/ 下创建一个子目录(如果这个目录不存在),以存储SSL / TLS证书和密钥文件:
 sudo mkdir  /etc/ssl/private
 # 我们通过运行下面的命令在单个文件中生成证书和密钥。
 openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048
 # 上述命令将提示您回答下问题,可输入任意值。
 # 下面配置vsftp,这里我没有开启防火墙,所以不进行防火墙的配置
 # 打开VSFTPD配置文件并在其中定义SSL详细信息:
 sudo vim /etc/vsftpd/vsftpd.conf
 # 添加或找到选项 ssl_enable 并将其值设置为 YES 以激活 SSL 的使用,因为 TLS 比 SSL 更安全,因此通过启用 ssl_tlsv1 选项,我们将限制 VSFTPD 使用 TLS:
 ssl_enable=YES
 ssl_tlsv1=YES
 ssl_sslv2=NO
 ssl_sslv3=NO
 # 取消注释掉下面的行,如下所示:
 rsa_cert_file=/etc/ssl/private/vsftpd.pem
 rsa_private_key_file=/etc/ssl/private/vsftpd.key
 # 我们还必须防止匿名用户使用SSL,然后强制所有非匿名登录使用安全的SSL连接进行数据传输,并在登录期间发送密码:
 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES
 # 我们可以使用以下选项在FTP服务器中添加更多的安全功能。使用option_ssl_reuse = YES选项,所有SSL数据连接都需要展示SSL会话重用;证明他们知道与控制频道相同的主机密码。所以我们应该禁用它。
 require_ssl_reuse=NO
 #我们可以通过设置 ssl_ciphers 选项来设置SSL密码等级。这将有助于阻挡试图强制使用特定密码的攻击。
 ssl_ciphers=HIGH
 #然后,我们来定义被动端口的端口范围(最小和最大端口)。
 pasv_min_port=40000
 pasv_max_port=50000
 #我们可以使用debug_ssl选项启用SSL调试,将 openSSL 连接记录到VSFTPD日志文件中:
 debug_ssl=YES
 # 最后保存并关闭文件。然后重启 VSFTPD 服务:
 systemctl restart vsftpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

client使用的是ftpzilla

对于FTPS,要配置如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IAJCBnvS-1647150039502)(%E8%AE%A1%E7%BD%91-FTP&SFTP&FTPS.assets/image-20220313120420796.png)]

然后信任证书即可

二、FTP

文件传送协议FTP(File Transfer Protocol)是TCP/IP协议簇中的一个成员,也是现在因特网上最广泛的文件传送协议。FTP协议包括两个部分,一个是FTP客户端,另一个是FTP服务器。当然,FTP服务器是用来存储文件资源的,FTP客户端通过访问FTP服务器来获得资源的。

一般情况下,当使用FTP服务的时候,我们都知道默认是21号端口,其实还有一个20号端口。FTP使用两个TCP连接,21号端口负责控制连接,20号端口负责数据连接,这样才不会混乱,是FTP可以更好的为我们服务。FTP协议的工作方式可以分为主动方式和被动方式两种,主动是指FTP客户端发送PORT命令连接FTP服务器,被动是FTP客户端发送PASV命令连接FTP服务器。

1、主动方式:(服务器发起连接到客户端上指定的端口)

  • 用户主机一个随机端口连接FTP SERVER的TCP21端口进行协商;

  • 用户主机告诉FTP SERVER,我的XXXX端口已经打开,你可以放心大胆的连过来;

    在这里插入图片描述

  • 然后FTP SERVER就用TCP20端口连接用户主机的XXXX端口,数据传输开始。

    • 主动模式要求client防火墙关闭,否则:

    在这里插入图片描述

    • 关闭后:

      在这里插入图片描述

2、被动方式:(客户端发起连接到服务器上指定的端口)

  • 首先用户使用随机端口连接FTP SERVER的TCP 21端口进行协商;
    在这里插入图片描述

  • FTP SERVER告诉客户机:我的XXXX端口开放了,你连过来吧;
    在这里插入图片描述

  • 客户机使用一个随机端口连接FTPSERVER的XXXX端口传输数据。
    在这里插入图片描述

传输文件:

3、ftp常见命令




三、FTPS

FTPS 是使用安全套接层(SSL)证书的 FTP 安全技术。整个安全 FTP 连接使用用户 ID、密码和 SSL 证书进行身份验证。一旦建立 FTPS 连接,FTP 客户端软件将检查目标 FTP 服务器证书是否可信的。

如果证书由已知的证书颁发机构(CA)签发,或者证书由您的合作伙伴自己签发,并且您的信任密钥存储区中有其公开证书的副本,则 SSL 证书将被视为受信任的证书。FTPS 所有的用户名和密码信息将通过安全的 FTP 连接加密。

以下是 FTPS 的优点和缺点:

优点:

  • 通信可以被人们读取和理解
  • 提供服务器到服务器文件传输的服务
  • SSL/TLS 具有良好的身份验证机制(X.509 证书功能)
  • FTP 和 SSL 支持内置于许多互联网通信框架中

缺点:

  • 没有统一的目录列表格式
  • 需要辅助数据通道(DATA),这使得难以通过防火墙使用
  • 没有定义文件名字符集(编码)的标准
  • 并非所有 FTP 服务器都支持 SSL/TLS
  • 没有获取和更改文件或目录属性的标准方式

抓包可以看到加密传输过程:

四、SFTP

SFTP 或 SSH 文件传输协议是另一种安全的安全文件传输协议,设计为 SSH 扩展以提供文件传输功能,因此它通常仅使用 SSH 端口用于数据传输和控制。当 FTP 客户端软件连接到 SFTP 服务器时,它会将公钥传输到服务器进行认证。如果密钥匹配,提供任何用户/密码,身份验证就会成功。

以下是 SFTP 优点和缺点:

优点:

  • 只有一个连接(不需要 DATA 连接)。
  • FTP 连接始终保持安全
  • FTP 目录列表是一致的和机器可读的
  • FTP 协议包括操作权限和属性操作,文件锁定和更多的功能。

缺点:

  • 通信是二进制的,不能“按原样”记录下来用于人类阅读,
  • SSH 密钥更难以管理和验证。
  • 这些标准定义了某些可选或推荐的选项,这会导致不同供应商的不同软件之间存在某些兼容性问题。
  • 没有服务器到服务器的复制和递归目录删除操作
  • 在 VCL 和 .NET 框架中没有内置的 SSH/SFTP 支持。

五、对比

大多数 FTP 服务器软件这两种安全 FTP 技术都支持,以及强大的身份验证选项。

但 SFTP 显然是赢家,因为它适合防火墙。SFTP 只需要通过防火墙打开一个端口(默认为 22)。此端口将用于所有 SFTP 通信,包括初始认证、发出的任何命令以及传输的任何数据。

FTPS 通过严格安全的防火墙相对难以实现,因为 FTPS 使用多个网络端口号。每次进行文件传输请求(get,put)或目录列表请求时,需要打开另一个端口号。因此,必须在您的防火墙中打开一系列端口以允许 FTPS 连接,这可能是您的网络的安全风险。

六、参考

参考了网上很多文章,部分是自己实验的截图。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/864080
推荐阅读
相关标签
  

闽ICP备14008679号