我正在配置 REDIS 服务器,并且希望仅允许来自一组特定 IP 地址的连接。
这是一个 Debian 10 服务器,推荐使用的框架是 nft,我过去没有使用过。
默认规则集是这样的:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
我需要在该文件中添加什么规则才能允许从 IP 到 Redis 的传入连接,1.1.1.1
并2.2.2.2
丢弃其他所有内容?
REDIS 正在使用端口6379
。
答案1
如果其他人偶然发现同样的问题,我的主要问题是我以错误的顺序使用规则。
我在接受规则之前添加了删除规则,这似乎是相反的。
这是删除除 2 之外的所有 IP 地址的示例规则:
ip saddr 1.1.1.1 tcp dport 6379 accept
ip saddr 2.2.2.2 tcp dport 6379 accept
tcp dport 6379 drop
完整的规则文件:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# allow connection to redis from
ip saddr 1.1.1.1 tcp dport 6379 accept
ip saddr 2.2.2.2 tcp dport 6379 accept
tcp dport 6379 drop
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
答案2
强烈推荐的一项是
chain input {
type filter hook input priority 0;
policy drop;
# required items below
}
请注意,除非明确允许,否则所有内容都会被丢弃,这是管理防火墙的最安全方法。