SSH介绍及检测规则思路分析
一、SSH
1、定义
SSH是安全的加密协议,用于远程连接linux服务器。
2、ssh服务的主要功能:
1)提供远程链接服务器的功能;
2)对远程链接传输的数据进行加密
3、ssh与telnet的区别:
| 服务链接方式 | 服务数据传输 | 服务监听端口 | 服务登录用户 |
| ssh | 加密 | 22 | 默认支持root用户登录 |
| telnet | 明文 | 23 | 不支持root用户登录 |
4、SSH工作机制
SSH工作机制大致是:本地的SSH客户端先发送一个连接请求到远程的SSH服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给SSH的客户端。此时,客户端本地再将密钥发回给服务端,自此连接建立。(类似TCP三次握手)
1)连接建立
SSH服务在指定的端口(默认:22)侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP链接
2)版本协商
SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号。
3)算法协商
SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用户数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。
4)密钥交换
服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建议加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。
5)用户认证 <SSH认证方式>
①密码认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。
②密钥认证:客户端通过用户名、公钥以及公钥算法等信息来与服务器进行认证。

③password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
④all认证:只要满足密码认证和密钥认证其中一种即可。
6)会话请求
认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。
7)会话交互
会话建立后,SSH服务器和客户端在该会话上进行数据信息的交互。
5、ssh服务
SSH服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连接请求。SSH服务端的进程名位sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括:公共密钥认证、密钥交换、对称密钥加密和非安全连接等。 SSH服务端主要包括两个服务功能:SSH远程连接和SFTP服务。
6、ssh客户端命令
ssh客户端包含ssh|slogin远程登录、scp远程拷贝、sftp文件传输、ssh-copy-di密钥分发等应用程序。
1)SSH远程登录服务器命令示例

2)SCP复制数据至远程主机命令(全量复制)

3)SFTP
该命令用于在Linux系统中进行安全文件传输的工具。它使用SSH协议进行加密传输,使用户能够在本地计算机和远程服务器之间传输文件。以下是SFTP命令的一些常用功能:
①上传文件(put):
用户可以使用sftp命令将本地计算机上的文件上传到远程服务器。
②下载文件(get):
用户可以使用sftp命令从远程服务器下载文件到本地计算机。
③浏览远程文件系统(pwd):
用户可以使用sftp命令浏览远程服务器上的文件和目录结构。
④创建和删除目录(mkdir、rm):
用户可以使用sftp命令在远程服务器上创建和删除目录。
⑤修改文件权限(chgrp、chmod、chown):
用户可以使用sftp命令修改远程服务器上文件的权限。
⑥列出文件和目录(lls):
用户可以使用sftp命令列出远程服务器上的文件和目录。
令列出远程服务器上的文件和目录。

