redis配置文件中的保护模式protected-mode

1. 保护模式

在redis.conf配置文件中有这样一个配置:

protected-mode yes

上面有一段注释很好的说明了它的作用

Protected mode is a layer of security protection, in order to avoid that Redis instances left open on the internet are accessed and exploited.

When protected mode is on and the default user has no password, the server only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets.

By default protected mode is enabled. You should disable it only if you are sure you want clients from other hosts to connect to Redis even if no authentication is configured.

翻译下:

  1. 保护模式是一个避免你在互联网(外网)访问redis的机制。
  2. 当启用保护模式,而且没有密码时,服务器只接受来自IPv4地址(127.0.0.1)、IPv6地址(::1)或Unix套接字本地连接。(没密码+保护模式启动=本地访问)
  3. 默认是开启的。(如果你要从外部访问它,甚至没有认证(不设置密码,不绑定可访问ip)的去访问, 那就弄成 no 自己负责!)

2. 相关指令之 bind 指令

bind 127.0.0.1 -::1
这个指明,只能在本地(运行的节点)访问redis
如果改为其他的,比如 bind * -::* 或者 bind *0.0.0.0 这都全网可访问了~~~

如果bind是外部可访问的设置,那么保护模式管个球用?!

3. 相关指令之 requirepass 指令

requirepass 123456
这个指明,访问redis时,比如用 redis-cli 访问, 要加个 -a 123456 来认证一下。

如果 requirepass 设置了密码访问,那么保护模式也不起作用了,它会认为你有密码保护了!

4. 保护模式是否奏效的条件

4.1 保护模式起作用

protected-mode yes #打开保护模式
# bind 127.0.0.1 -::1 
# requirepass password //不设置密码 

上面是起作用的:
bind 127.0.0.1 -::1 #说明是只能本地访问
# bind 127.0.0.1 -::1 #用井号注释掉,相当于全网可访问;但是保护模式开启,可以保证本地访问。
requirepass password //设置密码password, 可以直接通过 -a password访问
# requirepass password //用井号注释掉,相当于无密码访问;但是保护模式开启,可以保证本地访问。

4.2 保护模式不起作用

    1. 不起作用1

      protected-mode yes #打开保护模式
      bind * -::* # 全网可访问(或者设置了别的ip)
      # requirepass password #密码访问
    1. 不起作用2

      protected-mode yes #打开保护模式
      #bind * -::* # 全网可访问
      requirepass password #密码访问
    1. 不起作用3

      protected-mode yes #打开保护模式
      bind * -::* # 全网可访问
      requirepass password #密码访问

5. 总结

1.如果 protected-mode yes+ 没有 bind x.x.x.x + 没有 requirepass xxxx 设置密码,是起作用的,只能在运行的机器访问;

  1. 如果 protected-mode yes了+ (设置了 bind x.x.x.x 或者 设置了 requirepass xxxx密码):后面两者只要有一个开启了,就说明,你要靠你自己的bind或密码来访问了,它就不起作用了。

你可能感兴趣的:(redis)