day10:ssh服务-跳板机

一,ssh服务概述

ssh服务概述

ssh(Secure Shell)是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性,主要用于替代不安全的telnetrloginrsh等协议。ssh通常在22端口监听连接请求,可以通过防火墙及访问控制列表来增强其安全性。

sshd服务

sshd(Secure Shell Daemon)是ssh协议的服务端守护进程,负责响应客户端发起的连接请求。sshd服务通过密钥认证、密码认证、基于PAM(Pluggable Authentication Module)认证等方式进行用户身份验证。

sshd服务的主要功能
  1. 身份认证:支持多种认证方式,包括密码认证、密钥认证和双因素认证等。
  2. 数据加密:通过对称加密和非对称加密相结合的方式对传输的数据进行加密,确保通信过程的机密性。
  3. 完整性验证:通过哈希算法确保数据在传输过程中未被篡改。
  4. 隧道功能:支持TCP端口转发(隧道)功能,允许在不安全的网络上创建加密通道。
  5. 文件传输:支持使用scpsftp进行文件的安全传输。
sshd配置文件

sshd的配置文件通常位于 /etc/ssh/sshd_config。其中包含了服务端的监听端口、允许的认证方式、连接超时设置等配置选项。

二,加密算法

对称加密

对称加密是一种加密和解密都使用相同密钥的加密方法。加密和解密的过程是对称的,密钥的保密性至关重要,因为同一个密钥可以加密和解密数据。

特点
  • 加密速度快:适合对大量数据进行快速加密和解密。
  • 需要共享密钥:加密和解密使用相同的密钥,因此需要安全地共享密钥。
  • 应用场景:常用于需要快速处理大量数据的场景,如文件加密、数据库加密等。
常见算法
  • DES(Data Encryption Standard)
  • AES(Advanced Encryption Standard)
  • 3DES(Triple DES)
优缺点
  • 优点:速度快、效率高,适合处理大规模数据。
  • 缺点:密钥管理困难,密钥泄露会导致数据被轻易解密。

非对称加密

非对称加密使用一对密钥:公钥私钥。公钥用于加密,私钥用于解密。这意味着公钥可以公开,而私钥必须严格保密。加密和解密过程是不对称的,这种加密方式更安全,但加密速度较慢。

特点
  • 更高的安全性:即使公钥泄露,只有持有私钥的用户才能解密数据。
  • 不需要共享私钥:公钥可以公开分发,避免了密钥传输的风险。
  • 应用场景:主要用于身份验证、密钥交换以及需要高安全性的场景,如SSL/TLS、数字签名等。
常见算法
  • RSA(Rivest-Shamir-Adleman)
  • DSA(Digital Signature Algorithm)
  • ECC(Elliptic Curve Cryptography)
优缺点
  • 优点:密钥管理较为简单,公钥公开不会影响安全性,适用于安全性要求高的应用。
  • 缺点:计算速度相对较慢,不适合大数据量的加密。

彩虹表

彩虹表是一种利用预计算哈希链来高效破解哈希值的工具。其原理是通过将大量明文的哈希值计算成“哈希链”,并记录链的起点和终点,极大地减少存储量;在破解时,通过匹配目标哈希值和终点来找到对应的链,然后从起点顺次生成直到匹配目标哈希。彩虹表攻击速度极快,但仅适用于无盐哈希(即无额外随机数据干扰)。因此,为抵御彩虹表攻击,推荐在密码存储中加盐多轮哈希,以使预计算的彩虹表无法复用。

三,ssh服务搭建与连接

搭建ssh服务器

安装 SSH 服务:yum install -y openssh-server(因为openssh是开源免费的)

启动和检查服务

  • sudo systemctl start sshd # 启动SSH服务
  • sudo systemctl enable sshd # 设置开机启动
  • sudo systemctl status sshd # 检查服务状态

查看 SSH 端口(服务器):通常默认端口为22,可以在 /etc/ssh/sshd_config 文件中修改端口号。

使用工具连接

  • PuTTY(Windows):输入服务器 IP、端口和用户名后即可连接。
  • Xshell(Windows):类似 PuTTY,支持更多选项。
  • VS Code(Windows/Mac/Linux):可以通过扩展“Remote - SSH”插件来连接远程服务器,进行开发。

连接时需要提供 用户名IP 地址端口号(如非默认)及 密码密钥

通过linux命令连接

在 Linux 或windows, MacOS 中,可以直接在终端使用 ssh 命令连接远程服务器:

ssh 用户名@服务器IP地址 -p 端口号

如果使用密钥认证,可以指定私钥文件路径:

ssh -i /path/to/private_key 用户名@服务器IP地址

ssh配置文件的配置

SSH 配置文件可以细化连接的安全性、认证方法等。主要配置文件位于 /etc/ssh/sshd_config

#######################################
# 1. 基础设置
######################################## 设置 SSH 服务的监听端口,默认为 22。可根据需求更改以增强安全性。
Port 22# 仅在特定 IP 地址上监听 SSH 服务。可以设置为多个地址(多次使用)。
# 例如:只在 192.168.1.100 上监听 SSH。
# 意思是当服务器有多个ip的时候,客户机只能通过规定ip才可以登录服务器
ListenAddress 192.168.1.100
ListenAddress 192.168.2.100
# 如果想让 SSH 在所有接口上监听,可以使用
# ListenAddress 0.0.0.0# 禁用反向 DNS 查询,以提高连接速度。
UseDNS no#######################################
# 2. 登录与认证设置
######################################## 禁止 root 用户直接登录,建议出于安全考虑。
PermitRootLogin no# 限制登录尝试的最大次数,以防止暴力破解攻击。
MaxAuthTries 3# 禁用空密码登录,以确保账户安全。
PermitEmptyPasswords no# 允许的用户列表,仅允许 user1 和 user2 登录。
AllowUsers user1 user2# 禁止的用户列表,不允许 user3 和 user4 登录。
DenyUsers user3 user4# 允许的用户组,允许 sshusers 和 admins 组的成员登录。
AllowGroups sshusers admins# 禁止的用户组,不允许 group1 和 group2 组的成员登录。
DenyGroups group1 group2# 设置用户登录的最大等待时间(秒),超过此时间将自动断开连接。
LoginGraceTime 60#######################################
# 3. IP 地址限制
######################################## 仅允许特定 IP 地址范围的用户连接,提升安全性。
# 需要在防火墙中配置允许的规则。
# 例如:允许 192.168.1.0/24 网段访问
# sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# sudo iptables -A INPUT -p tcp --dport 22 -j DROP#######################################
# 4. 会话与连接控制
######################################## 保持客户端连接,防止因长时间未操作而断开连接。
TCPKeepAlive yes# 服务端向客户端发送保活消息的时间间隔(秒),未响应的最大次数。
ClientAliveInterval 120
ClientAliveCountMax 3# 限制每个会话允许的最大并发连接数。
MaxSessions 2#######################################
# 5. 网络转发与隧道配置
######################################## 启用或禁用 SSH 隧道功能,通常用于 VPN 连接等场景。
PermitTunnel yes# 是否允许 X11 窗口转发,关闭可提高安全性。
X11Forwarding no# 是否允许 TCP 转发,通常用于端口转发和代理服务,建议关闭以提升安全性。
AllowTcpForwarding no# 将用户限制在指定目录内,适用于 SFTP 和安全性需求较高的环境。
ChrootDirectory /home/sftp-jail#######################################
# 6. 加密与认证算法设置
######################################## 指定允许的加密算法,确保使用强加密方式,去除不安全的旧算法。
Ciphers aes256-ctr,aes192-ctr,aes128-ctr# 指定允许的消息认证码算法,用于数据完整性和防篡改。
MACs hmac-sha2-256,hmac-sha2-512# 指定密钥交换算法,移除不安全的算法如 diffie-hellman-group1-sha1。
KexAlgorithms diffie-hellman-group14-sha256,curve25519-sha256# 指定服务器的主机密钥文件路径,提升身份验证的安全性。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key#######################################
# 7. 日志记录与调试
######################################## 设置 SSH 日志级别,可以使用 INFO、VERBOSE、DEBUG 等等级。
LogLevel VERBOSE# 指定日志的目标(如 AUTH 或 AUTHPRIV),用于日志集中管理。
SyslogFacility AUTHPRIV

配置文件修改后,重启 sshd 服务使配置生效:

ssh服务扩展

scp命令:用linux之间的文件传输

scp 【选项】[源文件或目录] [目标地址]

  • -r:递归复制整个目录。
  • -P:指定远程主机的端口(注意是大写的 P)。
  • -i:指定用于身份验证的私钥文件。
  • -v:启用详细模式,输出详细的执行信息,便于调试。
  • 涉及的远程的地址:远程用户名@远程ip:文件路径

可以知道,上传和下载就是将远程目录放在[源文件或目录]还是 [目标地址]的位置而已

