目录
一 什么是shh服务器
ssh优点
作用
SSH的 软件
公钥首次连接原理
ssh远程登录
二 shh命令 远程连接
直接连接先输入ssh IP
连接指定用户
指定端口号
跳板登录
此功能马传斌继续研究
三远程登陆执行操纵命令
修改服务端配置文件
编辑 白名单,只能登录本机的mcb@用户
禁止用户登录
四 SSH服务的最佳实践
五 openSSH 服务器配置文件
ssh配置文件信息
存放ssh服务端的配置文件 /etc/ssh/sshd_config
编辑 六 使用密钥对免交互验证登录
1创建密钥
2传送到远程主
3登录验证
面交互验证
一 什么是ssh服务器
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速率。
SSH客户端<--------------网络---------------->SSH服务端
1 协议范例
- SSH(Secure Shell):SSH是一种加密网络协议,用于通过安全通道在不安全网络上进行远程访问和管理。它提供了加密的通信会话,包括远程登录和执行命令,以及传输文件等功能
- Telnet:固然不安全,但仍然被用于远程登录到服务器或设备,通常用于简单的文本交互
- RDP(Remote Desktop Protocol):主要用于Windows系统,允许用户通过图形界面远程访问另一台计算机。
- VNC(Virtual Network Computing):允许用户远程控制另一台计算机的图形界面。它是跨平台的远程桌面协议。
- X11:用于在UNIX和Linux系统上进行图形界面的远程访问。
- ICA(Independent Computing Architecture):由Citrix Systems开发,用于提供应用步伐和桌面假造化服务
2 ssh协议优点
数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以进步传输速率
- 加密通信:SSH协议通过加密技术,确保通信过程中的数据传输是安全的,防止数据被窃听或窜改
- 远程登录:用户可以使用SSH协议远程登录到其他计算机或服务器,以便进行命令行操纵、文件管理等任务
- 加密身份验证:SSH协议支持使用公钥和私钥对进行身份验证,这种方式比传统的基于密码的身份验证更加安全
- 端口转发:SSH协议支持端口转发,可以通过安全的通道在两个计算机之间建立安全的连接
- 远程执行命令:SSH允许用户在远程主机上执行命令,这对于自动化脚本和远程管理非常有用
- 文件传输:SSH协议还支持安全的文件传输,可以在客户端和服务器之间进行安全的文件传输和管理
作用
sshd 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
3 SSH的 软件
SSH 客户端: xshell putty secureCRT MobaXterm finalshell
SSH 服务端:openSSH (Centos 7 默认安装)
4 有关系的步伐
- OpenSSH:OpenSSH 是 SSH 协议的免费开源实现,包括服务器端和客户端步伐。它支持加密和身份验证功能,被广泛用于Linux和类Unix系统上
- PuTTY:PuTTY 是一个流行的免费的SSH和Telnet客户端步伐,可在Windows平台上使用。它提供了SSH连接所需的工具和功能
- WinSCP:WinSCP 是一个免费的SFTP、SCP和FTP客户端步伐,用于在Windows平台上与远程计算机进行安全文件传输。它支持SSH协议,提供了用户友爱的界面
- SecureCRT:SecureCRT 是一个商业化的SSH客户端步伐,提供了强大的功能和定制选项,适用于Windows、Mac和Linux操纵系统
5 公钥传输原理
①客户端发起连接请求
②服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
③客户端生成密钥对
④客户端用自己的公钥或会话ID,计算出一个值Res,并用服务端的公钥加密
⑤客户端发送加密后的值到服务端,服务端用密钥解密,得到Res
⑥服务端用解密后的Res大概是会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
⑦终极:双方各持有三个密钥,分别为自己的一对公钥、私钥、以及对方的公钥,之后的全部的通讯都会被加密。
6 加密通讯原理
详细阐释:
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保存私钥,假如要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
7 ssh远程登录文件
每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。
8 如何确定此台机器就是我要连的机器?
- ssh [选项] mcb@192.168.11.9 #指定登任命户、目标主机地点作为参数
- ssh -p 20 mcb@192.168.11.9 #-p为指定端口
二 ssh命令 远程连接
①直接连接:先输入ssh IP
第一次连接服务端机器会询问是否要验证公钥,同意就会自动获取服务端公钥
验证是否连接精确服务机,可查看服务端的公钥
②连接指定用户
① ssh 用户名@IP地点
②ssh -l 用户名 IP地点
③指定端口号
在 /etc/ssh/sshd_config文件修改端口号
sshd服务的默认端口号是 22,假如不是此端口,需要 -p 来指定端口
[root@localhost ~]#vim /etc/ssh/sshd_config
[root@localhost ~]#systemctl restart sshd
在另一台假造机验证,使用客户机就需要指定端口号
跳板登录
提供了一种安全的方式管理和连接位于内部网络中的主机,同时限定了对内部网络的直接访问
- #在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
- [root@localhost .ssh]#iptables -A INPUT -s 192.168.11.5-j REJECT
- [root@localhost ~]#ssh -t 192.168.11.9 ssh 192.168.11.5
复制代码 此功能马传斌继续研究
三 远程登录直接执行操纵命令
#ssh 192.168.11.9 ifconfig
白名单:默认拒绝全部,只有白名单上允许的人才可以访问
黑名单:默认允许全部,只有黑名单上的用户让你不允许访问
留意 实验关闭防火墙 防护 黑白不能同时启用
修改服务端配置文件
root@localhost ~]#vim /etc/ssh/sshd_config
① 白名单,只能登录本机的mcb@用户
别的用户无法登录
③禁止用户登录 ,此实验要反复去做
- 借鉴他人
- [root@localhost ssh]#vim /etc/ssh/sshd_config
- #开启38 行 并改为 no,默认注释并写的yes
- 38 PermitRootLogin no
- #注意虽然阻止了root 但是普通用户可以使用su
- [root@localhost1 ~]#ssh zhangsan@192.168.91.100 -p 9527
- zhangsan@192.168.91.100'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
复制代码 # vim /etc/ssh/sshd_config
38 #PermitRootLogin yes 把yes该为no
Xshell就登陆不上
修改pam认证模块,只允许wheel组用户可以使用 su
[root@localhost ~]# vim /etc/pam.d/su
6 #auth required pam_wheel.so use_uid
默认是解释掉,要让6行开启
操纵如下:
[root@localhost ~]# vim /etc/pam.d/su
太遗憾了,过程忘了
四 SSH服务的最佳实践
①建议使用非默认端口22
- vim /etc/ssh/sshd_config
- #找到以下两个配置项:
- port 123 #设置特定的ssh服务端口号
复制代码 ②禁止使用 protocol version 1
因为SSH协议版本一存在多个已知的安全漏洞,其使用的加密算法和密钥交换机制相对较弱,易受到中心人攻击等威胁
SSH 协议版本二已经成为现代标准,并且得到广泛支持,绝大多数 SSH 客户端和服务器都默认使用协议版本二,而且许多安全性工具也不再支持协议版本一
③限定可登任命户(白名单)
④设定空闲会话超时时长
- vim /etc/ssh/sshd_config #找到以下两个配置项:
- ClientAliveInterval 0
- ClientAliveCountMax 3
复制代码 ClientAliveInterval:表现服务器向客户端发送空闲会话确认消息的时间隔断,单位为秒。默认值为0,表现不发送确认消息。将其设置为一个正整数,表现每隔多长时间向客户端发送一次确认消息。
ClientAliveCountMax:表现服务器向客户端发送确认消息后,客户端没有相应的最大次数。默认值为3,表现假如服务器连续发送3次确认消息后,客户端仍未相应,则以为客户端已经断开连接。将其设置为一个正整数,表现服务器最多发送多少次确认消息后,以为客户端已经断开连接
⑤利用防火墙设置SSH访问策略
- #利用防火墙禁止特定IP地址:172.16.12.10访问
- iptables -A INPUT -s 172.16.12.10 -j REJECT
复制代码 ⑥仅监听特定的IP地点、公网、内网
- vim /etc/ssh/sshd_config #找到以下三个配置项:
- ClientAliveInterval 300
- ClientAliveCountMax 2
- ListenAddress 192.168.11.10
复制代码 ClientAliveInterval:表现SSH服务器将向客户端发送空闲会话查抄的时间隔断(以秒为单位),默认值为0,表现禁用此功能
ClientAliveCountMax:表现SSH服务器将向客户端发送空闲会话查抄的最大次数,假如达到此次数后仍未收到客户端的相应,则会话将被终止,默认值为3
ListenAddress:监听特定的IP地点的SSH连接
⑦基于口令认证时,使用强密码策略
- 比如:tr -cd [a-zA-Z0-9] < /dev/random | head -c 12 | xargs
- #设定12位的随机密码
⑧使用基于密钥的认知
⑨禁止使用空密码
- vim /etc/ssh/sshd_config
- #找到以下一个配置项:
- PermitEmptyPasswords no #禁止使用空密码
复制代码 ⑩禁止root用户直接登录
11 限定ssh的访问频率和并发在线数
- vim /etc/ssh/sshd_config #找到以下一个配置项:
- MaxStartups 10 #最多允许10个并发连接,如果超过这个数量,会拒绝新的连接
复制代码 使用PAM模块:通过Pluggable Authentication Modules (PAM) 可以实现更复杂的控制,
例如限定用户的并发登录数
使用防火墙:你也可以使用防火墙软件如iptables来限定从特定IP地点发起的并发SSH连接数
12 经常分析日记分离
独立sshd服务日记文件:默认sshd服务日记在/var/log/secure下,可通过rsyslog步伐将sshd服务日记文件独立出来放到特定的文件夹中,方便查看和管理。
(具体操纵请查看《Linux文件系统与日记分析》博客)
使用日记分析工具:可以使用工具如grep、awk、sed等来分析SSH日记文件。这些工具可以资助搜刮特定的关键字、过滤信息、提取有用的数据等
设置日记轮转:为了避免日记文件过大,可以配置日记轮转。通过日记轮转,旧的日记文件会被重定名并压缩,同时创建新的日记文件。可以使用logrotate工具来实现日记轮转,并在其配置文件中指定SSH日记文件的处理方式(具体操纵请查看《Linux文件系统与日记分析》博客)
五 openSSH 服务器配置文件
openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操纵系统
执行“systemctl start sshd”命令即可启动sshd服务,默认端口使用的22端口
服务名称:sshd
服务端主步伐:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
1 ssh配置文件信息
在linux中实现ssh,是通过opsnSSH的sshd服务提供的
2 存放ssh服务端的配置文件 /etc/ssh/sshd_config
[root@localhost ~]#vim /etc/ssh/sshd_config
六 密钥对免交互 验证登录
有密码又无需输入密码
1 创建密钥,生成rsa算法密钥
2 传送到远程主机
3 登录验证
七 免交互登录
客户端先输入 ssh-agent bash 将这个命令交给 bash 去管理
再输入 ssh-add 是将用户的私钥添加到运行中的 ssh-agent 中,如许在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用
- [root@localhost .ssh]# ssh-agent bash #把sh-agent交给进程管理
- [root@localhost .ssh]# ssh-add #把密码交给sh-agent
-
- Enter passphrase for /root/.ssh/id_rsa: #输入密钥文件密码
- Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
- [root@localhost .ssh]# ssh 192.168.11.6 #无需密码即可登录,重启后失效
- Last login: Sun Jan 21 14:06:03 2024 from 192.168.11.9
- 注:机器重启就会失效
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |