1. 概述
Redis是一个高性能的内存数据库,可以被应用程序用来存储和访问数据。默认情况下,Redis只允许本地访问,也就是只能通过本地IP或Unix Socket来访问。如果需要让Redis可以外部访问,则需要进行相关配置。
2. 修改Redis配置文件
修改Redis配置文件redis.conf,找到如下代码段。
bind 127.0.0.1
将其中的127.0.0.1改为0.0.0.0,即表示允许外部访问。最终的代码如下所示。
bind 0.0.0.0
注意:开放对外访问应该限制访问来源IP。如果不限制,将会被攻击,尤其是Redis未授权访问漏洞如此严重的现在,为了安全起见,最好限制访问来源。
3. 配置Redis密码
Redis默认情况下不需要密码即可访问。如果需要保护Redis数据的安全性,则需要设置密码。找到redis.conf文件中的如下配置段,并将注释去掉。
# Require clients to issue AUTH <PASSWORD> before processing any other
# commands. This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared
将最后一行的“requirepass foobared”中的“foobared”改为所需要的密码。设置完密码后需要重启Redis服务才能生效。
4. 配置防火墙(iptables)
对于开放给外网访问的服务器,最好开启防火墙,限制访问IP。下面是开启iptables限制所有访问Redis端口(默认为6379)的IP段的操作步骤:
4.1 安装iptables
使用以下命令安装iptables。
sudo apt-get install iptables
4.2 创建规则
使用以下命令创建规则,限制IP为192.168.0.1-192.168.0.255的主机可以访问Redis。
sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 6379 -j DROP
4.3 保存规则
使用以下命令保存规则。
sudo iptables-save | sudo tee /etc/iptables.rules
4.4 自启动
使用以下命令将iptables规则加入自启动。
sudo vi /etc/network/if-pre-up.d/iptables
输入以下内容:
#!/bin/sh
iptables-restore < /etc/iptables.rules
保存并退出。接着使用以下命令增加执行权限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
5. 总结
设置Redis可以被外部访问,需要修改Redis配置文件、设置密码以及配置防火墙。其中,设置密码和配置防火墙是为了保证Redis数据的安全性。修改配置文件后即可通过外部IP地址访问Redis,但为了提高Redis的安全性,最好限制访问来源。