redis学习-18- Redis连接命令和安全策略

文章介绍了Redis的连接命令,包括AUTH验证密码、ECHO、PING、QUIT和SELECT等,以及如何建立和验证连接。接着,文章讨论了Redis的安全策略,如设置密码以确保数据安全,通过CONFIG命令或修改配置文件来配置和验证密码。还提到了防止误操作的rename-command指令和端口安全,强调了绑定IP和设置密码访问的重要性。最后,提到了SSH代理作为增强网络传输安全的一种方法。
摘要由CSDN通过智能技术生成

14.Redis连接命令

  • Redis 连接命令是主要用于验证 Redis 服务器的连接状态,比如验证客户端与 Redis 服务器是否连接成功,以及检查服务器运行状态,以及是否断开当前连接等。

  • 只有当客户端与服务器正常连接后才能够实现彼此的交互、通信。Redis 通过“Redis序列化协议”(简称“RESP”),实现客户端与服务端之间的连接通信,该协议主要包括两个部分:网络模型和序列化协议。

    • 网络模型主要负责数据交互的组织方式;
    • 序列化协议则实现了数据的序列化;
  • 由此可知,客户端与服务端交互的数据是以序列后的协议数据进行传输的。一个简单的请求/响应示意图,如下所示:
    在这里插入图片描述

  • Redis连接命令:

命令说明
AUTH password验证密码是否正确
ECHO message打印字符串
PING查看服务是否运行正常
QUIT关闭当前连接
SELECT index切换到指定的数据库
15.1 建立连接
  • 确认 Redis 已经成功配置之后,开启一个客户端与服务器的连接,执行以下命令:
#若设置了密码需要带 -a选项输入密码,
[root@cucluczk ~]# redis-cli -a xxxxx
#否则登陆客户端后,执行命令时没权限
[root@cucluczk ~]# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
15.2 验证连接
#通过配置文件或者或者config命令配置客户端连接密码
127.0.0.1:6379> CONFIG SET requirepass xxxxx
OK
#验证给定的密码和配置文件密码是否一致
127.0.0.1:6379> auth xxxxxx
OK
#检测客户端与服务器是否连接正常
127.0.0.1:6379> ping
PONG
#打印字符串
127.0.0.1:6379> echo haha
"haha"
#切换到指定的数据库
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> 
#关闭当前连接
[root@cucluczk ~]# redis-cli -a xxxxxx
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
#exit同样是中断连接
127.0.0.1:6379>quit 				
[root@cucluczk ~]#
  • 通过AUTH命令验证密码,从而证明了客户端已经连接到了 Redis 服务,然后使用 PING 命令来检测服务器运行是否正常。

15.Redis安全策略

  • Redis 提供了诸多安全策略,比如为了保证数据安全,提供了设置密码的功能。Redis 密码设置主要有两种方式:一种是使用CONFIG命令来设置密码;另外一种则是手动修改 Redis 的配置文件。两种方式各有特点。
15.1 命令配置密码
  • 通过执行以下命令查看是否设置了密码验证:
[root@cucluczk ~]# redis-cli -a xxxx
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "xxxx"

在默认情况下 requirepass 参数值为空的,表示无需通过密码验证就可以连接到 Redis 服务。

  • 下面执行以下命令设置密码。如下所示:
127.0.0.1:6379> CONFIG SET requirepass xxxxx
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "xxxx"
  • 执行完上述操作后,客户端要连接到 Redis 服务就需要密码验证,如果不验证就无法操作 Redis 数据库。如下所示:
[root@cucluczk ~]# redis-cli
127.0.0.1:6379> config get requitepass
(error) NOAUTH Authentication required.

  • 使用AUTH命令验证密码:
#验证给定的密码和配置文件密码是否一致
127.0.0.1:6379> auth xxxxxx
OK
  • 通过命令行设置的密码并非永久有效,当重启服务后密码就会失效,所以一般不采用这种方式。手动配置密码才是永久有效的修改方式。
