金鱼哥戏说RHCSA认证:十三、配置和保护SSH服务

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 第十三章 配置和保护SSH服务
🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质: CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥

🎈支持我:可点赞👍、可收藏⭐️、可留言📝


本章节介绍配置和保护SSH服务。作为基础中必须要了解的服务,无论从原理上还是操作上,都需要好好掌握。工作中基本都是使用SSH来进行远程管理。

📜13.1 ssh 服务介绍

ssh: secure shell, protocol, 22/tcp, 安全的远程登录,实现加密通信,代替传统的 telnet 协议
具体的软件实现:

  • OpenSSH:ssh协议的开源实现,rhel、centos 默认安装
  • dropbear:另一个ssh协议的开源项目的实现

SSH 协议版本:

  • v1:基于CRC-32做MAC,不安全;man-in-middle
  • v2:双方主机协议选择安全的MAC方式,基于DH算法做密钥交换,基于RSA或DSA实现身份认证

📑13.1.1 公钥交换原理

在这里插入图片描述

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

📑13.1.2 ssh加密通讯原理

在这里插入图片描述


📜13.2 openssh 服务

OpenSSH是SSH (Secure SHell) 协议的免费开源实现,一般在各种Linux版本中会默认安装,基于C/S结构

Openssh软件相关包:

  • openssh
  • openssh-clients
  • openssh-server

服务器:/usr/sbin/sshd
Unit 文件:/usr/lib/systemd/system/sshd.service

客户端:

  • Linux Client: ssh, scp, sftp,slogin
  • Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient

📑13.2.1 客户端 ssh 命令

ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问

当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的
~/.ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

格式:

ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]

常见选项

-p port:远程服务器监听的端口
-b 指定连接的源IP
-v 调试模式
-C 压缩方式
-X 支持x11转发
-t 强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh
remoteserver3
-o option 如:-o StrictHostKeyChecking=no
-i <file> 指定私钥文件路径,实现基于key验证,默认使用文件: ~/.ssh/id_dsa,
~/.ssh/id_ecdsa, ~/.ssh/id_ed25519,~/.ssh/id_rsa等

范例:远程执行命令

[root@servera .ssh]# ssh 192.168.137.129  ls -l
root@192.168.137.129's password: 
total 4
-rw-------. 1 root root 1624 Apr  2 13:51 anaconda-ks.cfg

📑13.2.2 ssh 登录验证

🔖ssh登录验证方式介绍

ssh服务登录的常用验证方式

  • 用户/口令
  • 基于密钥
基于用户和口令登录验证

在这里插入图片描述

  1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户
  2. 用户会根据服务器发来的公钥对密码进行加密
  3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
基于密钥的登录方式

在这里插入图片描述

  1. 首先在客户端生成一对密钥(ssh-keygen)
  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端
  3. 当客户端再次发送一个连接请求,包括ip、用户名
  4. 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生
    成一个字符串
  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

🔖实现基于密钥的登录方式

在客户端生成密钥对

ssh-keygen -t rsa [-P 'password'] [-f “~/.ssh/id_rsa"]

把公钥文件传输至远程服务器对应用户的家目录

ssh-copy-id [-i [identity_file]] [user@]host

重设私钥口令:

ssh-keygen -p

📑13.2.3 ssh服务器配置

服务器端:sshd
服务器端的配置文件: /etc/ssh/sshd_config
服务器端的配置文件帮助:man 5 sshd_config
常用参数:

Port   #更改端口先关selinux,setenforce 0
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes         #默认ubuntu不允许root远程ssh登录
StrictModes yes             #检查.ssh/文件的所有者,权限等
MaxAuthTries 6 
MaxSessions 10                #同一个连接最大会话
PubkeyAuthentication yes     #基于key验证
PermitEmptyPasswords no     #空密码连接
PasswordAuthentication yes     #基于用户名和密码连接
GatewayPorts no
ClientAliveInterval 10         #单位:秒
ClientAliveCountMax 3         #默认3
UseDNS yes                     #提高速度可改为no
GSSAPIAuthentication yes     #提高速度可改为no
MaxStartups                 #未认证连接最大值,默认值10
Banner /path/file

#以下可以限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups

范例:设置ssh 空闲60s 自动注销

Vim /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 0
Service sshd restart
#注意:新开一个连接才有效

范例:解决ssh登录缓慢的问题

vim /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
systemctl restart sshd

范例:启用/禁用root 远程ssh登录

#修改sshd服务配置文件
vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password 注释掉此行
PermitRootLogin yes/no 修改为下面形式(yes启用/no禁用)
systemctl restart sshd

ssh服务的最佳实践

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

💡总结

RHCSA认证作为基础认证,涉及的基础内容需要大家好好进行学习并巩固。有良好的基础才能更上一层楼。
好好加油,可以噶🤪。

以上就是【金鱼哥】对 第十三章 配置和保护SSH服务 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾 红帽认证专栏系列:
RHCSA专栏: 戏说 RHCSA 认证
RHCE专栏: 戏说 RHCE 认证
此文章收录在RHCA专栏: RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

目录
相关文章
|
28天前
|
安全 Linux Shell
ssh 远程控制服务
SSH(Secure Shell)是一种用于远程登录的安全协议,相比FTP和Telnet,它提供了更高的安全性,避免了明文传输带来的风险。要使用SSH远程管理Linux系统,需要配置sshd服务。本文介绍了如何克隆Linux服务器、修改网络配置,并通过SSH连接两台服务器,最后在目标服务器上创建一个日志文件。
33 4
|
4月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
83 0
Github代码仓库SSH配置流程
|
4月前
|
网络安全 开发工具 git
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
71 1
|
4月前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
824 0
|
4月前
|
网络安全 Windows
windows安装ssh服务
windows安装ssh服务
40 0
|
4月前
|
Ubuntu Shell 网络安全
【Ubuntu】配置SSH
【Ubuntu】配置SSH
102 0
|
4月前
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
4月前
|
安全 Linux Shell
SSH 命令完整实用指南 | Linux SSH 服务
【8月更文挑战第20天】
490 0
|
4月前
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
241 0