新しいDebian 12(AWS EC2)にnftablesをインストールしました。ポート22/tcpを介してインスタンス(外部EC2 IP)に接続します。 EC2に言及した理由は、EC2が奇妙なトリックを実行する可能性があるためです。その後、nftableをインストールしました。
sudo apt install nftables
sudo systemctl enable nftables
sudo systemctl start nftables
現在の設定は空です。
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter;
}
chain forward {
type filter hook forward priority filter;
}
chain output {
type filter hook output priority filter;
}
}
私の問題は簡単です。パケットを許可するルールがない場合は、セッションがブロックされ、再開できる必要があることを読んで予想しました。これが真実ではないのはなぜですか、私のセッションを許可するのはなぜですか?
実際にストリームがブロックされたのは、明示的にストリームをブロックしたときにのみ可能であることがわかりました。
答え1
私のセッションはパッキングを許可するルールなしでブロックする必要があります。
デフォルトでは、ルールセットはすべてを許可します。
policy drop;
実際にすべての接続をブロックするには、各行の後に追加する必要がありますtype filter ...
。各ルールを1行に入力する場合、セミコロンはオプションです。
このような厳格なルールを持つことは本当に賢明ではありません。少なくともループバック接続を許可する必要があります。そうしないと、多くのプログラムが不明な方法で動作しません。
入力用、iif lo accept
出力用oif lo accept
。
そして、すべてのチェーンが接続を確立できるようにする必要があります。ct state established,related accept
- ルールはすべてのチェーンに対して同じです。
答え2
デフォルトではnftables
チェーンは作成されません。つまり、すべてのパケットが許可され、許可されます。
3つを作成しました。~によるとチェーンinput
forward
とoutput
これらのデフォルトポリシーを指定しないと、accept
チェーンが存在しないのと同じです。
デフォルトでは、すべてのパケットをブロックするには、次のようにデフォルトの作業ポリシーを設定する必要がありますdrop
。
# Sees incoming packets that are addressed to and have now been routed to the local system and processes running there
add chain filter input {
type filter hook input priority filter; policy drop;
}
# Sees packets that originated from processes in the local machine
add chain filter output {
type filter hook output priority filter; policy drop;
}
次に、特定のトラフィックを許可するためにこれらのチェーンにルールを明示的に追加します。
- チェーン作成の詳細については、次を参照してください。ここ。
- あなたは見つける必要があります
nftables
ウィキペディアファイアウォールの開発に最も便利です。