ssh远程登录协议 搞定远程访问控制

远程管理linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

一、SSH远程管理

1.什么是SSH服务器?

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

ssh协议是基于C/S机构(基于客户端-服务器模型设计),主要目的是为用户提供数据加密、身份验证以及消息完整性检查等功能,确保用户能够在网络上安全地访问另一台计算机。

什么是c/s架构?有客户端和服务端

ssh远程登录协议 搞定远程访问控制_第1张图片

2.ssh优点

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

ssh软件包     ssh协议      端口(默认Tcp的22号端口)

openssh  centos7  上自带的软件 帮助我们实现远程连接

ssh:可以远程连接   scp sftp rsync:远程传输文件

sshd 服务默认使用的是TCP的22端口sshd服务的默认配置文件是/etc/ssh/sshd_config

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

ssh远程登录协议 搞定远程访问控制_第2张图片

3.SSH客户端( Client)与服务端客户端:

客户端:

  • Linux 客户端: ssh, scp, sftp,slogin
  • Windows 客户端:xshell, MobaXterm,putty, securecrt, ssh secure shell client

服务端:

  • SSH服务端:OpenSSH (开源)
  • ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务(文件传输功能)

作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输

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

openssh  centos7  上自带的软件 帮助我们实现远程连接

OpenSSH 常用配置文件有两个/etc/ssh/ssh_config 和/etc/sshd_config。
ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现

4.ssh原理

(1)公钥传输原理   

ssh远程登录协议 搞定远程访问控制_第3张图片

首次连接时公钥交换:

  • 客户端发起链接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

最后双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密。公钥可任意分发但不能用于解密,私钥只有所有者持有且可用于解密由相应公钥加密的数据,从而保证了密钥交换的安全性。

(2)ssh加密通讯原理

ssh远程登录协议 搞定远程访问控制_第4张图片

对称加密

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

非对称加密

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

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

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

5.ssh内容介绍

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

服务名称叫做sshd,软件包名称叫openssh

ssh远程登录协议 搞定远程访问控制_第5张图片

ssh远程登录协议 搞定远程访问控制_第6张图片

ssh远程登录协议 搞定远程访问控制_第7张图片

ssh远程登录协议 搞定远程访问控制_第8张图片

第一次和服务端机器连接时,会询问是否要验证公钥,同意或后就会自动获取服务端的公钥

1.登录:
ssh远程登录协议 搞定远程访问控制_第9张图片
第一次登录

ssh远程登录协议 搞定远程访问控制_第10张图片

ssh远程登录协议 搞定远程访问控制_第11张图片

小技巧:

旧的机器挂了,新的机器mac地址变了,密钥变了

将之前的密钥文件删除,在重新生成一个,就对应了。

多次登录ssh远程登录协议 搞定远程访问控制_第12张图片

登录:

ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :指定登录名称、登录用户名
-p:指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
-t

2.连接指定用户

连接指定用户    ssh  -l   用户名    ip地址

ssh  -l root 192.168.246.8

ssh远程登录协议 搞定远程访问控制_第13张图片

ssh远程登录协议 搞定远程访问控制_第14张图片

3.直接跟上命令远程操作 

直接跟上命令远程操作       格式: ssh   ip地址    想使用的命令

ssh  192.168.246.8 命令

ssh远程登录协议 搞定远程访问控制_第15张图片

我们登录时,怎么确认是不是我需要连接的服务器?

先连接自己得出的结果,对比一下,连接对面的结果,是否一致,一致的话,就是我们要连接的服务器

ssh远程登录协议 搞定远程访问控制_第16张图片

192.168.91.101先连接下自己,对比下结果是否一样,一致的话,就是我们要连接的服务器

ssh远程登录协议 搞定远程访问控制_第17张图片

4.指定端口号

格式:  ssh    ip地址     -p    端口号

sshd服务的默认端口号是 22,如果不是此端口,需要 -p 来指定端口

#修改默认端口
[root@localhost ssh]#vim  /etc/ssh/sshd_config
#17 行修改自己默认的端口
17 Port 9527