7、SSH安全优化
SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置:
1)更改远程连接登录的端口;
2)禁止ROOT用户直接登录;
3)密码认证的方式改为密钥认证;
4)重要服务不使用公网IP;
5)使用防火墙限制来源IP
二、SSH相关安全检测规则开发思路分析
1、攻击场景
SSH是一种协议,允许授权用户打开其他计算机上的远程Shell,在Linux和macOS版本默认情况下都安装了SSH,而且通常SSH不限制登录用户的数量,所以攻击者在潜入主机后,为了达到权限维持的目的,可能会在主机上设置SSH后门。
攻击者可以利用敏感函数来修改 SSH 相关的二进制文件以实现持久性的目的。
2、需求拆分
- ssh相关二进制文件:/usr/sbin/sshd、/usr/bin/ssh、/usr/bin/sftp、/usr/bin/scp
- 文件操作类型:create
3、检测规则思路
- 数据源:终端告警日志
- 命中逻辑:
- 文件操作类型:创建二进制文件
- or:
- 文件路径 包含(忽略大小写)'/usr/sbin/sshd'
- 文件路径 包含(忽略大小写)'/usr/bin/ssh'
- 文件路径 包含(忽略大小写)'/usr/bin/sftp'
- 文件路径 包含(忽略大小写)'/usr/bin/scp'
- 检测时间:10min
- 归并分组:受害者IP
- 统计次数:count >= 1
-
4、研判分析
- 根据告警信息发现被更改的SSH二进制文件,并及时联系数据源IP主机责任人确认是否为授权修改,若不是则判定为可疑事件;
- 根据告警信息获取进行修改文件的UID等账户信息并查看该用户是否存在其他敏感操作,若出现判定为可疑事件。
5、应急响应
- 更改远程连接登录的端口;
- 禁止ROOT用户直接登录;
- 密码认证的方式改为密钥认证;
- 重要服务不使用公网IP;
- 使用防火墙限制来源IP
相关文章:
SSH介绍及检测规则思路分析
一、SSH 1、定义 SSH是安全的加密协议,用于远程连接linux服务器。 2、ssh服务的主要功能: 1)提供远程链接服务器的功能; 2)对远程链接传输的数据进行加密 3、ssh与telnet的区别: 服务链接方式 服务数据…...
React核心⼊⻔-lesson1
自学React从入门到精通,从使用到写源码 React⼊⻔ 课堂⽬标资源起步 ⽂件结构⽂件结构⼀览React和ReactDomJSX 使⽤JSX组件 组件的两种形式 class组件function组件组件状态管理 类组件中的状态管理函数组件中的状态管理事件处理组件通信 Props属性传递contextredux⽣命周期 变…...
数据结构(三)——栈
三、栈、队列和数组 3.1 栈 3.1.1 栈的基本概念 线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n 0时线 性表是一个空表。若用L命名线性表,则其一般表示为 L (a1, a2, … , ai , ai1, ……...
【Redis知识点总结】(五)——Redis实现分布式锁
Redis知识点总结(五)——Redis实现分布式锁 setnxsetnx expiresetnx expire lua脚本set nx exset nx ex 随机值set nx ex 随机值 lua脚本set ex nx 随机值 lua脚本 锁续期RedissonRedLock 在Redis的众多应用场景中,分布式锁是Redis比…...
CSS 绝对定位 position:absolute
什么是CSS绝对定位absolute定位? 绝对定位absolute定位是CSS中的一种定位方式,可以将元素精确定位到一个确定的点,这与元素在文档流上的自然位置无关。相比起其他定位方式,绝对定位很灵活性,它可以将元素脱离文档流&am…...
鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)
相对布局组件,用于复杂场景中元素对齐的布局。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 规则说明 容器内子组件区分水平方向,垂直方向: 水平方向为left&…...
Android制作微信添加多个图片,放大图片
1.添加依赖 implementation com.github.bumptech.glide:glide:4.12.0 //裁剪图片等等 implementation androidx.recyclerview:recyclerview:1.1.0 //recycleview依赖 2.使用recycleview <androidx.recyclerview.widget.RecyclerViewandroid:id"id/recyclerView"…...
iOS runtime理解和应用场景
一、runtime的动态性 OC的运行时系统(Runtime System)提供了丰富的动态特性,包括类与对象的创建、消息发送与转发、方法的动态添加与替换、属性的动态合成等。通过使用运行时库提供的API,可以在运行时获取和操作类与对象的信息,实现各种动态性的功能。 我对 Runtime 的理…...
画图实战-Python实现某产品全年销量数据多种样式可视化
画图实战-Python实现某产品全年销量数据多种样式可视化 学习心得Matplotlib说明什么是Matplotlib?Matplotlib特性Matplotlib安装 产品订单量-折线图某产品全年订单量数据数据提取和分析绘制折线图 产品订单&销售额-条形图某产品全年订单&销售额数据绘制条形…...
YOLOv9详解
1.概述 在逐层进行特征提取和空间转换的过程中,会损失大量信息,例如图中的马在建模过程中逐渐变得模糊,从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说, PGI包含三个部分,࿰…...
CRON 定时任务
检测是否安装了 cron systemctl status crond 如果没有安装使用 sudo yum install cronie 编辑 crontab -e * * * * * php /path/your.php Esc键 然后输入 :q 退出 :wq 保存并退出 第一个 * 表示分钟,表示每分钟执行一次。第二个 * 表示小时,表示每…...
环境安装篇 之 Kind 搭建 kubernetes 测试集群
云原生学习路线导航页(持续更新中) 本文是 环境安装 系列文章,介绍 使用Kind工具 快速安装 kubernetes 测试集群的详细步骤 1.Kind简介 Kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。Kind 主要用于测试kubernetes本…...
每日五道java面试题之mybatis篇(四)
目录: 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接…...
camunda流程引擎的插件如何使用
camunda工作流引擎是一个开放的架构,除了流程引擎默认提供的功能外,开发者可以通过流程插件机制,对流程引擎功能进行扩展。即流程引擎插件是流程引擎配置的扩展。插件必须提供 ProcessEnginePlugin 接口的实现。 下面以全局任务事件监听器为…...
Vue打包问题汇总:legacy、runtime.js
问题一:Vue3.x的版本中build后dist文件中出现legacy的js文件 解决办法是添加兼容的浏览器 package.json "browserslist": ["> 1%","last 2 versions","not dead","not ie 11" ]参考 Vue3.x的版本中build后…...
挑战杯 车位识别车道线检测 - python opencv
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …...
c++面经
1. 僵尸进程 僵尸进程(Zombie Process)在操作系统中指的是那些已经执行完毕,但其父进程尚未对其进行善后处理(例如读取子进程的状态信息或者执行回收资源的操作)的进程。在Unix和类Unix系统࿰…...
js中副作用的消除还解决了并行计算带来的竞争问题,具体是如何解决的
在JavaScript中,副作用是指对外部环境产生的可观察的变化,例如修改全局变量、修改DOM元素等。副作用的存在可能导致代码的可维护性和可测试性下降,并且在并行计算中可能引发竞争问题。 不纯的函数有可能访问同一块资源,如果先后调…...
3/14/24数据结构、线性表
目录 数据结构 数据结构三要素 逻辑结构 存储结构 数据运算 时间复杂度 空间复杂度 线性表 线性表定义 静态分配 动态分配 线性表插入 线性表删除 十天的时间学完了C语言督学课程,最后终于是可以投入到408的科目学习当中。关于数据结构和算法的学习很多部…...
软件测试面试200问,面试看这就够了。。。
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
