Redis 未授权访问导致服务器被入侵的完整踩坑与加固实录

简介: 服务器 CPU 飙满、crontab 被写入陌生定时任务——典型的 Redis 未授权访问被入侵。这篇完整复盘从告警到清马的处置过程,并给出 Redis 加固清单(bind、requirepass、rename-command、防火墙、最小权限),照着做完就能堵住这个最常见的洞。

一、现象:凌晨告警,CPU 飙满

某个凌晨,监控连续推送高负载告警:一台线上业务机 CPU 长时间满负荷,SSH 登录卡顿,uptime 显示负载远超核数。执行 ps aux --sort=-%cpu,排在最前的不是任何业务进程,而是几个陌生名称的可执行文件(典型的挖矿木马,如 kdevtmpfsi 一类),常驻内存、互相拉起。再看 crontab -l,被写入了一条每分钟执行一次的定时任务,内容是从远程地址下载脚本并重新拉起挖矿程序。这台机器不只是被占用资源,攻击者已经拿到了持久化的命令执行入口。

挖矿只是表象。能写 crontab,就意味着攻击者能以当前用户(通常是 root)身份执行任意命令。此时"杀掉进程"没有意义:不切断入口、不清理持久化、不轮换凭据,进程几分钟后就会回来。

二、根因分析:三件事没做对

回溯配置,问题收敛到 Redis 的三项基础防护。它们彼此独立,但只要一项失守,未授权访问就可能成立。

配置项 危险状态 安全状态 后果
bind 注释掉或写成 0.0.0.0 127.0.0.1 或内网地址 Redis 暴露在所有网卡
protected-mode no yes(默认) 失去无密码时的非本机兜底
requirepass 未设置或弱口令 高强度随机口令 任意客户端可直接读写
  1. bind 未限制。 早期 Redis 默认监听所有网卡,不少环境为图方便把 bind 127.0.0.1 注释掉,等于把 6379 挂到了公网可达的接口上。
  2. protected-mode 被关闭。 它是 Redis 在没有密码、又未绑定地址时的最后屏障,一旦设为 no,就不再拦截来自非本机的请求。
  3. requirepass 缺失或形同虚设。 未设密码时任何人 redis-cli -h <ip> 即可连接;即便设了,用 123456、redis 这类可猜口令也约等于没有。

一旦拿到未授权连接,攻击者可用 CONFIG SET dir / dbfilename 配合 SAVE 把任意文件写盘(例如写入 authorized_keys 或 crontab),也能通过主从复制、MODULE LOAD 直接执行命令。全程无需暴力破解,公开工具即可完成。

三、排查命令清单

入侵已经发生,先固定证据再动手清理。以下按"确认暴露面 → 定位异常 → 查看持久化"的顺序执行:

# 1. 确认 Redis 是否对外监听、能否无密码连接
redis-cli -h <目标IP> -p 6379 ping
redis-cli -h <目标IP> config get bind protected-mode requirepass

# 2. 查看端口监听与连接情况
ss -lntp | grep 6379
netstat -anp | grep 6379

# 3. 定位异常进程与资源占用
ps aux --sort=-%cpu | head -20
ps -ef | grep -E 'kdevtmpfsi|xmrig|kinsing'

# 4. 检查定时任务持久化
crontab -l
ls -la /etc/cron.d/ /var/spool/cron/
systemctl list-timers --all

# 5. 检查登录记录与系统日志
last -a
lastb -a
journalctl -u redis --since "3 days ago"

# 6. 检查 SSH 后门
cat ~/.ssh/authorized_keys

排查要点:redis-cli ping 若能无认证返回 PONG,暴露基本坐实;日志里出现 CONFIG SET、REPLICAOF、MODULE LOAD 等异常命令,几乎可以判定攻击路径。

四、修复步骤

1. 只绑定内网地址

bind 127.0.0.1 10.0.x.x

显式绑定本机与内网网卡,禁止监听公网接口,不要"就开一会儿"。

2. 设置强密码

requirepass <32位以上随机字符串>

通过配置管理或环境变量注入,不要硬编码进业务代码,并定期轮换;Redis 6 及以上建议配合 ACL,按业务划分只读/读写账号。

3. 禁用或重命名高危命令

rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""
rename-command MODULE ""

重命名后需同步调整依赖这些命令的运维脚本与监控。

4. 使用专用低权限账号运行

不要让 Redis 以 root 运行:

useradd -r -s /sbin/nologin redis
chown -R redis:redis /var/lib/redis

再配合 systemd 单元的 User=redis、NoNewPrivileges=yes、ProtectSystem=strict 收紧权限,即便被利用也能压缩影响面。

5. 安全组只放行内网

