当前位置:首页 > 问答 > 正文

Redis怎么设置登录密码保证账号安全,配置密码那些事儿你知道吗

主要综合自Redis官方文档关于安全性的章节、多个技术社区如Stack Overflow的常见问答、以及《Redis实战》等书籍中的安全实践建议)

Redis作为一个高性能的内存数据库,默认安装后是没有设置密码的,这意味着任何能连接到Redis服务器的人都可以直接执行命令,查看甚至修改数据,这无疑是非常危险的,这就好比你家的大门装了一把世界上最先进的锁,但你却从来不锁门,任何人都可以随意进出,给Redis设置一个强密码是保证其安全性的第一道,也是最重要的一道防线。

具体该怎么操作呢?其实过程并不复杂,主要分为两步:修改配置文件和重启服务。

第一步:找到并修改Redis的配置文件

Redis的所有行为都由一个叫做 redis.conf 的文件控制,这个文件的位置因安装方式不同而有所差异。

  • 如果你是通过Linux系统的包管理器(比如aptyum)安装的,它通常位于 /etc/redis/redis.conf
  • 如果你是自己下载源码编译安装的,它可能在你的Redis安装目录下。
  • 在Windows系统上,它就在你解压Redis的文件夹里。

用文本编辑器(如Linux的vim、nano,Windows的记事本)打开这个文件,你需要找到关于密码设置的那一行,你可以搜索 requirepass 这个关键词,这一行是被注释掉的(行首有个号),看起来像这样: # requirepass foobared

Redis怎么设置登录密码保证账号安全,配置密码那些事儿你知道吗

这一行的意思就是“要求密码”,而foobared是Redis默认提供的一个示例密码,我们的任务就是激活这个配置并修改密码,你只需要做两件事:

  1. 去掉行首的 号,取消注释。
  2. foobared 替换成你自己设定的、足够复杂的密码。 requirepass MySuperStrongPassword123!

这里要特别强调密码的强度,千万不要使用像“123456”、“password”、“redis”这样简单易猜的密码,一个强密码应该包含大写字母、小写字母、数字和特殊符号,并且有足够的长度(建议至少12位以上)。

第二步:重启Redis服务让配置生效

仅仅修改了配置文件还不够,因为Redis服务是在内存中运行的,它不会自动感知到配置文件的变化,你必须告诉它:“嘿,我改了配置,你重新读一下!”

Redis怎么设置登录密码保证账号安全,配置密码那些事儿你知道吗

  • 在Linux系统中,如果你使用systemd管理服务,通常可以使用命令 sudo systemctl restart redissudo systemctl restart redis-server(具体服务名可能略有不同)来重启。
  • 如果是用源码编译直接运行的,你需要先停止Redis进程,然后再用配置文件重新启动它,redis-server /path/to/your/redis.conf

重启之后,你的Redis就有了密码保护。

设置了密码之后怎么连接呢?

密码设好了,你再像以前那样直接用redis-cli连接进去,会发现执行任何命令都会报错,提示(error) NOAUTH Authentication required.(错误:需要认证),这说明密码已经起作用了。

这时,你有两种方式进行认证登录:

Redis怎么设置登录密码保证账号安全,配置密码那些事儿你知道吗

  1. 在连接后认证:先连接上Redis,然后输入 AUTH 你设置的密码 命令进行认证。
    $ redis-cli
    127.0.0.1:6379> keys *
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> AUTH MySuperStrongPassword123!
    OK
    127.0.0.1:6379> keys * # 现在可以正常执行命令了
    (empty list or set)
  2. 在连接时直接认证:更便捷的方式是在启动redis-cli时就通过 -a 参数指定密码: redis-cli -a MySuperStrongPassword123!

但是需要注意的是,第二种方式虽然方便,但可能会在你的命令行历史记录中留下密码痕迹,有一定安全风险,在生产环境中,更推荐使用第一种方式,或者通过其他安全的方式传递密码。

除了设置密码,还有哪些需要注意的?

光有密码可能还不够“保险”,根据Redis官方文档和常见的安全实践,你最好还能做以下几件事来加固安全:

  1. 禁止外网访问:在配置文件 redis.conf 中,找到 bind 指令,默认可能是 bind 127.0.0.1,这表示只允许本机连接,千万不要将其设置为 bind 0.0.0.0,除非你非常清楚这样做的后果(即允许世界上任何能访问你服务器IP的机器来连接),最安全的做法是只绑定到确需使用的内网IP地址。

  2. 修改默认端口:Redis的默认端口是6379,这几乎是尽人皆知的,就像小偷都知道一楼右手边的房间通常是卧室一样,你可以在配置文件中修改 port 指令,将其改为一个不常用的端口号,6380,这样能避免一些简单的自动化扫描攻击,连接时就需要指定端口:redis-cli -p 6380

  3. 重命名或禁用危险命令:对于一些极其危险的命令,FLUSHALL(清空所有数据)、FLUSHDB(清空当前数据库)、CONFIG(修改配置)等,可以考虑在配置文件中将它们重命名成一个难以猜测的字符串,或者直接禁用。 rename-command FLUSHALL "" # 禁用FLUSHALL命令 rename-command CONFIG "a_very_long_random_string" # 将CONFIG命令重命名 这样即使有人突破了密码认证,也很难执行这些破坏性操作。

给Redis设置密码是保证数据安全的基础操作,配合绑定内网、修改端口、禁用危险命令等措施,能大大提升Redis实例的安全性,这些配置都在 redis.conf 文件中完成,修改后别忘了重启服务,安全无小事,多一层防护就少一分风险。