本文记录阿里云 Redis 安全基线配置。
禁止使用root用户启动
描述
使用 root 权限去运行网络服务是比较有风险的(nginx 和 apache 都是有独立的 work 用户,而 redis 没有)。redis crackit
漏洞就是利用 root 用户的权限来替换或者增加 authorized_keys,来获取 root 登录权限的
加固建议
使用 root 切换到 redis 用户启动服务:
useradd -s /sbin/nolog -M redis
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf
操作时建议做好记录或备份
补充
使用非 root 用户,需要解决权限问题,配置文件中指定的 dir /rbddir
需要 redis
用户有读写权限。另外 pidfile
也需要读写权限。
限制redis 配置文件访问权限
描述
因为 redis 密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是必要的,设置 redis 配置文件权限为 600
,
加固建议
执行以下命令修改配置文件权限:
chmod 600 /<filepath>/redis.conf
操作时建议做好记录或备份
补充
需要注意 redis 启动用户能够读取 redis.conf
。
修改默认6379端口
描述
避免使用熟知的端口,降低被初级扫描的风险
加固建议
编辑文件 redis 的配置文件 redis.conf
,找到包含 port 的行,将默认的 6379
修改为自定义的端口号,然后重启 redis
操作时建议做好记录或备份
禁用或者重命名危险命令
描述
Redis 中线上使用 keys *
命令,也是非常危险的。因此线上的 Redis 必须考虑禁用一些危险的命令,或者尽量避免谁都可以使用这些命令,Redis 没有完整的管理系统,但是也提供了一些方案。
加固建议
修改 redis.conf
文件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
然后重启 redis。 重命名为 ""
代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如: rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC
操作时建议做好记录或备份
禁止监听在公网
描述
Redis 监听在 0.0.0.0
,可能导致服务对外或内网横向移动渗透风险,极易被黑客利用入侵。
加固建议
在 redis 的配置文件 redis.conf
中配置如下: bind 127.0.0.1
或者内网 IP,然后重启 redis
操作时建议做好记录或备份
打开保护模式
描述
redis 默认开启保护模式。要是配置里没有指定 bind 和密码,开启该参数后,redis 只能本地访问,拒绝外部访问。
加固建议
redis.conf
安全设置:
# 打开保护模式
protected-mode yes
操作时建议做好记录或备份
发表回复