首先进入服务端192.168.246.8

ssh远程登录协议 搞定远程访问控制_第18张图片

再使用客户机(192.168.246.7)去连接就需要指定端口号了

ssh远程登录协议 搞定远程访问控制_第19张图片

ssh远程登录协议 搞定远程访问控制_第20张图片

5.跳板机 
[root@localhost .ssh]#iptables -A INPUT -s 192.168.91.102 -j REJECT 
#模拟防火墙
[root@localhost ~]# ssh -t 192.168.91.101  ssh -t 192.168.91.102  ssh 192.168.91.103
#方便跳板连接
ssh远程登录协议 搞定远程访问控制_第21张图片

ssh远程登录协议 搞定远程访问控制_第22张图片

ssh远程登录协议 搞定远程访问控制_第23张图片
6.禁止root用户登录
[root@localhost ssh]#vim  /etc/ssh/sshd_config
#开启38 行 并改为 no,默认注释并写的yes
38 PermitRootLogin no
#注意虽然阻止了root 但是普通用户可以使用su
[root@localhost1 ~]#ssh [email protected] -p 9527
[email protected]'s password: 
Last login: Fri Aug 27 16:50:35 2021
[zhangsan@localhost2 ~]$ 
[zhangsan@localhost2 ~]$ su root
密码:
[root@localhost2 zhangsan]#

修改 pam认证模块
[root@localhost ssh]#vim /etc/pam.d/su
#开启第6行,默认注释
6 auth            required        pam_wheel.so use_uid
7.白名单黑名单列表

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

黑名单:默认允许所有,只有黑名单上的用户才不允许访问

(白名单优先级高,但一般不会同时使用白名单和黑名单,白名单使用会多一点)

白名单:不设置白名单所有用户都可以登录访问,设置了白名单后,只有白名单内的用户登录,其余任何用户都不可以登录

ssh远程登录协议 搞定远程访问控制_第24张图片

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

我们进入服务端(192.168.246.8)进行编辑

ssh远程登录协议 搞定远程访问控制_第25张图片

ssh远程登录协议 搞定远程访问控制_第26张图片

验证:进入192.168.246.9客户机进行验证

ssh远程登录协议 搞定远程访问控制_第27张图片

进入客户机192.168.246.7进行验证:

ssh远程登录协议 搞定远程访问控制_第28张图片

黑名单:默认允许所有,只有黑名单上的用户才不允许访问

进入服务端192.168.246.8进行配置:

ssh远程登录协议 搞定远程访问控制_第29张图片

ssh远程登录协议 搞定远程访问控制_第30张图片

进入客户机192.168.246.7验证:

ssh远程登录协议 搞定远程访问控制_第31张图片

进入客户机192.168.246.9验证:

ssh远程登录协议 搞定远程访问控制_第32张图片

二、ssh服务的最佳实践

建议不使用默认端口 22

禁止使用protocol version 1

限制可登录用户 白名单

设定空闲会话超时时长

利用防火墙设置ssh访问策略

仅监听特定的IP地址 公网 内网

基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

使用基于密钥的认证

禁止使用空密码

禁止root用户直接登录

限制ssh的访问频度和并发在线数

经常分析日志 分离

如果有一天登录ssh变得非常非常慢,请禁用反向解析

三、使用密钥对免交互验证登录

免密连接原理 

第一步:手动添加客户端的公钥到服务端

第二步:服务端收到客户端的公钥后使用客户端公钥加密一串随机字符串发送给客户端

第三步:客户端收到服务端发送的加密的随机字符串使用自己的私钥解密返回给服务端进行验证

第四步:服务端验证客户端发送来的随机字符串一致则同意建立连接

在客户端(192.168.246.7)生成秘钥文件

ssh远程登录协议 搞定远程访问控制_第33张图片

ssh远程登录协议 搞定远程访问控制_第34张图片

将秘钥发送给服务器

ssh远程登录协议 搞定远程访问控制_第35张图片

验证免密登录

ssh远程登录协议 搞定远程访问控制_第36张图片

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