RHCE(十一)远程连接服务器——SSH

远程连接服务器

    • 什么是远程连接服务器
    • 远程连接服务器的功能
    • 常见的远程管理工具方式
    • SSH概念
    • SSH和telenet的区别
    • SSH算法
    • ssh两种验证级别:openssh openssl
    • 解读SSH服务配置信息
    • Linux系统上实现远程免密登录(基于密钥验证)
    • SSH的加密技术
    • ssh排查问题
    • 如何防止SSH登录入侵

什么是远程连接服务器

远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。

远程连接服务器的功能

  1. 分享主机运算能力
  2. 服务器类型有限度开放连接
  3. 工作站类型,只对内网开放

常见的远程管理工具方式

  • RDP(remote desktop protocal )协议,windows远程桌面管理(图形界面)

  • telnet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输) 23

  • ssh CLI界面下的远程管理,几乎所有操作系统都有(内容加密传输) 类unix系统下主要 22

  • RFB (remote frame buffer) 图形化远程管理协议 VNC (Virtual Network Computing)使用的协议。(在linux unix Macos 下的图形界面远程管理工具)

SSH概念

SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程 序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

SSH和telenet的区别

SSH

  1. SSH代表安全外壳(Secure Shell),它现在是通过互联网访问网络设备和服务器的唯一的主要协议。
  2. SSH默认情况下通过端口22运行;不过很容易更改这个端口。
  3. SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。
  4. 一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共网络上传输也变得很安全。
  5. SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。
  6. SSH主要用在所有流行的操作系统上,比如Unix、Solaris、Red-Hat Linux、CentOS和Ubuntu等。
  7. ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
  8. ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接,ssh sftp

TELNET

  1. Telnet是电信(Telecommunications)和网络(Networks)的联合缩写,这是一种在UNIX平台上最为人所熟知的网络协议。
  2. Telnet使用端口23,它是专门为局域网设计的。
  3. Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息。
  4. Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公共网络访问网络设备和服务器。

SSH算法

SSH为了确保信息的安全传输,从连接发起到完成各阶段的各个点SSH协议采用了许多不同类型的数据加密技术,包括可逆的对称加密,非对称加密以及不可逆的哈希散列。
RHCE(十一)远程连接服务器——SSH_第1张图片
ssl提供服务 ssh [email protected]
1)认证用户和服务器,确保数据发送到正确的客户机和服务器——握手协议
2)加密数据以防止数据中途被窃取—— ssl记录协议
3)维护数据的完整性,确保数据在传输过程中不被改变。

ssh两种验证级别:openssh openssl

从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

RHCE(十一)远程连接服务器——SSH_第2张图片
RHCE(十一)远程连接服务器——SSH_第3张图片
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒

两种验证方式的本质是:

  • ssh基于口令验证——服务端验证客户端(服务端生成公私钥,发送公钥给客户端) 客户端确认服务端是否是所要连接的服务端
  • ssh基于秘钥验证——客户端验证服务端(客户端生成公私钥,发送公钥给服务器) 服务端确认客户端是否正常主机,而不是第三方主机

解读SSH服务配置信息

ssh默认配置文件,常用的信息以及解读如下:

#Port 22                                          监听端口,默认监听22端口   【默认可修改】
#AddressFamily any                        IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0                   指明监控的地址,0.0.0.0表示本机的所有地址  【默认可修改】
#ListenAddress ::                            指明监听的IPV6的所有地址格式
#Protocol 2                                      使用SSH第二版本,redhat7默认第一版本已拒绝
PasswordAuthentication yes                    是否允许支持基于口令的认证
ChallengeResponseAuthentication no     是否允许任何的密码认证
# Kerberos options                                   是否支持kerberos(基于第三方的认证,如LDAP)认证的方式,默认为no 
#UseDNS yes              是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
.![在这里插入图片描述](https://img-blog.csdnimg.cn/20200418090848457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjI0MDMz,size_16,color_FFFFFF,t_70)Subsystem sftp /usr/libexec/openssh/sftp-server                    支持 SFTP ,如果注释掉,则不支持sftp连接
AllowUsers user1 user2                登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录 

Linux系统上实现远程免密登录(基于密钥验证)

1、 客户端创建密匙
RHCE(十一)远程连接服务器——SSH_第4张图片
2、 向服务端传递密匙
RHCE(十一)远程连接服务器——SSH_第5张图片
3、在服务端查看秘钥
在这里插入图片描述
4、 客户端验证——登录成功
在这里插入图片描述

SSH的加密技术

加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
SSH2支持RSA和DSA密钥
DSA:digital signature Algorithm 数字签名
RSA:既可以数字签名又可以加密

ssh排查问题

1.判断物理链路是否通 ping ——是否同一个网的 (ping 本身是icmp协议)
2.判断服务是否正常

 systemctl status sshd

3.Linux防火墙

  firewall-cmd --list-all

4.测试:

  ssh root@192.168.40.132 

如何防止SSH登录入侵

1.密钥登录,更改端口
2.监听本地内网IP(ListenAddress 192.168.25.*)

你可能感兴趣的:(RHCE)