服务器

PHP安全:Redis的使用安全

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,表示命令已经禁用成功。                                           

  除特别注明外,本站所有文章均为技术藤原创,转载请注明出处来自https://www.jishuteng.com/article/6.html

分享到微信朋友圈 扫一扫,手机阅读
支付宝打赏
微信打赏

参与评论 0条评论

评论区