redis未授权访问漏洞修复方法_redis密码设置

修复建议

1、网络加固


绑定127.0.0.1,redis默认是监听的127.0.0.1上,如果仅仅是本地通信,请确保监听在本地。这种方式缓解了redis的风险。在/etc/redis/redis.conf中配置如下:

[root@localhost ~]# vim /etc/redis.conf
bind127.0.0.1

2、设置防火墙


如果需要其他机器访问,或者设置了slave模式,需添加相应的防火墙设置。命令如下:

#centos7
[root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent 
success
[root@localhost ~]# firewall-cmd --reload  #使配置生效
success
#centos6
iptables -A INPUT -sx.x.x.x -p tcp --dport 6379 -j ACCEPT

3、添加认证


redis默认没有开启密码认证
修改/etc/redis/redis.conf配置文件, (requirepass 密码)可设置认证密码

[root@localhost ~]# vim /etc/redis.conf
requirepass xHlotFav5VNz9&yH

重启redis(/etc/init.d/redis-server restart)之后,需要执行(auth 密码)
示例如下:

[root@eureka175 ~]# redis-cli -h 192.168.65.175 -p 6379
192.168.65.175:6379> 
192.168.65.175:6379> KEYS *
(error) NOAUTH Authentication required.
192.168.65.175:6379> AUTH 1234
(error) ERR invalid password
192.168.65.175:6379> AUTH xHlotFav5VNz9&y1
OK

4、设置单独账户


设置一个单独的redis账户:创建一个redis账户,通过该账户启动。示例如下:

setsid sudo -u redis/usr/bin/redis-server /etc/redis/redis.conf

5、重命名重要命令


由于redis没有做基本的权限分离,无管理账号和普通账号之分,导致攻击者登录后可执行任意操作,因此需要隐藏重要命令。
例如:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL

其中在redis2.8.1和RedisRedis3.x (< 3.0.2)存在有eval沙箱逃逸漏洞,攻击者利用漏洞可执行任意lua代码。

设置方法如下,编辑redis.conf文件:

rename-command CONFIG ""
rename-command flushall ""
rename-command flushdb ""
rename-command shutdown shutdown_dvwa

上述配置将config,flushdb,flushall设置为了空,即禁用该命令,我们也可以命名为一些攻击者难以猜测,我们自己却容易记住的的名字。

/etc/init.d/redis-server restart 

重启生效

已上就是redis未授权访问漏洞修复过程,觉得有用就给个赞吧

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/270.html

发表评论

登录后才能评论