剔除用户:

使用w,可以查看当前系统正在登录的终端有哪些

pkill -kill -t 【w中的TTY行名字】

四,跳板机服务搭建

概述

跳板机通常用于管理访问权限,以确保只有经过授权的用户能够访问内部网络中的关键系统。通过使用跳板机,用户的所有访问流量都会通过这个中间服务器,从而实现更好的安全性和审计能力。

免密登录

免密登录:我每次都要从客户机登录服务器,输入密码,现在我不想输入密码了

步骤操作操作方
1. 生成 SSH 密钥对在客户机上运行: ssh-keygen客户机
按 Enter 接受默认设置。客户机
2. 将公钥复制到目标服务器使用以下命令(替换 username192.168.1.100):客户机
ssh-copy-id username@192.168.1.100客户机
输入目标服务器的密码。客户机
3. 测试免密登录尝试通过 SSH 登录到目标服务器:客户机
ssh username@192.168.1.100客户机
检查是否能够免密登录。客户机
4. 权限设置(如有需要)如果遇到问题,确保目标服务器上的权限设置正确:服务器
chmod 700 ~/.ssh服务器
chmod 600 ~/.ssh/authorized_keys服务器
~/表示用户的家目录:本质上命令 ssh-copy-id username@192.168.1.100是将客户机原来的~/.ssh/xx.pub文件内容追加到了服务器的 ~/.ssh/authorized_keys文件

存在的问题与解决方案

  • 安全性

    • 问题:如果跳板机被攻破,攻击者可能会访问内部网络。
    • 解决方案:确保跳板机定期更新,并启用强密码或密钥认证。
  • 访问控制

    • 问题:可能需要管理多个用户的访问权限。
    • 解决方案:使用基于角色的访问控制(RBAC)或结合 LDAP 进行用户管理。
  • 监控与审计

    • 问题:需要监控跳板机上的活动以检测异常行为。
    • 解决方案:使用日志管理工具,如 ELK Stack,来集中管理和分析日志。
  • 性能

    • 问题:跳板机可能成为瓶颈,影响访问速度。
    • 解决方案:根据需要进行负载均衡和优化。
  • 用户体验

    • 问题:用户需要多次登录,增加了复杂性。
    • 解决方案:可以考虑使用 ProxyJump 选项来简化连接流程。

五,综合实验

六,扩展内容

pwgen 是一个用于生成随机密码的命令行工具。它可以创建指定长度、强度和数量的随机密码,方便生成复杂且安全的密码。

