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;
}
}
1.1.1.1
IPからRedisへの着信接続を許可し、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
}
明示的に許可されない限り、すべてが削除されるため、これはファイアウォールを管理する最も安全な方法です。