面试题答案
一键面试1. 配置参数调整
- bind参数:
- 设置:在
redis.conf
文件中,通过bind
参数绑定Redis服务器监听的特定IP地址。例如,如果服务器仅对内网提供服务,可以绑定到内部IP,如bind 192.168.1.100
。 - 原理:限制Redis服务器只能接受来自指定IP地址的连接,外部恶意攻击者无法直接连接到Redis服务器,从而避免键名枚举攻击。
- 设置:在
- protected - mode:
- 设置:将
protected - mode
设置为yes
。在默认情况下,当没有设置bind
参数且没有设置密码时,Redis会开启保护模式。 - 原理:保护模式下,Redis仅接受来自本地回环地址(127.0.0.1)的连接,除非设置了密码。这样,外部未经授权的攻击者无法直接访问Redis,降低了键名枚举攻击风险。
- 设置:将
- rename - command:
- 设置:在
redis.conf
文件中使用rename - command
指令对敏感命令进行重命名。例如,将KEYS
命令重命名为一个复杂且难以猜测的名称,如rename - command KEYS myComplexKeyCommand
。 - 原理:恶意攻击者通常依赖于已知的Redis命令进行键名枚举,重命名敏感命令后,攻击者不知道新的命令名称,难以执行键名枚举操作。
- 设置:在
2. 其他防护策略
- 密码认证:
- 设置:在
redis.conf
文件中通过requirepass
设置一个强密码,如requirepass yourStrongPassword
。客户端连接Redis时需要提供正确的密码。 - 原理:只有知道密码的合法客户端才能连接到Redis服务器,恶意攻击者没有密码就无法发起键名枚举攻击。
- 设置:在
- 访问控制列表(ACL):
- 设置:从Redis 6.0开始支持ACL。可以通过
acl setuser
命令创建具有特定权限的用户。例如,创建一个只读用户,限制其只能执行GET
等读取命令,而不能执行KEYS
等可能导致键名枚举的命令。 - 原理:通过细粒度的权限控制,限制不同用户对Redis命令的执行权限,使恶意攻击者无法获取执行键名枚举命令的权限。
- 设置:从Redis 6.0开始支持ACL。可以通过
- 监控与报警:
- 设置:使用Redis的INFO命令结合监控工具(如Prometheus + Grafana)监控Redis的命令执行频率。例如,当
KEYS
命令执行频率异常升高时,触发报警。 - 原理:及时发现异常的键名枚举行为,以便管理员能够迅速采取措施,如封禁攻击源IP等。
- 设置:使用Redis的INFO命令结合监控工具(如Prometheus + Grafana)监控Redis的命令执行频率。例如,当