外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而,为了使使用 Redis 进行黑客攻击变得更简单,Redis 提供了一个命令行实用程序,可用于向 Redis 发送命令。该程序称为redis-cli。
为了检查 Redis 是否正常工作,要做的第一件事是使用 redis-cli发送PING命令:
$ redis-cli ping
PONG
默认情况下,Redis 绑定到所有接口并且根本没有身份验证。如果您在一个非常受控的环境中使用 Redis,与外部互联网隔离并且通常与攻击者隔离,那就没问题。然而,如果未强化的 Redis 暴露在互联网上,就会产生很大的安全问题。如果您不能 100% 确定您的环境得到正确保护,请检查以下步骤以使 Redis 更加安全,这些步骤按安全性增强的顺序列出。
- 确保 Redis 用于侦听连接的端口(默认为 6379,如果在集群模式下运行 Redis,则另外为 16379,对于 Sentinel,则为 26379)已受防火墙保护,以便无法从外部联系 Redis。
- 使用设置了指令的配置文件,bind以保证 Redis 仅侦听您正在使用的网络接口。例如,如果您仅从同一台计算机本地访问Redis,则仅使用环回接口 (127.0.0.1),等等。
- 使用该requirepass选项可以添加额外的安全层,以便客户端需要使用该AUTH命令进行身份验证。
- 如果您的环境需要加密,请使用spiped或其他 SSL 隧道软件对 Redis 服务器和 Redis 客户端之间的流量进行加密。
一般来说,Redis不会暴露给外部环境,但我们仍然需要保证一定的安全性。
前三点都是redis.conf的参数。
requirepass用来设置redis的验证密码 、bind一般会设置成允许其他机器访问或者仅允许部分机器访问、port 就按照业务需求来,单机就6379,集群就16379,sentine就用26379.
(Sentinel 是 Redis 的高可用性解决方案之一。它是一个监控和自动故障转移系统,为 Redis 提供了主从复制的故障检测和自动切换功能。Sentinel 被设计用于在 Redis 集群中监控主服务器的状态,并在主服务器发生故障时自动将从服务器切换为新的主服务器,从而实现高可用性。)
这里是bind参数的截图
我这是将 Redis 服务器绑定到所有可用的网络接口,无论是 IPv4 还是 IPv6。这是一个灵活的配置,使得 Redis 可以接受来自所有网络接口的连接。
现在我可以在本机连接linux机器(xx.xx.xx.33)上的redis了。
仅仅在命令行操作redis是不够的。我们需要在代码中使用它。根据使用的不同语言,JAVA、C、Go等,我们要选择对应语言的Redis包。
https://redis.io/resources/clients/#java
下图都是我需要的针对JAVA的Redis客户端。