微信公众号:计算机与网络安全
ID:Computer-network
Redis是一款基于内存与硬盘的高性能非关系型数据库,被各种大型互联网企业、机构等广泛采用。
1、密码安全
很多企业、机构等的Redis存在弱密码、空口令等安全风险。低版本的Redis在未进行有效验证,并且在服务器对外开启SSH服务的情况下,攻击者可以通过Redis未授权访问,然后通过authorized_keys强行获取root权限。
在使用Redis时,不要将Redis暴露在公开网络中,让不受信任的用户接触到Redis是非常危险的。一定要设置Redis密码,Redis的密码是通过requirepass以明文的形式配置在Conf文件中的,密码要尽可能得长和复杂,降低被破解的风险。
config get requirepass // 获取当前密码
config set requirepass "password" // 设置当前密码,服务重新启动后又会置为默认,即无密码,不建议此种方式
在配置文件redis.conf中设置密码如下。
# redis.conf #
requirepass password // 此处注意,行前不能有空格
重新设置密码后,重新登录才能获取操作权限。
#!/bin/sh
redis-cli.exe -h 127.0.0.1 -p 6379 -a password // 需添加密码参数
2、IP访问限制
如果没有对外提供服务器,在Conf中设置为本地绑定:bind 127.0.0.1,不要使用6379默认端口,这样可以在一定程度上避免被扫描。
# redis.conf
bind 127.0.0.1 // 只允许127.0.0.1访问
prot 6300 // 更改默认访问端口
3、运行安全
避免使用管理员账号启动服务,尽可能用nobody或Redis用户来启动Redis,并设置禁止登录。
作为服务端的redis-server,常常需要禁用以上命令来使服务器更加安全,如config、flushall、flushdb等操作都是很关键的,不小心就会导致数据库不可用。可以通过配置文件在SECURITY这一项中,通过rename-command重命名或禁用这些命令。
# redis.conf
appendonly no
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
而如果要保留命令,但是不能轻易使用,可以重命名命令来设定。
rename-command FLUSHALL RENAME_FLUSHALL
rename-command FLUSHDB RENAME_FLUSHDB
rename-command CONFIG RENAME_CONFIG
rename-command KEYS RENAME_KEYS
对于FLUSHALL命令,需要设置配置文件中appendonly no,否则服务器无法启动。重启服务器后,执行这些命令,服务器会报错unknown command,表示命令已经禁用成功。
一如既往的学习,一如既往的整理,一如即往的分享。感谢支持
【好书推荐】
扫描关注LemonSec
本文始发于微信公众号(LemonSec):PHP安全:Redis的使用安全
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论