远程访问及控制

1 理论

1.1 ssh远程管理

1.1.1什么是ssh

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。

注:shell的意思是外壳,是操作系统的外壳,是用户和操作系统之间的接口程序。shell是一种命令语言,也是一种程序设计语言,用户可以通过shell命令来控制和操作操作系统。shell有图形化界面和命令界面两种形式。

1.1.2 为什么需要ssh

传统的互联网通信使用明文传输数据,内容一旦被截获就会完全暴露,存在很多安全隐患。SSH协议通过对网络数据进行加密和验证,建立SSH客户端和SSH服务器之间的安全隧道,在不安全的网络环境中为网络服务提供了安全的传输通道。

SSH最常用的场景是远程登录和文件传输。在SSH协议出现之前,Telnet广泛应用于远程登录场景,为远程管理网络设备提供了极大便利,而FTP作为常用的文件传输协议,兼具操作简单和传输效率高的优点,但它们都存在相同的问题,即明文传输数据带来的安全隐患。SSH采用加密传输数据、提升认证强度等手段,克服了Telnet和FTP应用中的安全性问题,实现了安全的远程登录和文件传输业务。

1.1.3 ssh是如何工作的

SSH由服务器和客户端组成,为建立安全的SSH通道,双方需要先建立TCP连接,然后协商使用的版本号和各类算法,并生成相同的会话密钥用于后续的对称加密。在完成用户认证后,双方即可建立会话进行数据交互。SSH的工作流程包括如下几个阶段。

SSH工作流程

①连接建立

SSH依赖端口进行通信。在未建立SSH连接时,SSH服务器会在指定端口侦听连接请求,SSH客户端向SSH服务器该指定端口发起连接请求后,双方建立一个TCP连接,后续会通过该端口通信。

默认情况下,SSH服务器使用端口号22。当SSH应用于NETCONF时,可以指定默认端口号是22或者830。SSH使用的端口号可以被更改为设备其他可用端口,更改后当前所有的连接都会断开,SSH服务器开始侦听新的端口。由于SSH默认端口号22为知名端口,在进行关键安全传输时,建议修改SSH端口号。

②版本协商

SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号,过程如下:

1. SSH服务器通过建立好的连接向SSH客户端发送支持的SSH版本信息。

2. SSH客户端收到版本信息后,根据自身支持的SSH版本决定使用的版本号,并将决定使用的版本号发送给SSH服务器。

3. SSH服务器判断自己是否支持客户端决定使用的版本号,从而确定版本协商是否成功。

③算法协商

SSH工作过程中需要使用多种类型的算法,包括用于产生会话密钥的密钥交换算法、用于数据信息加密的对称加密算法、用于进行数字签名和认证的公钥算法和用于数据完整性保护的HMAC算法。SSH服务器和客户端对每种类型中具体算法的支持情况不同,因此双方需要协商确定每种类型中最终使用的算法,过程如下:

1. SSH服务器和客户端分别向对方发送自己支持的算法。

2. SSH服务器和客户端依次协商每种类型中具体使用的算法。在每类算法的协商过程中,SSH服务器和客户端都会匹配出双方均支持的算法作为最终使用的算法。每类算法均匹配成功后,算法协商完成。如果某类算法全部匹配失败,则该类型的算法协商失败,这会导致SSH服务器和客户端之间算法协商失败并断开连接。

④密钥交换

SSH服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。在该阶段也会完成客户端对服务器的身份认证,服务器先使用服务器私钥对消息进行签名,客户端再使用服务器公钥验证签名,从而完成客户端对服务器的身份认证。

由于SSH服务器和客户端需要持有相同的会话密钥用于后续的对称加密,为保证密钥交换的安全性,SSH使用一种安全的方式生成会话密钥,由SSH服务器和客户端共同生成会话密钥,利用数学理论巧妙地实现不直接传递密钥的密钥交换,无需通过不安全通道传送该密钥,具体过程如下图所示。

⑤用户认证

SSH客户端向SSH服务器发起认证请求,SSH服务器对SSH客户端进行认证。SSH支持以下几种认证方式:

  • 密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。
  • 密钥(publickey)认证:客户端通过用户名、公钥以及公钥算法等信息来与服务器进行认证。
  • password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
  • all认证:只要满足密码认证和密钥认证其中一种即可。

SSH用户认证最基本的两种方式是密码认证和密钥认证。密码认证的基本原理是SSH客户端使用对称密钥对密码进行加密,SSH服务器使用对称密钥解密后验证密码的合法性,这种认证方式比较简单,且每次登录都需要输入用户名和密码。而密钥认证可以实现安全性更高的免密登录,基本原理是SSH客户端使用客户端私钥对消息进行签名,服务器再使用客户端公钥验证签名,这是一种广泛使用且推荐的登录方式。

⑥会话请求

认证通过后,SSH客户端向服务器发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。服务器根据客户端请求进行回应。

⑦会话交互

会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互,双方发送的数据均使用会话密钥进行加解密。


2 操作

2.1 配置openssh客户端

2.1.1更改端口、连接

注:改端口号,要关闭内核安全机制,如果是其它服务,该端口号随便改

2.1.2 knows_hosts文件

known_hosts文件是SSH客户端中的一个重要配置文件。当首次与一个SSH服务器建立连接时,客户端会记录下该服务器返回的的公钥,并保存在known_hosts文件中,以后每次连接该服务器时,客户端都会验证该服务器返回的公钥是否与known_hosts文件中保存的一致。如果不一致,则会发出警告,提示可能存在DNS劫持、中间人攻击等安全问题。因此,known_hosts文件可以保证SSH连接的安全性,防止恶意攻击。

验证:

注:fingerprint 指纹密钥,把该指纹信息保存到本机

2.1.3用户登录控制

vim /etc/ssh/sshd_config
Port 22                                 #监听端口为22
ListenAddress 0.0.0.0                     #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP

LoginGraceTime 2m                         #登录验证时间为2分钟
PermitRootLogin no                         #禁止root用户登录
MaxAuthTries 6                             #最大重试次数为 6

PermitEmptyPasswords no                 #禁止空密码用户登录
UseDNS no                                 #禁用 DNS 反向解析,以提高服务器的响应速度


验证:

MaxAuthTries 6

注:如果输入的次数小于等于3次有效,超过就无效了,由于PAM认证

PermitRootLogin no 禁止root用户登录

创建普通用户,远程登录

AllowUser和DenyUser

Allowusers……    #仅允许某某用户登陆

Denyusers ……    #禁止某些用户登录,用法于AllowUsers 类似(注意不要同时使用)

StrictModes yes  严格模式

注:如果使用的是严格模式,密钥文件必须放置在你的用户家目录

Maxsessions 10

UseDNS no  禁用 DNS 反向解析,以提高服务器的响应速度

2.2 使用 SSH 客户端程序(scp、sftp、rz\sz)

2.2.1 如何跨主机拷贝文件、上传文件 

命令程序scp

上传

下载

命令sftp

下载

上传

2.2.2 查看修改端口号对远程数据拷贝是否有影响

注:-o 与-P等效的

2.2.3 ssh_config客户端的配置文件,修改后不用重启服务

把端口号还改回默认的,暂时不用了

2.2.4 rz、sz

注:安装lrzsz可以直接把文件拉到xshell界面,进行上传

下载

注:还是建议使用xftp

2.3 构建密钥对验证的 SSH 体系

把公钥文件拷贝到服务器的两种方式:

① id_rsa.pub把这个文件拷贝到101的主机

②使用ssh-copy-id命令

登录验证

2.4 wrapper访问控制

  • 39
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值