web-dev-qa-db-ja.com

Linuxファイアウォールゾーンのロジックと優先度

Linuxのfirewalldゾーンの背後にあるロジックと、それらが評価される方法を理解しようとしています。

  1. 私の理解では、ゾーンは、許可/拒否ルールを適用できるインターフェイスとIP範囲のリストとして定義されます。これは正しいです?インターフェイスと追加のIP範囲を含むゾーンの場合。このゾーンで許可されているサービスは、トラフィックがその範囲内のIPから別のインターフェイスを介してマシンに到達する場合でも、IP範囲で許可されますか?

  2. ゾーンはどのような順序で評価されますか? 2つの(おそらく矛盾する)ゾーンが一致する着信トラフィックはどうなりますか?たとえば、特定のインターフェイスからマシンへのnfsを許可するゾーン「Z1」や、IPからのすべての着信トラフィックを拒否するゾーン「Z2」などです。 「Z1」で定義されたインターフェースを介して、「Z2」で定義されたIPからマシンに到達するNFSトラフィックはどうなりますか?

5
ko6
  1. ゾーンは、netfilterに基づく抽象化レイヤーにすぎません。 netfilterの言語では、パケットが何らかの「ゾーン」内にあるというfirewalldのエンドユーザーとしてのこの感覚を与えるチェーンのセットをルール化します。ゾーン実行の正確な動作はいつでも確認できます。

    iptables -L

  2. ファイアウォールで一致するパケットの順序は次のとおりです。

    • 直接ルール
    • ソースIPに基づくゾーンへのルーティング
    • インターフェイスパケットに基づくゾーンへのルーティングは、

これは基本的に、パケットの最終的な宛先が直接ルールによって決定されない場合、パケットがいくつかのゾーンに入ることを意味します。最初のfirewalldは、ソースIPに基づいてそれらをルーティングしようとしています。一致するものがない場合、firewalldはそれらが入ったインターフェースに基づいてそれらをルーティングしようとします。これも失敗した場合、それらはデフォルトゾーンに入ります。ソースIPで設定されたゾーンがさらにあり、これらのIP範囲がゾーンと重複している場合、ソースルールが最初に一致するかどうかが最初にチェックされるため、ソースルールが最初に追加されたゾーンが優先されます。

例:

インターフェイスを備えたシステムを作成しましょう。

  • iPアドレス192.168.0.1/24のeth0
  • iPアドレス192.168.100.1/24のeth1

ファイアウォール設定1:

firewall-cmd --zone=home --add-interface=eth0
firewall-cmd --zone=internal --add-source=192.168.0.0/16

アドレス192.168.0.2からeth0経由で送信されるパケットは、内部ゾーンにルーティングされます。

ファイアウォール設定2:

firewall-cmd --zone=internal --add-source=192.168.0.0/16
firewall-cmd --zone=home --add-source=192.168.0.2/32

192.168.0.2からのパケットは、再び内部ゾーンにルーティングされます。このように機能するのは、firewalldが関連するコマンドを実行するために、ルーティングゾーンのソースルールを1つずつ追加しているためです。

3