pwgen [选项] [长度] [数量]

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo(更新一下)

  • 长度:生成的每个密码的字符长度(默认为 8)。
  • 数量:要生成的密码数量(默认为 1)。
  • 常用选项

    选项描述
    -s生成强密码,使用随机字符(默认为字母和数字)
    -y生成的密码包含特殊字符(如 !@#$%^&*()
    -B生成不包含模棱两可的字符(如 0O1l
    -1生成单个密码,而不是一组
    -h显示帮助信息
    -v显示版本信息
    -n仅生成数字密码
    -r生成可读性强的密码,避免复杂字符组合
    -c生成带有大写字母的密码
    -H使用shal hash给定的文件作为一个随机种子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫实战案例——抓取B站视频,不同清晰度抓取,实现音视频合并,超详细!(内含完整代码)

文章目录 1、任务目标2、网页分析3、代码编写 1、任务目标 目标网站:B站视频(https://www.bilibili.com/video/BV1se41117WP/?vd_sourcee8e376ccbc5aa4cfd88e6a7917adfd1a),用于本文测验 要求:抓取该网址下的视频&…

【制造业&电子产品】电脑电子元件检测系统源码&数据集全套:改进yolo11-TADDH

改进yolo11-SCConv等200全套创新点大全:电脑电子元件检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者…

Linux: network: wireshark IO图的一个问题

今天遇到一个问题,发现wireshark画的IO图,前几秒没有数据,但是根据Raw的pcap看,是有包的,这就迷惑了。 经同事提醒,这个IO在设置了多个画图filter的时候,可能导致开始前几秒没有输出。如下图 这…

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目,ssh连接远程服务器时报错:Host key verification failed. 解决: 原因是生成的sshkey不是用的jenkins用户,所以切换用户到:jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…

C# 串口通信教程

串口通信(Serial Communication)是一种用于设备之间数据传输的常见方法,通常用于与外部硬件设备(如传感器、机器人、微控制器)进行通信。在 C# 中,System.IO.Ports 命名空间提供了与串口设备交互的功能&…

mono源码交叉编译 linux arm arm64全过程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

GPT-4o 和 GPT-4 Turbo 模型之间的对比

GPT-4o 和 GPT-4 Turbo 之间的对比 备注 要弄 AI ,不同模型之间的对比就比较重要。 GPT-4o 是 GPT-4 Turbo 的升级版本,能够提供比 GPT-4 Turbo 更多的内容和信息,但成功相对来说更高一些。 第三方引用 在 2024 年 5 月 13 日&#xff0…

8.MySQL复合查询

目录 复合查询基本查询回顾多表查询 - 笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from中使用子查询 合并查询unionunion all 表的内连和外连内连接外连接左外连接右外连接 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远…

HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程

在本文中,我们将深入探讨如何使用 JavaScript 实现经典的俄罗斯方块游戏。俄罗斯方块是一款广为人知的益智游戏,通过操纵各种形状的方块,使其在游戏区域内排列整齐,以消除完整的行来获得分数。 效果图如下: 一、游戏界面与布局 我们首先使用 HTML 和 CSS 来创建游戏的界面…

java智能物流管理系统源码(springboot)

项目简介 智能物流管理系统实现了以下功能: 智能物流管理系统的主要使用者分为管理员,顾客,员工,店主。功能有个人中心,顾客管理,员工管理,店主管理,门店信息管理,门店…

查看Chrome安装路

谷歌Google浏览器查看安装路径,浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源:笔记云

idea安装visualVm插件

idea 安装visualVM插件用于分析java程序, 1.在插件市场安装visualvm launcher 2.安装成功后,重启idea,此时启动按钮旁边有这两个按钮 3.需要在这里配置插件的visualvm位置 4.配置完后,点击启动

已解决 django.db.utils.OperationalError: (1051, “Unknown table

报错信息: django.db.utils.OperationalError: (1051, "Unknown table bjybolg.tool_submission")python manage.py migrate --fake 命令用于告诉 Django 假装已经应用某个迁移,而不实际执行该迁移的操作。这通常在以下情况下非常有用&#x…

Layout 布局组件快速搭建

文章目录 设置主题样式变量封装公共布局组件封装 Logo 组件封装 Menu 菜单组件封装 Breadcrumb 面包屑组件封装 TabBar 标签栏组件封装 Main 内容区组件封装 Footer 底部组件封装 Theme 主题组件 经典布局水平布局响应式布局搭建 Layout 布局组件添加 Layout 路由配置启动项目 …

Linux: Shell编程入门

Shell 编程入门 1 ) Shell 概念 shell 是 在英语中 壳, 外壳的意思可以把它想象成嵌入在linux这样的操作系统里面的一个微型的编程语言不像C语言, C 或 Java 等编程语言那么完整,它可以帮我们完成很多自动化任务例如保存数据监测系统的负载等等,我们同样…

【ArcGIS Pro实操第8期】绘制WRF三层嵌套区域

【ArcGIS Pro实操第8期】绘制WRF三层嵌套区域 数据准备ArcGIS Pro绘制WRF三层嵌套区域Map-绘制三层嵌套区域更改ArcMap地图的默认显示方向指定数据框范围 Map绘制研究区Layout-布局出图 参考 本博客基于ArcGIS Pro绘制WRF三层嵌套区域,具体实现图形参考下图&#xf…

从零开始学五笔(七):折区字根

讲解格式: 先介绍按键的区位号、口诀内容、口诀说明然后列每个字根能组成什么汉字,难拆字将用中括号标出 ‍ N 键 区位号:51 口诀:已半巳满不出己,左框折尸心和羽 说明: 已半巳满不出己:指…

CentOS 8修改Linux配置文件指定属性的值

1.前提: 存在test空文件(test位于/etc/sysconfig/network-scripts目录) 2.test文件插入内容: 1)添加内容:IPADDR192.168.132.129 echo IPADDR192.168.132.129 | sudo tee -a /etc/sysconfig/network-sc…

Linux中级(DNS域名解析服务器)

一。产生原因1.IP地址:是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别,但由于IP地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机…

大数据治理平台建设规划方案(71页WORD)

随着信息化时代的到来,大数据已成为企业管理和决策的重要基础。然而,大数据的快速增长和复杂性给数据的管理和治理带来了巨大挑战。为了有效应对这些挑战,构建一个高效、稳定的大数据治理平台显得尤为重要。 文档介绍: 该平台旨在…