您的位置:

Redis配置远程连接详解

一、为什么需要配置远程连接?

Redis是一个内存型的KV数据库,由于其出色的性能,被广泛应用在各种场景中。通常情况下,我们会将Redis部署到服务器中,而开发者直接在无需安装数据库的开发环境中操作Redis,就需要配置远程连接。

二、远程连接的安全性问题

远程连接会带来一定的安全性问题,因为它将服务暴露在公网上,一旦被攻击则会造成极大的损失。因此,在配置远程连接之前,应该加强相应的安全措施。在开放远程连接的同时,我们应该注意如下几点。

1. 防火墙

开启防火墙是必要的,这样才能限制可访问的IP地址和端口范围。当我们只允许指定的IP地址访问时,只有这些IP地址的请求才能够被服务器接收和处理,这样就能够防止一部分网络攻击。

# ubuntu下防火墙配置
$ sudo apt-get install ufw
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
$ sudo ufw allow from IP_ADDRESS to any port PORT_NUM
$ sudo ufw enable

2. 密码加密

Redis默认没有密码,如果不设置密码直接开启远程连接,则会给攻击带来极大的方便。因此,在Redis配置文件中应该设置密码,并且将密码加密存储到配置文件中,以防止密码被恶意获取。

# 在 Redis 配置文件中添加
requirepass YOUR_PASSWORD       # YOUR_PASSWORD 为你所设定的密码

# 使用以下命令让你的密码以密文的方式储存在redis配置文件中
$ echo "YOUR_PASSWORD" | sha256sum

3. 随机端口

随机端口是一种有效的防范手段,攻击者难以穷尽所有可能的端口。因此,在开启远程连接时,应该将Redis服务的端口设置为一个较大的数值,而不是默认的6379端口。

# 在 Redis 配置文件中添加, 并将 PORT_NUM 替换成你自己选定的端口号。
port PORT_NUM

三、配置远程连接的步骤

1. 修改Redis配置文件redis.conf

在配置文件redis.conf中,我们需要配置以下内容:

# 绑定地址,这里采用 0.0.0.0 表示哪个网卡都可以接收来自外网的请求。
bind 0.0.0.0

# 明确告知Redis设置密码
requirepass YOUR_PASSWORD

# 开启远程连接端口,可以选择非 6379 端口,这里选择 6380
port 6380

2. 重启Redis服务

修改完配置文件后,需要重启Redis服务,使得配置生效。Ubuntu下使用如下命令重启Redis。

$ sudo service redis-server restart

3. 测试连接

修改完配置文件并重启Redis服务后,我们需要测试连接是否成功。下面是一个PHP连接Redis的示例,其中127.0.0.1和6380分别替换成你的Redis服务器地址和端口号;redis_pass为你所设定的密码:

phpredis版本
extension=redis.so
$redis = new Redis();  
$redis->connect('127.0.0.1', 6380);
$redis->auth('redis_pass');
$redis->set('key', 'value');

四、总结

远程连接可以给我们的开发带来相当多的便利,但是,如果不加以设置,会给数据的安全带来一定的威胁。因此,在开放远程连接的同时,也需要注意相应的安全措施,加强操作的安全性。