15.2 手动配置密码
  • 前面在安装Redis提到过,要在win平台 Redis 的安装目录中找到 redis.windows.conf 配置文件(linux平台在安装目录下查找redis.conf配置文件),然后打开该文件,并使用 Ctrl+F 搜索 requirepass 关键字,找到配置项并配置密码,如下所示:
# requirepass foobared
requirepass xxxx //配置自己的密码

统一密码管理,16个库都是一样密码,要么都OK要么一个也链接不上

  • 然后使用更改后的配置文件重启redis服务器,依次执行以下命令:
#win平台
#首先停止服务:
redis-server.exe --service-stop
#重启服务器
redis-server.exe --service-start
#重新登陆 -h ip -p 端口 -a 密码
redis-cli.exe -h 127.0.0.1 -p 6379 -a xxxx
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe
#命令执行成功
127.0.0.1:6379>config get requirepass
1) "requirepass"
2) "xxxx"

#linux平台
#关闭Redis服务端
#方式1:在redis客户端外关闭服务端
redis-cli shutdown
#方式2:在redis客户端内关闭服务端
shutdown

#启动redis,可以提前配置redis-server的环境变量,不用找redis-server命令目录即可执行
redis-server conf/redis.conf
#重新登陆
[root@VM-0-3-centos redis]# redis-cli -a xxxx
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
  • 手动配置无须验证密码,只需要重新启动 Redis 服务器。这种配置方式,密码永远有效。如果想取消密码设置,需要将配置文件更改回原来的状态,然后再次重启redis服务器,即可取消。
  • 除了需要为 Redis 配置密码外,我们在使用 Redis 时也需要注意一些常见的安全风险以及防范措施,从而避免数据泄露和丢失,以及人为操作失误等。
15.3 指令安全
  • Redis 有一些非常危险的命令,这些命令会对 Redis 的稳定以及数据安全造成非常严重的影响。比如 keys 指令会导致 Redis 卡顿,而 flushdb 和 flushall 会让 Redis 的所有数据全部清空。为避免这些操作失误带来的灾难性后果需要使用rename-command 指令。

  • Redis 在配置文件中提供了 rename-command 指令用于将某些危险的指令修改成特别的名称,用来避免人为误操作。比如在配置文件的 security 模块增加以下内容:

rename-command keys 123keys123
  • 若还想执行 keys 命令,那就需要在命令行输入123keys123。 当然也可以将指令 rename 成空字符串,这样就无法通过字符串来执行 keys 命令了。
rename-command flushall ""
15.4 端口安全
  • Redis 默认监听:6379,如果当前的服务器主机有外网地址,那么 Redis 的服务将会直接暴露在公网上,一般使用适当的探测工具就可以对 IP 地址进行端口扫描,威胁系统安全。
  • 如果 Redis 的服务地址一旦可以被外网直接访问,其内部数据就彻底丧失了安全性。可以通过 Redis 执行 Lua 脚本拿到服务器权限,然后清空 Redis 数据库。因此务必在 Redis 的配置文件中绑定要监听的 IP 地址,避免类似的情况发生。如下所示:
bind 193.168.1.1 #绑定外网ip地址
  • 还需要增加 Redis 的密码访问限制,客户端必须使用 auth 命令传入正确的密码才可以访问 Redis。
requirepass password
  • 即使地址暴露出去了,一般情况下也无法对 Redis 服务器进行任何指令操作。密码配置也会影响到主从复制。要求从机必须配置与主服务相同的密码才可以进行主从复制。
masterauth password
15.5 SSH代理
  • Redis 不支持 SSL 链接,这意味着客户端和服务器交互的数据不应该在公网上传输,否则会有被窃听的风险。如果必须要在公网上,可以考虑使用 SSL 代理。SSL 代理比较常见的有 ssh。Redis 官方也推荐了一种代理工具,也就是 spiped 其功能虽然单一,但使用起来比较简单,易于理解。还有如RedisDesktopManager工具。
下一篇:redis学习-19- Redis HyperLoglog基数统计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值