一、为什么需要配置远程连接?
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');
四、总结
远程连接可以给我们的开发带来相当多的便利,但是,如果不加以设置,会给数据的安全带来一定的威胁。因此,在开放远程连接的同时,也需要注意相应的安全措施,加强操作的安全性。