Redis是一个流行的、开源的内存键值数据存储。它支持不同的数据结构,如Hash、Lists、Sets、Strings和更多。Redis被设计成只在可信的环境中运行,它可以被用作数据库、缓存和消息代理。Redis因其广泛的支持、高性能、高可用性和灵活性而广为人知。
你可以把Redis安装成独立的,用于小型部署。对于大型部署,他们提供额外的组件,如用于高可用性的Redis Sentinel和用于在多个Redis节点服务器上分割数据的Redis Cluster。
本教程将告诉你如何在AlmaLinux 9服务器上安装和配置Redis。此外,我们还将告诉你如何通过Redis ACL(访问控制列表)和Firewalld来保护Redis。
现在,让我们开始行动吧。
sudo dnf makecache
现在,运行下面的dnf命令来安装Redis。在提示时输入y,然后按ENTER键继续。
sudo dnf install redis
Redis安装完毕后,运行下面的systemctl命令,启动并启用Redis服务。
sudo systemctl start redis
sudo systemctl enable redis
最后,使用下面的命令验证Redis的服务状态。
sudo systemctl is-enabled redis
sudo systemctl status redis
下面的输出确认Redis正在运行并被启用,这意味着它将在系统启动时自动运行。
sudo firewall-cmd --new-zone=svcs --permanent
sudo firewall-cmd --zone=svcs --add-interface=enp0s8 --permanent
现在,运行以下命令,允许网络 "192.168.5.1/24 "访问 "svcs "区的端口。
sudo firewall-cmd --zone=svcs --add-source=192.168.5.1/24
之后,将Redis端口'6379/tcp'添加到'svcs'区域,然后将这些更改应用到firewalld中。
sudo firewall-cmd --zone=svcs --add-port=6379/tcp
sudo firewall-cmd --runtime-to-permanent
现在,使用下面的命令重新加载firewalld,以确保新的变化被应用到firewalld中。
sudo firewall-cmd --reload
最后,运行下面的命令,检查firewalld上的活动区域列表。你应该看到 "svcs "区是活动的。
sudo firewall-cmd --get-active-zones
现在你可以验证'svcs'区域中可用的规则列表。当成功时,你应该在 "端口 "部分看到Redis端口 "6379/tcp",在 "源 "中看到子网 "192.168.5.1/24"。
sudo firewall-cmd --list-all --zone=svcs
sudo nano /etc/redis/redis.conf
用服务器的内部IP地址改变'bind'参数的值。在这个例子中,Redis将在本地IP地址 "192.168.5.21 "上运行。
bind 192.168.5.21
现在,通过将参数的值改为'no'来禁用'protected-mode'。要允许从你的应用程序到Redis服务器的远程连接,你必须禁用 "protected-mode"。
protected-mode no
在AlmaLinux上,默认的服务管理器是 "systemd"。取消对'supervised'参数的注释,将默认值改为'systemd',以实现 Redis 与 systemd 的整合。
supervised systemd
最后,取消对'aclfile'参数的注释,通过文件启用Redis的ACL(访问控制列表)。自Redis v6以来,使用ACL是保护Redis安全的一种推荐方式,Redis支持不同的ACL使用方法,你可以通过Redis shell或定义的ACL文件创建ACL。这个例子将通过文件使用ACL。
aclfile /etc/redis/users.acl
启用ACL
完成后保存并关闭该文件。
现在,运行下面的命令来创建ACLs文件"/etc/redis/users.acl"。
touch /etc/redis/users.acl
之后,运行下面的命令,重启Redis服务,并应用你所做的改变。
sudo systemctl restart redis
这样一来,redis将以新的配置启动和运行。下一步你要做的是通过Redis CLI验证你的Redis配置。
使用下面的'redis-cli'命令连接到Redis服务器。在这个例子中,你将指定 Redis 服务器的 IP 地址。
redis-cli -h 192.168.5.21
登录后,运行以下命令以确保连接成功。当连接成功时,你应该期望看到输出 "test redis"。
PING "test redis"
接下来,运行以下查询,以获得当前Redis的配置。在这个例子中,你将检查'bind'、'supervised'和 protected-mode'的设置。
CONFIG GET bind
CONFIG GET supervised
CONFIG GET protected-mode
成功后,你应该得到与你之前的设置相匹配的配置。
最后,运行下面的ACL查询,得到Redis上可用的ACL列表。
ACL LIST
你应该期望看到这样的输出--默认的Redis安装带有ACL用户 "default",认证是 "nopass "或无密码登录,权限是 "+@all",它允许 "default "用户执行任何Redis查询。
在这一点上,你现在已经完成了Redis的基本配置。在下一步,你将深入到Redis ACL(访问控制列表)的配置,以确保Redis安装的安全性。
利用你配置的Redis服务器,你将通过外部ACL文件设置Redis的ACL。
首先,使用以下nano编辑器命令打开ACL文件"/etc/redis/users.acl"。
sudo nano /etc/redis/users.acl
插入以下配置,为Redis创建两个用户。
user alice on -DEBUG +@all ~* >AliceP4ssw0rd
user bob on +@all -@dangerous ~* >BobP4ssw0rd
保存文件,完成后退出编辑器。
通过这个配置,你将创建两个用户:
获取Redis上的全部命令类别列表。
现在,运行下面的systemctl命令,重启Redis服务并应用这些变化。
sudo systemctl restart redis
一旦Redis重启,使用下面的redis-cli命令连接到Redis服务器。
redis-cli -h 192.168.5.21
一旦登录,运行下面的ACL查询来检查Redis上的可用用户列表。
ACL LIST
在这一点上,你应该期望看到三个用户alice、Bob 和 default。
你也可以用下面的查询来验证Redis上的详细用户。
ACL GETUSER alice
ACL GETUSER bob
你应该看到,用户alice被允许在Redis上执行所有可用的命令,命令组为'+@all'。
至于用户bob,你可以看到允许的命令'+@all',但也禁用了命令组'dangerous'。
ACL SETUSER default OFF
然后,使用下面的命令再次检查Redis上的可用用户列表。
ACL LIST
你应该期待用户 "default "的状态为关闭或禁用,像这样:
按Ctrl+d退出Redis外壳。
之后,使用下面的命令再次登录到Redis。
redis-cli -h 192.168.5.21
然后,输入以下PING查询以验证当前的连接。
PING
在禁用 Redis "默认 "用户的情况下,你应该得到类似以下的错误 - 你必须是经过认证的用户才能运行查询。
AUTH alice AliceP4ssw0rd
现在运行下面的查询,以确保你通过用户alice认证到Redis。
PING
ACL WHOAMI
你应该期望看到消息PONG,并以用户alice的身份进行认证。
现在,运行下面的查询,确保用户alice可以执行所有可用的查询,包括相关的Redis管理。
CONFIG GET bind
CONFIG GET supervised
成功后,你应该得到一个关于参数bind和supervised的当前Redis配置的输出。
AUTH bob BobP4ssw0rd
认证后,运行下面的PING查询。如果成功,你应该得到消息PONG。
PING
接下来,在Redis ACL文件中,用户bob的命令类别为'-@dangerous',它可以阻止这个用户在Redis服务器上执行一些危险的命令,如FLUSHALL、CONFIG等。
如果你以用户bob的身份运行以下查询,你应该得到诸如'NOPERM'的输出,这意味着用户bob没有权限执行该命令。
FLUSHALL
CONFIG GET bind
SAVE
有了这个,你现在已经通过ACL文件成功地用ACL(访问控制列表)保护了Redis。
上一条: 挪威.no域名注册步骤
下一条: 注册俄罗斯域名.ru域名的步骤