Redis 与 6379 端口
6379 是 Redis 的默认监听端口。Redis 6 之前没有 ACL,且默认不设置密码,只要网络可达就能读写全部键;暴露到公网后可被写入 SSH 公钥或计划任务,从而直接接管主机,这是历史上规模最大的未授权访问入侵链之一。Redis 6 起引入 ACL 与 TLS,新版本默认也收敛了监听地址,但实际环境里 bind 全网卡加空密码的配置依然常见。
基本信息
| 服务 | Redis(内存数据结构存储) |
|---|---|
| 协议 | TCP(TLS 通常在 6380) |
| 权限要求 | 运维需管理口令;应用账号按 ACL 最小授权 |
| 配置文件 | /etc/redis/redis.conf 或 /etc/redis.conf |
| 常见用途 | 缓存、会话、分布式锁、计数、轻量队列 |
| 安全等级 | 仅应用网段,禁止公网 |
典型使用场景
- 缓存热点数据,降低数据库压力
- 分布式会话与令牌存储,多实例共享登录态
- 分布式锁与限流计数,依赖单线程原子操作
- 轻量消息队列:发布订阅与列表结构做任务分发
- 排行榜与去重:有序集合与集合结构直接支撑业务
连接与安全检查
连接与安全检查
redis-cli -h 10.0.0.8 -p 6379 ping # 无密码直接返回 PONG 说明未设口令
redis-cli -h 10.0.0.8 -p 6379 -a '<口令>' ping # 带鉴权的连通性确认
redis-cli config get bind # 看监听地址是否被改成全网卡
redis-cli config get requirepass # 确认是否设置了口令
nc -vz 10.0.0.8 6379 # 网络层先行确认,排除防火墙问题加固项与判定
| 加固项 | 正确做法 | 风险点 |
|---|---|---|
| 监听地址 | bind 到内网地址或本机 | 全网卡监听等于对外开放 |
| 口令 | 设置复杂口令并限制来源 | 空口令可直接读写全部数据 |
| 保护模式 | protected-mode 保持开启 | 关闭后非本机访问不再被拦截 |
| 危险命令 | 重命名或禁用 FLUSHALL、CONFIG 等 | 误删或改配置可导致数据全丢 |
| 账户 | Redis 6 起用 ACL 按业务分权 | 单一口令泄露影响全部业务 |
最小加固配置片段
最小加固配置片段
bind 127.0.0.1 10.0.0.8 # 只绑本机与业务网卡,不要写 0.0.0.0
protected-mode yes
requirepass 用足够长的随机口令
rename-command FLUSHALL "" # 禁用清库命令
rename-command CONFIG "" # 禁用运行时改配置
appendonly yes # 按业务取舍持久化方式常见报错判读
| 报错 | 含义 | 处置方向 |
|---|---|---|
| NOAUTH Authentication required | 请求未携带口令 | 客户端补认证,检查连接池配置 |
| OOM command not allowed | 内存达到上限且淘汰策略受限 | 审视内存策略与键设计,评估扩容 |
| LOADING Redis is loading the dataset | 重启后正在加载持久化文件 | 等待加载完成,期间避免切流量 |
| READONLY You can not write against a read only replica | 误连到副本节点 | 写操作指向主库,核对路由配置 |
6379 对公网开放且无口令时,攻击者可写入 SSH 公钥、计划任务或主从复制配置直接接管主机,这是最经典的 Redis 入侵链,务必先做网络收敛再做口令加固。
巡检入口指标:已用内存与上限的比值、当前连接数、每秒命令数;出现突增时结合慢日志判断是业务量增长还是个别慢命令,主从架构下还要看主从偏移量是否持续扩大。