6379 仅允许内网网段与指定应用服务器访问,公网一律拒绝,遵循最小放行原则。

清理阶段:删除被写入的 crontab 与 /etc/cron.d 下的可疑文件、清掉 authorized_keys 中的陌生公钥、终止恶意进程并删除对应文件。由于攻击者已具备 root 执行能力,必须假定凭据泄露——轮换全部 SSH 密钥、Redis 密码与业务密钥,必要时重装系统。

五、通用加固清单

  • [ ] bind 限定为 127.0.0.1 与必要内网地址,绝不监听公网
  • [ ] 保持 protected-mode yes
  • [ ] 设置高强度 requirepass,按需启用 ACL
  • [ ] 禁用/重命名 CONFIG、FLUSHALL、EVAL、MODULE 等高危命令
  • [ ] Redis 以专用非登录低权限账号运行,数据目录权限最小化
  • [ ] 安全组/iptables 仅放行内网来源,公网端口关闭
  • [ ] 限制 DEBUG、REPLICAOF 等敏感能力
  • [ ] 开启日志审计,监控 CONFIG、REPLICAOF、MODULE LOAD 等异常命令
  • [ ] 定期核查 authorized_keys、crontab、systemd timers
  • [ ] 建立配置基线巡检,避免"临时改一下就忘"

六、总结

Redis 未授权访问并非已经过时的问题,它反复出现在生产环境里,原因几乎总是同一组:监听地址没有收口、protected-mode 被关掉、密码没设或太弱。单看每一项都像是可以"先放一放"的小配置,叠加起来却等于把一台以 root 权限运行的服务直接交给公网。真正的教训是,安全防护要在部署那一刻就位,而不是等 CPU 被挖矿打满之后才补。把绑定、认证、命令禁用、运行账号、网络放行这五件事一次性做对,再辅以持续巡检,才能让这类事故停在配置检查阶段,而不是演变成一次应急。

相关文章
|
XML 网络协议 Android开发
GB28181设备接入端如何实现校时?
在探讨这个问题之前,我们先看看GB/T28181-2016官方文档怎么说的,9.10.1章节校时基本要求提到: 联网内设备支持基于SIP方式或 NTP方式的网络校时功能,标准时间为北京时间。
673 1
|
应用服务中间件 Android开发 nginx
|
Kubernetes Linux Docker
kubelet 压力驱逐 - The node had condition:[DiskPressure]
kubelet 压力驱逐 - The node had condition:[DiskPressure]
2262 0
|
19天前
|
缓存 BI 测试技术
2026通义千问Qwen3.7-Max全解:Agent智能体底座,架构拆解与API实操教程
随着智能体应用快速落地,面向长周期自主任务的大模型成为开发选型的重点,新版通义千问Qwen3.7‑Max作为旗舰文本大模型,主打Agent智能体底座能力,在复杂推理、工程代码开发、超长文档处理、多轮工具调用等方面进行大规模优化,能够支撑长时间连续自动化任务。很多开发者在初次接触该模型时,容易混淆它与同系列其他版本的能力差异,不清楚MoE混合专家架构的运行逻辑,在API接入、工具调用编排时遇到参数配置、返回格式异常等问题。本文将从核心功能、底层技术架构、实操使用方法三个维度完整解析Qwen3.7‑Max,附带可直接运行的API调用代码,讲解参数配置方法,梳理开发过程中的限制条件与避坑要点,帮助开
446 2
|
3月前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
3029 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
人工智能 物联网 调度
边缘大型AI模型:协作部署与物联网应用——论文阅读
论文《边缘大型AI模型:协作部署与物联网应用》系统探讨了将大模型(LAM)部署于边缘网络以赋能物联网的前沿框架。针对传统云端部署高延迟、隐私差的问题,提出“边缘LAM”新范式,通过联邦微调、专家混合与思维链推理等技术,实现低延迟、高隐私的分布式智能。
1596 6
边缘大型AI模型:协作部署与物联网应用——论文阅读
|
4月前
|
人工智能 运维 安全
阿里云百炼Qwen3.7-Max 详解:核心能力、技术优势与订阅计划全解析
2026年,AI技术已全面进入智能体时代,大模型不再局限于基础对话与信息检索,而是朝着自主执行复杂任务、长周期持续推理、多工具协同协作的方向深度演进。阿里云百炼平台于近期正式推出通义千问系列最新旗舰模型——Qwen3.7-Max,作为通义千问3.7系列中规模最大、综合能力最强的版本,该模型直接对标GPT-5.5、Claude Opus 4.7等国际顶级闭源旗舰,是当前国产大模型中性能标杆级产品。
1466 0
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
1570 2
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
2815 10
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
2113 0

热门文章

最新文章