Linux系统——远程访问及控制

目录

一、OpenSSH服务器

1.SSH(Secure Shell)协议

2.OpenSSH

2.SSH原理

2.1公钥传输原理

2.2加密原理

(1)对称加密

(2)非对称加密

2.3远程登录

2.3.1延伸

2.3.2登录用户

3.SSH格式及选项

3.1延伸

 3.2pssh——批量远程操作

4.黑/白名单

4.1白名单

4.2黑名单

 5.ssh服务的最佳实践

6.基于密钥验证

6.1创建密钥 

6.2传送到远程主机

6.3登录验证


 

常见的远程连接工具:Xshell finalshell putty seruct MobaXterm(putty seruct不太建议使用)

生产环境更多使用的是Xshell和MobaXterm

远程管理协议

Telnet  :明文传输协议

Linux系统——远程访问及控制_第1张图片

SSH    :密文传输,具有加密、压缩功能

SSH相较于Telnet的优点:

  • 数据传输是加密的,可以防止信息泄露
  • 数据传输是压缩的,可以提高传输速度

一、OpenSSH服务器

1.SSH(Secure Shell)协议

  • 是一种安全通道协议
  • 对通信数据进行了加密处理,用于远程管理
  • 对数据进行压缩

2.OpenSSH

  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh_config 

Linux系统——远程访问及控制_第2张图片

在Linux系统中,ssh是默认开启的

Linux系统——远程访问及控制_第3张图片

Linux系统——远程访问及控制_第4张图片

2.SSH原理

2.1公钥传输原理

Linux系统——远程访问及控制_第5张图片

  • 客户端发起链接请求
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  • 客户端生成密钥对
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

首次连接时的公钥交换

  1. 客户端发起连接请求,服务端会生成一个会话id,以及将会话id和自己的公钥交给客户端
  2. 客户端拿到公钥和会话id以后,会用自己的公钥和对面给的会话id做运算得到一个结果,然后用服务器的公钥加密,传给服务端
  3. 服务端收到这个结果,用自己的私钥去解密结果;结果=会话id+客户端的公钥;结果-会话id=客户端的公钥。最终服务端会得到客户端的公钥 

2.2加密原理

Linux系统——远程访问及控制_第6张图片

(1)对称加密

1、概念 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

2、常用算法 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

3、特点 1、加密方和解密方使用同一个密钥; 2、加密解密的速度比较快,适合数据比较长时的使用; 3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

4、优缺点 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

(2)非对称加密

1、概念 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

2、常用算法

  • RSA(RSA algorithm):目前使用最广泛的算法
  • DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
  • ECC(Elliptic curve cryptography,椭圆曲线加密算法)
  • ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

3、原理 首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

4、优缺点 相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。

此本次实验中,我们用非对称加密算法ECDSA进行加密,为了方便用root用户,也可给其他普通用户配置

2.3远程登录

Linux系统——远程访问及控制_第7张图片

会生成一个known_hosts(公钥的集合)

可以看到是加密后的信息(可以通过确定要连接的机器和准备连接该服务端的提示信息)

假设可以通过另一台服务器伪装IP地址一样的服务端,用伪装后的服务端连接,会出现如下报错

Linux系统——远程访问及控制_第8张图片

免验证登录  可以修改客户端的配置文件(有安全隐患)

Linux系统——远程访问及控制_第9张图片

2.3.1延伸

假如公司内要更新迭代,更换新采购的新机器要去替代旧机器,可是旧机器无法打开

解决办法是删除固定IP的内容信息

2.3.2登录用户

如果你作为zhangsan用户去连接对面服务端的话,那么对面也要有个zhangsan用户

Linux系统——远程访问及控制_第10张图片

3.SSH格式及选项

ssh  用户@IP地址

选项 含义
-l 指定用户名
-p 指定端口号
-t 跳板

ssh  -l  用户  

ssh  -p  端口号

Linux系统——远程访问及控制_第11张图片

ssh 可以直接远程使用命令

Linux系统——远程访问及控制_第12张图片

3.1延伸

模拟拒绝访问,如果想要连接的虚拟机拒绝访问(做了防火墙策略)那么可以做一个跳板,连接想要连接的虚拟机

此时用客户端连接想要连接的服务端就发现连接不上了;此时我们可以做一个跳板对想连接的服务端进行连接

禁止root用户连接

Linux系统——远程访问及控制_第13张图片

可以切换到其他用户再连接root用户

Linux系统——远程访问及控制_第14张图片

不允许切换root用户可以将wheel组注释解掉

Linux系统——远程访问及控制_第15张图片

 3.2pssh——批量远程操作

pssh需要安装

-H指定对哪些机器进行操作;-i 指定做哪些操作 

4.黑/白名单

白名单:默认拒绝所有 只有允许的人才可以访问

黑名单:默认允许所有 只有名单上的人不允许访问 

4.1白名单

Linux系统——远程访问及控制_第16张图片

只允许91.100登录91.101的zhangsan 所有机器可以登录101的lisi

Linux系统——远程访问及控制_第17张图片

4.2黑名单

Linux系统——远程访问及控制_第18张图片

 5.ssh服务的最佳实践

  • 建议使用非默认端口 22
  • 禁止使用protocol version 1
  • 限制可登录用户 白名单
  • 设定空闲会话超时时长
  • 利用防火墙设置ssh访问策略
  • 仅监听特定的IP地址 公网 内网
  • 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
  • 使用基于密钥的认证
  • 禁止使用空密码
  • 禁止root用户直接登录
  • 限制ssh的访问频度和并发在线数
  • 经常分析日志 分离

6.基于密钥验证

使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让 ssh 服务基于密钥进行安全验证 (可无需密码验证)。

6.1创建密钥 

Linux系统——远程访问及控制_第19张图片

也可指定算法类型:输入ssh-keygen -t ed25519(ecdsa) 

6.2传送到远程主机

Linux系统——远程访问及控制_第20张图片

查看远程服务端的信息

Linux系统——远程访问及控制_第21张图片

远程服务端收到一个密钥文件

6.3登录验证

不验证密码,使用免交互登录的话,输入ssh-agent  bash将ssh-agent交给bash管理

再输入ssh-add将用户私钥添加到运行中的ssh-agent中,后续的远程连接ssh,就不需要每次都输入密码并验证。一旦私钥被添加到ssh-agent中,它会暂时保存解密后的私钥方便后续使用

你可能感兴趣的:(linux,服务器,运维)