ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

测试sftp服务——【 人之生不能无群。】

2022-07-17 15:37:48  阅读:159  来源: 互联网

标签:FTP 无群 端口 SFTP 人之生 sftp root 客户端


内容:

一.文件传输协议FTP、SFTP和SCP

1.网络通信协议分层

应用层:

  HTTP(Hypertext Transfer Protocol 超文本传输协议,显示网页)
  DNS(Domain Name System)
  FTP(File Transfer Protocol)
  SFTP(SSH File Transfer Protocol,和FTP不一样)
  SCP(Secure copy,based on SSH)
  SSH (Secure Shell)


通信层:

  TCP(Transmission Control Protocol 三次握手传输协议)
  UDP


网络层:

IP(Internet Protocol)
ICMP(Internet Control Message Protocol,主要用于路由发送错误报告)


链接层:

  MAC(media access control)

2.比较:FTP、SFTP和SCP

FTP(File Transfer Protocol):是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。FTP是基于TCP协议的,因此iptables防火墙设置中只需要放开指定端口(21 + PASV端口范围)的TCP协议即可。
FTP工作模式:
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了一个1024+的随机端口,你过来连接我”。于是服务器从20端口向客户端的1024+随机端口发送连接请求,建立一条数据链路来传送数据。
PASV(Passive被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了一个1024+的随机端口,你过来连接我”。于是客户端向服务器的指定端口发送连接请求,建立一条数据链路来传送数据。
PORT方式,服务器会主动连接客户端的指定端口,那么如果客户端通过代理服务器链接到internet上的网络的话,服务器端可能会连接不到客户端本机指定的端口,或者被客户端、代理服务器防火墙阻塞了连接,导致连接失败。PASV方式,服务器端防火墙除了要放开21端口外,还要放开PASV配置指定的端口范围。


SFTP(Secure File Transfer Protocol):安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP与 FTP有着几乎一样的语法和功能。SFTP为SSH的一部份,是一种传输文件到服务器的安全方式。在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。


SCP(Secure Copy):SCP就是Secure copy,是用来进行远程文件复制的,并且整个复制过程是加密的。数据传输使用ssh,并且和使用和ssh相同的认证方式,提供相同的安全保证。


比较:
FTP 基于TCP来传输文件,明文传输用户信息和数据。
SFTP 基于SSH来加密传输文件,可靠性高,可断点续传。
SCP 是基于SSH来加密拷贝文件,但要知道详细目录,不可断点续传。


二.安装sftp服务

1.创建sftp服务数据目录及相关测试用户

[root@myhost001 20220717]# mkdir -pv /data/sftp/                #sftp数据目录
[root@myhost001 20220717]# chown root:root -R /data/sftp/       #一定要是root用户,否则无法chroot
[root@myhost001 20220717]# chmod 755 -R /data/sftp/             #权限最低需要保证普通用户可以进入
[root@myhost001 20220717]# groupadd sftp                        #sftp服务组,sftp服务可以设置匹配组或单个用户来设置,如果是单个用户可以忽略
[root@myhost001 20220717]# useradd -d /data/sftp/user1 -m -g sftp -s /sbin/nologin user1   
[root@myhost001 20220717]# id user1
[root@myhost001 20220717]# echo "123456" |passwd --stdin user1  #添加密码。测试环境从简,生产不建议此密码,可以通过网页 https://suijimimashengcheng.51240.com/ 或mkpasswd命令生产(需要安装expect软件包)

2.修改sshd服务配置文件,以组的方式管理sftp用户权限


修改前配置


修改后:


配置解释:

Subsystem sftp internal-sftp     #使用sftp服务使用系统自带的internal-sftp
Match Group sftp                 #匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /data/sftp/%u    #用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand internal-sftp       #强制执行内部sftp,并忽略任何~/.ssh/rc文件中的命令
AllowTcpForwarding no            #不允许转发TCP协议,默认是yes,如果用户可以shell访问则建议为yes
X11Forwarding no                 #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。

标签:FTP,无群,端口,SFTP,人之生,sftp,root,客户端
来源: https://www.cnblogs.com/yachengmuCC/p/16487073.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有