面试题答案
一键面试检测流程
- 网络层面检查
- 工具:Wireshark等抓包工具。
- 操作:在Redis Sentinel服务器以及主从服务器所在网络段进行抓包分析,重点关注与Redis Sentinel通信相关的网络流量,检查是否存在异常的连接、数据传输模式等。例如,观察是否有不明来源的IP频繁与Redis Sentinel进行通信,或者通信的数据量异常等情况。
- Redis Sentinel配置及运行状态检查
- 工具:Redis命令行工具(redis - cli)。
- 操作:
- 使用
SENTINEL GET - CONFIG
命令获取Sentinel的配置信息,检查配置文件中是否有异常的修改,比如是否有未经授权的主从配置修改,或是否配置了不明的发布/订阅频道等。 - 通过
SENTINEL MASTERS
命令查看主从服务器的状态信息,对比实际的主从关系与预期是否一致,检查是否存在主从角色异常切换的情况。如果存在中间人攻击,可能会导致主从关系被篡改。
- 使用
- 数据一致性检查
- 工具:可以编写自定义脚本,利用Redis的
INFO
命令获取服务器统计信息。 - 操作:
- 在主服务器和从服务器上分别执行
INFO
命令,获取keyspace
相关信息,统计键值对数量等关键指标。对比主从服务器上的这些指标,如果主从数据不一致,可能是中间人攻击篡改了数据传输。 - 对于重要的键值对,可以通过手动检查的方式,在主从服务器上获取特定键的值并进行比对,确保数据一致。
- 在主服务器和从服务器上分别执行
- 工具:可以编写自定义脚本,利用Redis的
- 频道信息检查
- 工具:Redis命令行工具(redis - cli)。
- 操作:使用
PUBSUB CHANNELS
命令查看当前Sentinel订阅的频道信息,检查是否有异常的频道。同时,通过PUBSUB NUMSUB
命令获取每个频道的订阅者数量,查看是否存在异常的订阅情况,例如有不明来源的大量订阅者,这可能暗示存在中间人攻击利用频道进行恶意操作。
技术指标
- 网络连接指标
- 异常连接数量:异常连接数量突然增加可能意味着存在中间人攻击。例如,正常情况下Redis Sentinel只与主从服务器有少量稳定连接,如果短时间内出现大量来自不同IP的连接,这是一个危险信号。
- 连接持续时间:异常连接的持续时间过短或过长都可能有问题。过短可能是试探性攻击,过长可能是恶意连接在持续获取信息。
- Redis服务器状态指标
- 主从角色切换频率:正常情况下,主从角色切换是相对稳定的,由故障等特定原因触发。如果切换频率过高,且没有合理的故障原因,可能是中间人攻击导致的异常切换。
- 数据同步延迟:主从服务器之间的数据同步延迟如果突然增大,可能是中间人在传输过程中篡改或干扰了数据同步,导致从服务器无法及时跟上主服务器的数据更新。
恢复措施
- 紧急隔离
- 操作:暂时切断Redis Sentinel与疑似被攻击的主从服务器之间的网络连接,防止攻击进一步扩散。可以通过防火墙规则,限制Redis Sentinel与特定主从服务器的通信。同时,记录相关服务器的IP等信息,用于后续分析。
- 数据恢复
- 操作:
- 如果数据一致性出现问题,从备份中恢复数据。可以使用Redis的RDB或AOF备份文件进行恢复。首先停止Redis服务器,将备份文件覆盖当前数据文件,然后重启服务器。
- 对于RDB备份,直接将
.rdb
文件放置在Redis数据目录下并重启Redis服务。对于AOF备份,确保AOF文件完整且未被篡改后,使用redis - cli
的BGREWRITEAOF
命令重写AOF文件,然后重启Redis服务,这样可以恢复到备份时的数据状态。
- 操作:
- 重新配置与连接
- 操作:
- 重新检查并确认Redis Sentinel和主从服务器的配置文件,确保配置信息正确且没有被篡改。重点检查主从关系配置、认证信息等关键配置项。
- 重新建立Redis Sentinel与主从服务器之间的连接,先从从服务器开始连接,确保从服务器状态正常后,再连接主服务器。连接过程中密切关注Redis Sentinel的日志输出,及时发现并解决可能出现的问题。
- 操作:
- 业务监控与验证
- 操作:在恢复连接后,对业务进行全面监控,观察业务操作对Redis的读写是否正常。可以通过模拟一些关键业务场景,检查数据的读写是否准确,确保业务能够正常运行,且数据一致性得到保障。同时,持续监控Redis服务器的各项指标,如连接数、内存使用、数据同步状态等,防止攻击再次发生。