在 Debian 10 上安装和保护 Redis 服务器
本教程适用于这些操作系统版本
- Debian 11(Bullseye)
- Debian 10(Buster)
在此页
- 要求
- 开始
- 安装Redis
- 将 Redis 配置为缓存
- 配置 Redis 身份验证
- 重命名特定命令
- 结论
Redis 也称为“远程词典服务器”,是一种开源内存数据库,可用作数据库、缓存和消息代理。 Redis 支持各种数据结构,例如字符串、哈希、列表、集合等等。 Redis 是用 C 编程语言编写的,适用于大多数 POSIX 系统,如 Linux、Free BSD 和 OS X。Redis 能够每秒运行数千条命令。 Redis 具有一组丰富的功能,包括复制、自动故障转移、Lua 脚本、LRU 键驱逐、事务等等。
在本教程中,我们将学习如何在 Debian 10 服务器上安装和保护 Redis。
要求
- 运行 Debian 10 的服务器。
- 已为您的服务器设置根密码。
入门
在开始之前,您需要使用最新版本更新您的系统。您可以通过运行以下命令来执行此操作:
apt-get update -y
apt-get upgrade -y
服务器更新后,重新启动服务器以应用更改。
安装 Redis
默认情况下,Redis 在 Debian 10 存储库中可用。您只需运行以下命令即可安装它:
apt-get install redis-server -y
安装 Redis 后,启动 Redis 服务并使用以下命令使其在系统重启后启动:
systemctl start redis-server
systemctl enable redis-server
您还可以使用以下命令验证 Redis 服务器的状态:
systemctl status redis-server
您应该得到以下输出:
? redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-09-06 05:57:45 EDT; 4s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 2284 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 2285 (redis-server)
Tasks: 4 (limit: 1138)
Memory: 6.8M
CGroup: /system.slice/redis-server.service
??2285 /usr/bin/redis-server 127.0.0.1:6379
Sep 06 05:57:45 debian systemd[1]: Starting Advanced key-value store...
Sep 06 05:57:45 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No such file or di
Sep 06 05:57:45 debian systemd[1]: Started Advanced key-value store.
默认情况下,Redis 监听本地主机的 6379 端口。您可以使用以下命令进行检查:
ps -ef | grep redis
您应该看到以下输出:
redis 2285 1 0 05:57 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 2294 706 0 05:59 pts/0 00:00:00 grep redis
接下来,使用以下命令测试 Redis 连接:
redis-cli
您应该看到以下输出:
127.0.0.1:6379>
现在,使用 ping 命令检查 Redis 连接:
127.0.0.1:6379> ping
如果一切正常,您应该会看到以下输出:
PONG
一旦你完成了。您可以继续下一步。
将 Redis 配置为缓存
您可以通过编辑 /etc/redis/redis.conf 文件将 Redis 配置为缓存:
nano /etc/redis/redis.conf
在文件末尾添加以下行:
maxmemory 64mb
maxmemory-policy allkeys-lru
当达到 64mb 的最大内存时。 Redis 将根据 LRU 算法删除任何键。完成后保存并关闭文件。然后,使用以下命令重新启动 Redis 服务:
systemctl restart redis-server
一旦你完成了。您可以继续下一步。
配置 Redis 身份验证
默认情况下,您可以在 Redis shell 中运行任何命令。因此,建议为客户端配置 Redis 身份验证,以在运行任何命令之前要求输入密码。您可以直接在 Rediss 配置文件中配置密码验证。为此,请使用您喜欢的编辑器打开文件 /etc/redis/redis.conf:
nano /etc/redis/redis.conf
在 SECURITY 部分下找到以下行:
# requirepass foobared
取消注释并将其替换为您想要的密码,如下所示:
requirepass AlsW34%#df
完成后保存并关闭文件。然后,重启 Redis 服务以应用配置更改:
systemctl restart redis-server
现在,使用以下命令访问 Redis shell:
redis-cli
现在,运行以下命令而不进行身份验证:
127.0.0.1:6379> INFO server
这将不起作用,因为您不进行身份验证。你应该得到以下错误:
NOAUTH Authentication required.
接下来,运行以下命令以使用 Redis 配置文件中指定的密码进行身份验证:
127.0.0.1:6379> AUTH AlsW34%#df
您应该得到以下输出:
OK
现在,再次运行之前的命令:
127.0.0.1:6379> INFO server
这将成功运行,您应该看到以下输出:
# Server
redis_version:5.0.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:afa0decbb6de285f
redis_mode:standalone
os:Linux 4.19.0-5-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:2308
run_id:2cf0470a9492deddf98bcc72fa9ec94e941edf6c
tcp_port:6379
uptime_in_seconds:50
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:7483371
executable:/usr/bin/redis-server
config_file:/etc/redis/redis.conf
一旦你完成了。您可以继续下一步。
重命名特定命令
出于安全原因,建议重命名某些被认为是危险的命令。
在这里我们将重命名 \config\ 命令。 config 命令用于检索 Redis 密码。让我们看一个例子:
首先,使用以下命令连接并验证 Redis shell:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
接下来,使用以下命令检索 Redis 密码:
127.0.0.1:6379> config get requirepass
您应该得到以下输出:
1) "requirepass"
2) "AlsW34%#df"
127.0.0.1:6379>
您可以通过编辑 /etc/redis/redis.conf 文件来重命名配置命令:
nano /etc/redis/redis.conf
找到以下行:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
取消注释并替换为您想要的字符串:
rename-command CONFIG H2sW_Config
保存并关闭文件。然后,使用以下命令重启 Redis 服务:
systemctl restart redis-server
接下来,使用以下命令连接并验证 Redis shell:
redis-cli
127.0.0.1:6379> AUTH AlsW34%#df
接下来,使用 config 命令检索 Redis 密码:
127.0.0.1:6379> config get requirepass
我们重命名了此命令,因此您应该会收到以下错误:
(error) ERR unknown command `config`, with args beginning with: `get`, `requirepass`,
现在,运行重命名的命令,如下所示:
127.0.0.1:6379> H2sW_Config get requirepass
您应该得到以下输出:
1) "requirepass"
2) "AlsW34%#df"
最后,使用以下命令退出 Redis shell:
127.0.0.1:6379> exit
结论
恭喜!您已经在 Debian 10 上成功安装并保护了 Redis 服务器。我希望您现在有足够的知识来使用密码身份验证来保护您的 Redis 服务器。如果您有任何疑问,请随时问我。