1、禁止使用root用户启动(这里用admin用户启动redis服务)
1)切换到admin用户登录:
su admin
2)复制redis.conf到非root用户home目录路径下:
cp /usr/local/redis/redis.conf /home/admin/
3)修改admin下的redis.conf文件:
dir "/" 改为 dir "/home/admin/redis" -> 工作目录,appendonly.aof等文件会保存到该路径
pidfile "/var/run/redis.pid" 改为 pidfile "/home/admin/run/redis.pid" -> 启动时创建的进程信息保存到该路径
4)创建redis启动及运行所需目录
mkdir -p /home/admin/run
mkdir -p /home/admin/redis
5)修改/usr/local/redis拥有权限为admin:
切换至root用户:
su root
修改权限:
chown -R admin/usr/local/redis
6)以非root用户(admin)启动redis:
/usr/local/redis/bin/redis-server /home/admin/redis.conf
2、禁用或者重命名危险命令
这里选择禁用这些命令,如需重命名,即用别名替代,在 "" 内添加别名名称即可。
修改/home/admin/redis.conf配置文件,添加如下配置:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
# 如果appendonly.aof备份文件中用到了DEL命令则应注释掉,负责不能同步备份数据!
rename-command DEL ""
rename-command EVAL ""
验证: ./redis-cli连接进入redis;输入keys * ,提示(error) ERR unknown command `keys`, with args beginning with: `*` 说明成功。
3、开启redis密码认证,并设置高复杂度密码
redis在redis.conf配置文件中,设置配置项requirepass, 开户密码认证。 redis因查询效率高,auth这种命令每秒能处理10w次以上,简单的redis的密码极容易为攻击者暴破。
1)修改/home/admin/redis.conf,找到requirepass,如被注释掉了则放开注释:
修改: requirepass <设置密码>
2) 验证密码是否生效:
cd到/usr/local/redis/bin下;
./redis-cli连接进入redis;
测试:set test 123
提示:(error) NOAUTH Authentication required.说明密码生效。
3)密码应尽可能复杂,如忘记密码,可使用命令
cat /home/admin/redis.conf |grep 'requirepass' 查看设置的密码。
4、修改默认6379端口
修改/home/admin/redis.conf文件,找到port参数,修改为:port <修改的端口>
验证:cd到/usr/local/redis/bin下;
./redis-cli -p <端口>
连接成功说明修改端口号成功。
5、限制redis 配置文件访问权限(因为redis密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是有必要的)
1)确保当前登录用户为admin;
2)修改权限,禁止不相关的用户访问改配置文件
chmod 600 /home/admin/redis.conf
6、修改日志文件输出路径监控日志(记录日志信息还是很有必要的):
mkdir -p /home/admin/redis/logs
修改/home/admin/redis.conf文件,找到logfile "" 改成 logfile "/home/admin/redis/logs/redis.log"